package com.ruoyi.order.controller;
|
|
import cn.hutool.core.collection.CollectionUtil;
|
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.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 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 GoodsShopClient goodsShopClient;
|
@Resource
|
private ShopClient shopClient;
|
@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("/getVerifiableShop")
|
@ApiOperation(value = "获取可核销门店列表", tags = {"购物车-小程序"})
|
public R<List<VerifiableShopVo>> getVerifiableShop(){
|
LoginUser loginUser = tokenService.getLoginUserApplet();
|
List<ShoppingCart> shoppingCarts = shoppingCartService.list(new LambdaQueryWrapper<ShoppingCart>()
|
.eq(ShoppingCart::getAppUserId, loginUser.getUserid()));
|
|
List<Integer> goodsIds = shoppingCarts.stream().map(ShoppingCart::getGoodsId).collect(Collectors.toList());
|
GetGoodsShopByGoodsIds goodsShopByGoodsIds = new GetGoodsShopByGoodsIds();
|
goodsShopByGoodsIds.setGoodsIds(goodsIds);
|
R<List<GoodsShop>> r = goodsShopClient.getGoodsShopByGoodsIds(goodsShopByGoodsIds);
|
List<GoodsShop> goodsShops = r.getData();
|
List<VerifiableShopVo> verifiableShopVoList = new ArrayList<>();
|
if (CollectionUtil.isNotEmpty(goodsShops)){
|
for (GoodsShop goodsShop : goodsShops) {
|
R<Shop> shopR = shopClient.getShopById(goodsShop.getShopId());
|
if (R.isSuccess(shopR)){
|
VerifiableShopVo verifiableShopVo = new VerifiableShopVo();
|
verifiableShopVo.setId(shopR.getData().getId());
|
verifiableShopVo.setName(shopR.getData().getName());
|
verifiableShopVoList.add(verifiableShopVo);
|
}
|
}
|
}
|
return R.ok(verifiableShopVoList);
|
}
|
|
|
@GetMapping("/getGoodsPrice")
|
public R<Price> getGoodsPrice(Long appUserId, Integer goodsId, Integer shopId){
|
AppUser appUser = appUserClient.getAppUserById(appUserId);
|
Price price = shoppingCartService.getPrice(appUser, goodsId, shopId);
|
return R.ok(price);
|
}
|
|
|
}
|