kongdeqiang
2023-03-02 ee83188936c8ac306144f6c8cd119b6d7574dfc6
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
package com.boying.controller;
 
 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.boying.common.R;
import com.boying.entity.Park;
import com.boying.entity.User;
import com.boying.service.ParkService;
import com.boying.service.UserService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
 
@RestController
@RequestMapping("/park")
@RequiredArgsConstructor
public class ParkController {
 
    @Autowired
    private StringRedisTemplate redisTemplate;
    private final ParkService parkService;
    private final UserService userService;
 
    @PostMapping("/findPage")
    public Object findPage(Page page) {
        Page page1 = parkService.page(page, new QueryWrapper<Park>().lambda().orderByDesc(Park::getId));
        List<Park> records = page1.getRecords();
        for (Park record : records) {
            String num = redisTemplate.opsForValue().get("car_park_" +  record.getId());
            record.setCarNum(Integer.parseInt(num));
        }
        page1.setRecords(records);
        return R.ok(page1);
    }
 
    @PostMapping("/save")
    public Object save(Park park) {
        parkService.saveOrUpdate(park);
        String num = redisTemplate.opsForValue().get("car_park_" +  park.getId());
        if(StringUtils.isBlank(num)){
            redisTemplate.opsForValue().set("car_park_" + park.getId(),"0",30, TimeUnit.DAYS);
            redisTemplate.opsForValue().set("park_up_" + park.getId(),"true",30, TimeUnit.DAYS);
        }
        return R.ok("保存成功");
    }
 
    @PostMapping("/delete")
    public Object delete(Long id) {
        parkService.removeById(id);
        return R.ok("删除成功");
    }
 
    @PostMapping("findAll")
    public Object findAll() {
        List<Park> all = parkService.list();
        for (Park park : all) {
            String s = redisTemplate.opsForValue().get("car_park_" + park.getId());
            if(StringUtils.isBlank(s)){
                park.setCarNum(0);
            }else {
                park.setCarNum(Integer.parseInt(s));
            }
        }
        return R.ok(all);
    }
 
    @PostMapping("/getCarNum")
    public Object getCarNum(Long parkId) {
        Park byId = (Park) parkService.getById(parkId);
        String s = redisTemplate.opsForValue().get("car_park_" + parkId);
        if(StringUtils.isBlank(s)){
            byId.setCarNum(0);
        }else {
            byId.setCarNum(Integer.parseInt(s));
        }
        return R.ok(byId);
    }
 
    @PostMapping("/getByUserId")
    public Object getByUserId(Long userId) {
        User byId = userService.getById(userId);
        List<Park> list = new ArrayList<>();
        if(byId == null){
            return R.failed("未查询到用户");
        }else {
            String parkIds = byId.getParkIds();
            if(StringUtils.isBlank(parkIds)){
                return R.failed("该用户未管理停车场");
            }
            List<Long> ids= Arrays.stream(parkIds.split(",")).map(s->Long.parseLong(s.trim())).collect(Collectors.toList());
            for (Long id : ids) {
                Park byId1 = parkService.getById(id);
                String num = redisTemplate.opsForValue().get("car_park_" +  byId1.getId());
                byId1.setCarNum(Integer.parseInt(num));
                list.add(byId1);
            }
            return R.ok(list);
        }
    }
    @PostMapping("/getById")
    public Object getById(Long parkId) {
        Park byId = parkService.getById(parkId);
        if(byId == null){
            return R.failed("未查询到该停车场");
        }else {
            String s = redisTemplate.opsForValue().get("car_park_" + parkId);
            byId.setCarNum(Integer.parseInt(s));
            return R.ok(byId,"查询成功");
        }
    }
    @PostMapping("/editParkCarNum")
    public Object editParkCarNum(Park park) {
        Park byId = parkService.getById(park.getId());
        if(byId == null){
            return R.failed("未查询到该停车场");
        }else {
            byId.setNum(park.getNum());
            redisTemplate.opsForValue().set("car_park_" + byId.getId(),park.getCarNum()+"",30, TimeUnit.DAYS);
            redisTemplate.opsForValue().set("park_up_" + byId.getId(),"true",30, TimeUnit.DAYS);
            parkService.updateById(byId);
            return R.ok(null,"修改成功");
        }
    }
 
}