Search in sources :

Example 1 with R

use of com.wayn.common.util.R in project waynboot-mall by wayn111.

the class UserController method getInfo.

@PreAuthorize("@ss.hasPermi('system:user:query')")
@ApiOperation(value = "获取用户详细信息", notes = "获取用户详细信息")
@GetMapping(value = { "/", "/{userId}" })
public R getInfo(@PathVariable(value = "userId", required = false) Long userId) {
    R success = R.success();
    success.add("roles", iRoleService.list());
    if (Objects.nonNull(userId)) {
        success.add("roleIds", iRoleService.selectRoleListByUserId(userId));
        success.add("user", iUserService.getById(userId));
    }
    return success;
}
Also used : R(com.wayn.common.util.R) ApiOperation(io.swagger.annotations.ApiOperation) PreAuthorize(org.springframework.security.access.prepost.PreAuthorize)

Example 2 with R

use of com.wayn.common.util.R in project waynboot-mall by wayn111.

the class ColumnController method list.

@GetMapping("/list")
public R list(Column column) {
    Page<Column> page = getPage();
    IPage<Column> columnIPage = iColumnService.listPage(page, column);
    List<ColumnVO> columnVOS = columnIPage.getRecords().stream().map(item -> {
        ColumnVO columnVO = new ColumnVO();
        try {
            BeanUtils.copyProperties(columnVO, item);
        } catch (IllegalAccessException | InvocationTargetException e) {
            log.error(e.getMessage(), e);
        }
        Integer count = iColumnGoodsRelationService.getGoodsNum(item.getId());
        columnVO.setGoodsNum(count);
        return columnVO;
    }).collect(Collectors.toList());
    return R.success().add("page", formatPage(columnIPage, columnVOS));
}
Also used : QueryWrapper(com.baomidou.mybatisplus.core.conditions.query.QueryWrapper) Validated(org.springframework.validation.annotation.Validated) BeanUtils(org.apache.commons.beanutils.BeanUtils) Date(java.util.Date) R(com.wayn.common.util.R) Autowired(org.springframework.beans.factory.annotation.Autowired) IColumnService(com.wayn.common.core.service.shop.IColumnService) Collectors(java.util.stream.Collectors) Column(com.wayn.common.core.domain.shop.Column) Goods(com.wayn.common.core.domain.shop.Goods) CollectionUtils(org.apache.commons.collections4.CollectionUtils) InvocationTargetException(java.lang.reflect.InvocationTargetException) BaseController(com.wayn.common.base.controller.BaseController) ColumnVO(com.wayn.common.core.domain.vo.ColumnVO) Page(com.baomidou.mybatisplus.extension.plugins.pagination.Page) Slf4j(lombok.extern.slf4j.Slf4j) List(java.util.List) ColumnGoodsRelation(com.wayn.common.core.domain.shop.ColumnGoodsRelation) IColumnGoodsRelationService(com.wayn.common.core.service.shop.IColumnGoodsRelationService) org.springframework.web.bind.annotation(org.springframework.web.bind.annotation) IGoodsService(com.wayn.common.core.service.shop.IGoodsService) IPage(com.baomidou.mybatisplus.core.metadata.IPage) Column(com.wayn.common.core.domain.shop.Column) ColumnVO(com.wayn.common.core.domain.vo.ColumnVO)

Example 3 with R

use of com.wayn.common.util.R in project waynboot-mall by wayn111.

the class GoodsDetailServiceImpl method getGoodsDetailData.

@Override
public R getGoodsDetailData(Long goodsId) {
    R success = R.success();
    Callable<Object> specificationCall = () -> iGoodsSpecificationService.getSpecificationVOList(goodsId);
    Callable<List<GoodsProduct>> productCall = () -> iGoodsProductService.list(new QueryWrapper<GoodsProduct>().eq("goods_id", goodsId));
    Callable<List<GoodsAttribute>> attrCall = () -> iGoodsAttributeService.list(new QueryWrapper<GoodsAttribute>().eq("goods_id", goodsId));
    FutureTask<Object> specificationTask = new FutureTask<>(specificationCall);
    FutureTask<List<GoodsProduct>> productTask = new FutureTask<>(productCall);
    FutureTask<List<GoodsAttribute>> attrTask = new FutureTask<>(attrCall);
    homeThreadPoolTaskExecutor.submit(specificationTask);
    homeThreadPoolTaskExecutor.submit(productTask);
    homeThreadPoolTaskExecutor.submit(attrTask);
    try {
        success.add("info", iGoodsService.getById(goodsId));
        success.add("specificationList", specificationTask.get());
        success.add("productList", productTask.get());
        success.add("attributes", attrTask.get());
    } catch (InterruptedException | ExecutionException e) {
        log.error(e.getMessage(), e);
    }
    return success;
}
Also used : QueryWrapper(com.baomidou.mybatisplus.core.conditions.query.QueryWrapper) R(com.wayn.common.util.R) FutureTask(java.util.concurrent.FutureTask) List(java.util.List) ExecutionException(java.util.concurrent.ExecutionException)

Example 4 with R

use of com.wayn.common.util.R in project waynboot-mall by wayn111.

the class OrderServiceImpl method asyncSubmit.

@Override
public R asyncSubmit(OrderVO orderVO) {
    OrderDTO orderDTO = new OrderDTO();
    MyBeanUtil.copyProperties(orderVO, orderDTO);
    Long userId = orderDTO.getUserId();
    // 获取用户订单商品,为空默认取购物车已选中商品
    List<Long> cartIdArr = orderDTO.getCartIdArr();
    List<Cart> checkedGoodsList;
    if (CollectionUtils.isEmpty(cartIdArr)) {
        checkedGoodsList = iCartService.list(new QueryWrapper<Cart>().eq("checked", true).eq("user_id", userId));
    } else {
        checkedGoodsList = iCartService.listByIds(cartIdArr);
    }
    List<Long> goodsIds = checkedGoodsList.stream().map(Cart::getGoodsId).collect(Collectors.toList());
    List<GoodsProduct> goodsProducts = iGoodsProductService.list(new QueryWrapper<GoodsProduct>().in("goods_id", goodsIds));
    Map<Long, GoodsProduct> goodsIdMap = goodsProducts.stream().collect(Collectors.toMap(GoodsProduct::getId, goodsProduct -> goodsProduct));
    // 商品货品数量减少
    for (Cart checkGoods : checkedGoodsList) {
        Long productId = checkGoods.getProductId();
        Long goodsId = checkGoods.getGoodsId();
        GoodsProduct product = goodsIdMap.get(productId);
        int remainNumber = product.getNumber() - checkGoods.getNumber();
        if (remainNumber < 0) {
            Goods goods = iGoodsService.getById(goodsId);
            String goodsName = goods.getName();
            String[] specifications = product.getSpecifications();
            throw new BusinessException(String.format("%s,%s 库存不足", goodsName, StringUtils.join(specifications, " ")));
        }
        if (!iGoodsProductService.reduceStock(productId, checkGoods.getNumber())) {
            throw new BusinessException("商品货品库存减少失败");
        }
    }
    // 商品费用
    BigDecimal checkedGoodsPrice = new BigDecimal("0.00");
    for (Cart checkGoods : checkedGoodsList) {
        checkedGoodsPrice = checkedGoodsPrice.add(checkGoods.getPrice().multiply(new BigDecimal(checkGoods.getNumber())));
    }
    // 根据订单商品总价计算运费,满足条件(例如88元)则免运费,否则需要支付运费(例如8元);
    BigDecimal freightPrice = new BigDecimal("0.00");
    /*if (checkedGoodsPrice.compareTo(SystemConfig.getFreightLimit()) < 0) {
            freightPrice = SystemConfig.getFreight();
        }*/
    // 可以使用的其他钱,例如用户积分
    BigDecimal integralPrice = new BigDecimal("0.00");
    // 优惠卷抵扣费用
    BigDecimal couponPrice = new BigDecimal("0.00");
    // 团购抵扣费用
    BigDecimal grouponPrice = new BigDecimal("0.00");
    // 订单费用
    BigDecimal orderTotalPrice = checkedGoodsPrice.add(freightPrice).subtract(couponPrice).max(new BigDecimal("0.00"));
    // 最终支付费用
    BigDecimal actualPrice = orderTotalPrice.subtract(integralPrice);
    String orderSn = OrderSnGenUtil.generateOrderSn(userId);
    orderDTO.setOrderSn(orderSn);
    // 异步下单
    String uid = IdUtil.getUid();
    System.out.println(uid);
    CorrelationData correlationData = new CorrelationData(uid);
    Map<String, Object> map = new HashMap<>();
    map.put("order", orderDTO);
    map.put("notifyUrl", WaynConfig.getMobileUrl() + "/message/order/submit");
    try {
        Message message = MessageBuilder.withBody(JSON.toJSONString(map).getBytes(Constants.UTF_ENCODING)).setContentType(MessageProperties.CONTENT_TYPE_TEXT_PLAIN).setDeliveryMode(MessageDeliveryMode.PERSISTENT).build();
        rabbitTemplate.convertAndSend(SysConstants.ORDER_DIRECT_EXCHANGE, SysConstants.ORDER_DIRECT_ROUTING, message, correlationData);
    } catch (UnsupportedEncodingException e) {
        log.error(e.getMessage(), e);
    }
    return R.success().add("actualPrice", actualPrice).add("orderSn", orderSn);
}
Also used : RedisCache(com.wayn.data.redis.manager.RedisCache) MessageBuilder(org.springframework.amqp.core.MessageBuilder) MessageDeliveryMode(org.springframework.amqp.core.MessageDeliveryMode) WxPayMpOrderResult(com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult) Cart(com.wayn.mobile.api.domain.Cart) OrderUtil(com.wayn.common.core.util.OrderUtil) LambdaQueryWrapper(com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper) BeanUtil(cn.hutool.core.bean.BeanUtil) StringUtils(org.apache.commons.lang3.StringUtils) OrderUnpaidTask(com.wayn.mobile.api.task.OrderUnpaidTask) BigDecimal(java.math.BigDecimal) WxPayUnifiedOrderRequest(com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest) AlipayConfig(com.wayn.common.config.AlipayConfig) ServiceImpl(com.baomidou.mybatisplus.extension.service.impl.ServiceImpl) QueryWrapper(com.baomidou.mybatisplus.core.conditions.query.QueryWrapper) Wrappers(com.baomidou.mybatisplus.core.toolkit.Wrappers) WxPayService(com.github.binarywang.wxpay.service.WxPayService) com.wayn.common.core.domain.shop(com.wayn.common.core.domain.shop) MobileSecurityUtils(com.wayn.mobile.framework.security.util.MobileSecurityUtils) SysConstants(com.wayn.message.core.constant.SysConstants) R(com.wayn.common.util.R) OrderSnGenUtil(com.wayn.mobile.api.util.OrderSnGenUtil) Collectors(java.util.stream.Collectors) ReturnCodeEnum(com.wayn.common.enums.ReturnCodeEnum) MyBeanUtil(com.wayn.common.util.bean.MyBeanUtil) IOUtils(org.apache.commons.io.IOUtils) OrderGoodsVO(com.wayn.common.core.domain.vo.order.OrderGoodsVO) Slf4j(lombok.extern.slf4j.Slf4j) PayTypeEnum(com.wayn.common.enums.PayTypeEnum) Constants(com.wayn.common.constant.Constants) BusinessException(com.wayn.common.exception.BusinessException) IPage(com.baomidou.mybatisplus.core.metadata.IPage) OrderVO(com.wayn.common.core.domain.vo.OrderVO) UnsupportedEncodingException(java.io.UnsupportedEncodingException) java.util(java.util) OrderDetailVO(com.wayn.common.core.domain.vo.order.OrderDetailVO) IdUtil(com.wayn.common.util.IdUtil) BaseWxPayResult(com.github.binarywang.wxpay.bean.result.BaseWxPayResult) CorrelationData(org.springframework.amqp.rabbit.connection.CorrelationData) LocalDateTime(java.time.LocalDateTime) IOrderService(com.wayn.mobile.api.service.IOrderService) MessageProperties(org.springframework.amqp.core.MessageProperties) CollectionUtils(org.apache.commons.collections4.CollectionUtils) WaynConfig(com.wayn.common.config.WaynConfig) HttpServletRequest(javax.servlet.http.HttpServletRequest) com.wayn.common.core.service.shop(com.wayn.common.core.service.shop) IpUtils(com.wayn.common.util.ip.IpUtils) Service(org.springframework.stereotype.Service) Message(org.springframework.amqp.core.Message) WxPayConstants(com.github.binarywang.wxpay.constant.WxPayConstants) WxPayOrderNotifyResult(com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult) DefaultAlipayClient(com.alipay.api.DefaultAlipayClient) OrderHandleOption(com.wayn.common.core.util.OrderHandleOption) RabbitTemplate(org.springframework.amqp.rabbit.core.RabbitTemplate) AlipayClient(com.alipay.api.AlipayClient) OrderMapper(com.wayn.mobile.api.mapper.OrderMapper) ICartService(com.wayn.mobile.api.service.ICartService) AlipaySignature(com.alipay.api.internal.util.AlipaySignature) HttpServletResponse(javax.servlet.http.HttpServletResponse) IOException(java.io.IOException) WxPayException(com.github.binarywang.wxpay.exception.WxPayException) TaskService(com.wayn.common.task.TaskService) OrderDTO(com.wayn.message.core.messsage.OrderDTO) AlipayTradeWapPayRequest(com.alipay.api.request.AlipayTradeWapPayRequest) WxPayNotifyResponse(com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse) JSON(com.alibaba.fastjson.JSON) AllArgsConstructor(lombok.AllArgsConstructor) AlipayApiException(com.alipay.api.AlipayApiException) Transactional(org.springframework.transaction.annotation.Transactional) Message(org.springframework.amqp.core.Message) LambdaQueryWrapper(com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper) QueryWrapper(com.baomidou.mybatisplus.core.conditions.query.QueryWrapper) UnsupportedEncodingException(java.io.UnsupportedEncodingException) BigDecimal(java.math.BigDecimal) BusinessException(com.wayn.common.exception.BusinessException) CorrelationData(org.springframework.amqp.rabbit.connection.CorrelationData) OrderDTO(com.wayn.message.core.messsage.OrderDTO) Cart(com.wayn.mobile.api.domain.Cart)

Example 5 with R

use of com.wayn.common.util.R in project waynboot-mall by wayn111.

the class OrderServiceImpl method statusCount.

@Override
public R statusCount() {
    R success = R.success();
    Long userId = MobileSecurityUtils.getUserId();
    List<Order> orderList = list(new QueryWrapper<Order>().select("order_status", "comments").eq("user_id", userId));
    int unpaid = 0;
    int unship = 0;
    int unrecv = 0;
    int uncomment = 0;
    for (Order order : orderList) {
        if (OrderUtil.isCreateStatus(order)) {
            unpaid++;
        } else if (OrderUtil.isPayStatus(order)) {
            unship++;
        } else if (OrderUtil.isShipStatus(order)) {
            unrecv++;
        } else if (OrderUtil.isConfirmStatus(order) || OrderUtil.isAutoConfirmStatus(order)) {
            uncomment += order.getComments();
        }
    // todo
    }
    success.add("unpaid", unpaid);
    success.add("unship", unship);
    success.add("unrecv", unrecv);
    success.add("uncomment", uncomment);
    return success;
}
Also used : R(com.wayn.common.util.R)

Aggregations

R (com.wayn.common.util.R)18 GetMapping (org.springframework.web.bind.annotation.GetMapping)6 QueryWrapper (com.baomidou.mybatisplus.core.conditions.query.QueryWrapper)5 Goods (com.wayn.common.core.domain.shop.Goods)5 List (java.util.List)5 IPage (com.baomidou.mybatisplus.core.metadata.IPage)4 LoginUserDetail (com.wayn.common.core.model.LoginUserDetail)4 Page (com.baomidou.mybatisplus.extension.plugins.pagination.Page)3 Category (com.wayn.common.core.domain.shop.Category)3 IGoodsService (com.wayn.common.core.service.shop.IGoodsService)3 MobileSecurityUtils (com.wayn.mobile.framework.security.util.MobileSecurityUtils)3 LocalDateTime (java.time.LocalDateTime)3 Collectors (java.util.stream.Collectors)3 CollectionUtils (org.apache.commons.collections4.CollectionUtils)3 JSONObject (com.alibaba.fastjson.JSONObject)2 Wrappers (com.baomidou.mybatisplus.core.toolkit.Wrappers)2 ServiceImpl (com.baomidou.mybatisplus.extension.service.impl.ServiceImpl)2 BaseController (com.wayn.common.base.controller.BaseController)2 User (com.wayn.common.core.domain.system.User)2 IOException (java.io.IOException)2