无关风月
2024-07-03 a8ab035ff7230b4cc4e218f531ac81c1e3f08398
ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/TGoodsController.java
@@ -81,20 +81,27 @@
        if (tokenService.getLoginUser1() == null) {
            return R.tokenError("登录失效");
        }
        List<String> type = goodQuery.getType();
        String keywords = goodQuery.getKeywords();
        // 初始化条件构造器
        QueryWrapper<TGoods> wrapper = new QueryWrapper<>();
        wrapper = keywords != null && "".equals(keywords.trim()) ? wrapper.like("name", keywords) : wrapper;
        wrapper = keywords != null && !"".equals(keywords.trim()) ? wrapper.like("name", keywords) : wrapper;
        // 类型匹配 todo
        if (goodQuery.getType() != null && goodQuery.getType().size() > 0) {
            StringBuilder temp = new StringBuilder("");
            for (String s : goodQuery.getType()) {
                wrapper.or().apply("FIND_IN_SET('" + s + "', typeIds)"); // 将每个类型 ID 应用于 FIND_IN_SET 函数
                temp.append(s);
                temp.append(",");
            }
            String string = temp.toString();
            String substring = string.substring(0, string.length() - 1);
            wrapper.eq("typeIds",substring);
        }
        wrapper.eq("isDelete", 0);
        // sort排序
        wrapper.orderByAsc("CASE WHEN sort IS NULL THEN 1 ELSE 0 END")
                .orderByAsc("sort")
                .orderByDesc("createTime");
        return R.ok(goodsService.page(new PageInfo<>(goodQuery.getPageNumber(), goodQuery.getPageSize()), wrapper));
    }
@@ -108,15 +115,22 @@
        // 初始化条件构造器
        QueryWrapper<TGoods> wrapper = new QueryWrapper<>();
        wrapper = keywords != null && !"".equals(keywords.trim()) ? wrapper.like("name", keywords) : wrapper;
        // 类型匹配 todo
        if (goodQuery.getType() != null && !goodQuery.getType().isEmpty()) {
            StringBuilder temp = new StringBuilder("");
            for (String s : goodQuery.getType()) {
                // 将每个类型 ID 应用于 FIND_IN_SET 函数
                wrapper.or().apply("FIND_IN_SET('" + s + "', typeIds)");
                temp.append(s);
                temp.append(",");
            }
            String string = temp.toString();
            String substring = string.substring(0, string.length() - 1);
            wrapper.eq("typeIds",substring);
        }
        wrapper.eq("isDelete", 0);
        // sort排序
        wrapper.orderByAsc("CASE WHEN sort IS NULL THEN 1 ELSE 0 END")
                .orderByAsc("sort")
                .orderByDesc("createTime");
        return R.ok(goodsService.page(new PageInfo<>(goodQuery.getPageNumber(), goodQuery.getPageSize()), wrapper));
    }
@@ -137,6 +151,15 @@
    @PostMapping("/deleteGoodsType/{id}")
    @ApiOperation(value = "删除", tags = {"后台-商品类型管理"})
    public R deleteGoodsType(@PathVariable("id") Integer id) {
        // 初始化条件构造器
        QueryWrapper<TGoods> wrapper = new QueryWrapper<>();
        // 类型匹配 todo
        wrapper.or().apply("FIND_IN_SET('" + id + "', typeIds)"); // 将每个类型 ID 应用于 FIND_IN_SET 函数
        wrapper.eq("isDelete", 0);
        List<TGoods> list = goodsService.list(wrapper);
        if (!list.isEmpty()) {
            return R.fail("当前商品分类被使用,无法删除!");
        }
        TGoodsType byId = goodsTypeService.getById(id);
        byId.setIsDelete(1);
        goodsTypeService.removeById(byId);
@@ -153,9 +176,27 @@
        wrapper.orderByDesc("id");
        List<TGoods> list = goodsService.list(wrapper);
        for (TGoods tGoods : list) {
            long goodsId = orderService.count(new QueryWrapper<TOrder>().eq("goodsId", tGoods.getId()));
            tGoods.setInventory(goodsId);
            Long temp = 0L;
            List<TOrder> list1 = orderService.list(new QueryWrapper<TOrder>().eq("goodsId", tGoods.getId()));
            for (TOrder tOrder : list1) {
                temp += tOrder.getCount();
            }
            tGoods.setInventory(temp);
            // 剩余兑换数量
            Integer residueNumber = null;
            if (null != tGoods.getTotal()) {
                // 计算剩余兑换数量
                List<TOrder> orderList = orderService.lambdaQuery().eq(TOrder::getGoodsId, tGoods)
                        .eq(TOrder::getDisabled, 0).list();
                Integer item = 0;
                for (TOrder order : orderList) {
                    item += order.getCount();
                }
                residueNumber = tGoods.getTotal() - item;
                tGoods.setSurplus(residueNumber);
            }
        }
        PageInfo<TGoods> res = new PageInfo<>(query.getPageNumber(), query.getPageSize());
        res.setRecords(list);
        return R.ok(res);
@@ -184,12 +225,22 @@
    @PostMapping("/updateGoods")
    @ApiOperation(value = "修改", tags = {"后台-商品管理"})
    public R updateGoods(@RequestBody TGoods dto) {
        if (dto.getTotal() != null) {
            dto.setSurplus(dto.getTotal());
        } else {
            dto.setSurplus(0);
        TGoods byId = goodsService.getById(dto.getId());
        if (!Objects.equals(byId.getTotal(), dto.getTotal())){
            // 如果修改了商品总数 那么需要再判断当前商品已被购买了多少
            List<TOrder> list = orderService.list(new QueryWrapper<TOrder>()
                    .eq("goodsId", dto.getId()));
            Integer temp = 0;
            for (TOrder tOrder : list) {
                temp += tOrder.getCount();
            }
            if (dto.getTotal()<temp){
                return R.fail("商品总数不能小于当前商品已兑换数量,"+"当前商品已兑换数量为:"+temp);
            }
        }
        goodsService.updateById(dto);
        goodsService.updateOne(dto);
        return R.ok("修改成功");
    }
@@ -218,6 +269,10 @@
    @GetMapping("/exchangeRecord")
    @ApiOperation(value = "学习端-兑换记录", tags = {"学习端-商城"})
    public R<List<ExchangeRecordVO>> exchangeRecord() {
        LoginUserParent loginUserStudy = tokenService.getLoginUserStudy();
        if (null == loginUserStudy) {
            return R.tokenError("登录失效!");
        }
        List<ExchangeRecordVO> exchangeRecord = orderService.exchangeRecord(tokenService.getLoginUserStudy().getUserid());
        for (ExchangeRecordVO record : exchangeRecord) {
            TGoods goods = goodsService.getById(record.getGoodsId());
@@ -722,6 +777,13 @@
                .eq(Recipient::getUserId, tokenService.getLoginUserStudy().getUserid())
                .eq(Recipient::getIsDefault, 1)
                .eq(Recipient::getDisabled, 0).one();
        if (null == recipient) {
            recipient = recipientService.lambdaQuery()
                    .eq(Recipient::getUserId, tokenService.getLoginUserStudy().getUserid())
                    .eq(Recipient::getDisabled, 0)
                    .orderByDesc(Recipient::getCreateTime)
                    .last("limit 1").one();
        }
        GoodDetailVO goodDetailVO = goodsService.redeemNow(goodId, recipient);
        LocalDateTime currentDateTime = LocalDateTime.now();
        // 格式化日期和时间信息
@@ -758,12 +820,11 @@
                .eq(Recipient::getIsDefault, 1).one();
        if (recipient == null) {
            // 随便取一条地址数据
            List<Recipient> list = recipientService.lambdaQuery()
            recipient = recipientService.lambdaQuery()
                    .eq(Recipient::getUserId, tokenService.getLoginUser1().getUserid())
                    .eq(Recipient::getIsDefault, 1).list();
            if (!list.isEmpty()) {
                recipient = list.get(0);
            }
                    .orderByDesc(Recipient::getCreateTime)
                    .eq(Recipient::getDisabled, 0).last("limit 1")
                    .one();
        }
        GoodDetailVO goodDetailVO = goodsService.redeemNow(goodId, recipient);
        LocalDateTime currentDateTime = LocalDateTime.now();
@@ -817,11 +878,14 @@
        TOrder byId = orderService.getById(id);
        TGoods byId2 = goodsService.getById(byId.getGoodsId());
        TOrderVO tGoodsVO = new TOrderVO();
        tGoodsVO.setName(byId2.getName());
        BeanUtils.copyProperties(byId, tGoodsVO);
        tGoodsVO.setName(byId2.getName());
        TUser byId1 = studyClient.getUserById(byId.getUserId()).getData();
        tGoodsVO.setUserName(byId1.getName());
        tGoodsVO.setPhone(byId1.getPhone());
        if (byId.getProvince() != null && byId.getCity() != null) {
            tGoodsVO.setConsigneeAddress(byId.getProvince() + byId.getCity() + tGoodsVO.getConsigneeAddress());
        }
        return R.ok(tGoodsVO);
    }
@@ -842,11 +906,14 @@
    @ApiOperation(value = "列表查询", tags = {"后台-订单管理"})
    @ApiOperationSupport(order = 13)
    public R<PageInfo<TOrderVO>> listAll1(@RequestBody OrderQuery query) throws ParseException {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        if (query.getEndTime() != null) {
            Date parse = format.parse(query.getStartTime());
            Date parse1 = format.parse(query.getEndTime());
            parse1.setHours(23);
            parse1.setMinutes(59);
            parse1.setSeconds(59);
            query.setStartTime1(parse);
            query.setEndTime1(parse1);
        }