Search in sources :

Example 41 with QueryWrapper

use of com.baomidou.mybatisplus.core.conditions.query.QueryWrapper in project waynboot-mall by wayn111.

the class DictServiceImpl method checkDictNameUnique.

@Override
public String checkDictNameUnique(Dict dict) {
    long dictId = Objects.isNull(dict.getDictId()) ? -1L : dict.getDictId();
    QueryWrapper<Dict> queryWrapper = new QueryWrapper<>();
    if (dict.getType() == 1) {
        queryWrapper.eq("name", dict.getName()).eq("type", 1);
    } else {
        queryWrapper.eq("name", dict.getName()).eq("type", 2).eq("parent_type", dict.getParentType());
    }
    Dict sysDict = getOne(queryWrapper);
    if (sysDict != null && sysDict.getDictId() != dictId) {
        return SysConstants.NOT_UNIQUE;
    }
    return SysConstants.UNIQUE;
}
Also used : QueryWrapper(com.baomidou.mybatisplus.core.conditions.query.QueryWrapper) Dict(com.wayn.common.core.domain.system.Dict)

Example 42 with QueryWrapper

use of com.baomidou.mybatisplus.core.conditions.query.QueryWrapper in project waynboot-mall by wayn111.

the class MenuServiceImpl method selectCheckedkeys.

@Override
public List<Long> selectCheckedkeys(Long roleId) {
    List<RoleMenu> roleMenus = iRoleMenuService.list(new QueryWrapper<RoleMenu>().eq("role_id", roleId));
    List<Long> menuIds = roleMenus.stream().map(RoleMenu::getMenuId).collect(Collectors.toList());
    if (!menuIds.isEmpty()) {
        // 去掉菜单中的父菜单
        List<Menu> menus = listByIds(menuIds);
        for (Menu menu : menus) {
            menuIds.remove(menu.getParentId());
        }
    }
    return menuIds;
}
Also used : QueryWrapper(com.baomidou.mybatisplus.core.conditions.query.QueryWrapper) RoleMenu(com.wayn.common.core.domain.system.RoleMenu) RoleMenu(com.wayn.common.core.domain.system.RoleMenu) Menu(com.wayn.common.core.domain.system.Menu)

Example 43 with QueryWrapper

use of com.baomidou.mybatisplus.core.conditions.query.QueryWrapper in project waynboot-mall by wayn111.

the class UserServiceImpl method checkEmailUnique.

@Override
public String checkEmailUnique(User user) {
    long userId = Objects.nonNull(user.getUserId()) ? user.getUserId() : 0;
    User info = getOne(new QueryWrapper<User>().eq("email", user.getEmail()));
    if (info != null && info.getUserId() != userId) {
        return SysConstants.NOT_UNIQUE;
    }
    return SysConstants.UNIQUE;
}
Also used : User(com.wayn.common.core.domain.system.User) QueryWrapper(com.baomidou.mybatisplus.core.conditions.query.QueryWrapper)

Example 44 with QueryWrapper

use of com.baomidou.mybatisplus.core.conditions.query.QueryWrapper 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 45 with QueryWrapper

use of com.baomidou.mybatisplus.core.conditions.query.QueryWrapper 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)

Aggregations

QueryWrapper (com.baomidou.mybatisplus.core.conditions.query.QueryWrapper)723 Transactional (org.springframework.transaction.annotation.Transactional)98 IPage (com.baomidou.mybatisplus.core.metadata.IPage)82 UserRolesVo (top.hcode.hoj.pojo.vo.UserRolesVo)74 LambdaQueryWrapper (com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper)72 Page (com.baomidou.mybatisplus.extension.plugins.pagination.Page)65 ArrayList (java.util.ArrayList)61 Session (org.apache.shiro.session.Session)61 StatusFailException (top.hcode.hoj.common.exception.StatusFailException)60 StatusForbiddenException (top.hcode.hoj.common.exception.StatusForbiddenException)55 Problem (top.hcode.hoj.pojo.entity.problem.Problem)50 UpdateWrapper (com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper)45 Date (java.util.Date)44 HttpServletRequest (javax.servlet.http.HttpServletRequest)35 HashMap (java.util.HashMap)34 RequiresAuthentication (org.apache.shiro.authz.annotation.RequiresAuthentication)34 SpringBootTest (org.springframework.boot.test.context.SpringBootTest)34 ApiOperation (io.swagger.annotations.ApiOperation)32 HttpSession (javax.servlet.http.HttpSession)31 Judge (top.hcode.hoj.pojo.entity.judge.Judge)30