rk
63 分钟以前 609a1931953b2298016bd2b0d6b410666b5ad7b9
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
package com.doumee.api.web;
 
import com.doumee.core.annotation.LoginRequired;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.annotation.trace.Trace;
import com.doumee.core.constants.Constants;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.*;
import com.doumee.dao.business.web.request.GoodsorderBackDTO;
import com.doumee.dao.business.web.request.GoodsorderCanBanlanceDTO;
import com.doumee.dao.business.web.response.UserResponse;
import com.doumee.dao.system.dto.WebLoginDTO;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.jtt808.web.service.Jtt808Service;
import com.doumee.service.business.*;
import com.doumee.service.system.SystemLoginService;
import com.doumee.service.system.SystemUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
 
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
 
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2023/10/9 10:15
 */
 
@Api(tags = "4、运营中心接口")
@Trace(exclude = true)
@RestController
@RequestMapping("/web/manger")
@Slf4j
public class ManagerApi extends ApiController{
 
    @Autowired
    private Jtt808Service jtt808Service;
 
    @Autowired
    private BikesService bikesService;
    @Autowired
    private SystemLoginService systemLoginService;
    @Autowired
    private SystemUserService systemUserService;
    /** 订单退款/可退款信息查询(web 端 JWT 场景) */
    @Autowired
    private GoodsorderService goodsorderService;
    @LoginRequired
    @PreventRepeat(limit = 10, lockTime = 10000)
    @ApiOperation("登录管理员账号")
    @PostMapping("/login")
    public ApiResponse<UserResponse> login (@Validated @RequestBody WebLoginDTO dto, HttpServletRequest request) {
        dto.setMemberId(this.getMemberId());
        SystemUser sys =systemLoginService.loginByPasswordWx(dto, request);
        return ApiResponse.success(   memberService.getUserInfo(getMemberId()));
    }
    @LoginRequired
    @PreventRepeat(limit = 10, lockTime = 10000)
    @ApiOperation("退出管理员账号")
    @PostMapping("/logout")
    public ApiResponse<UserResponse> logout (HttpServletRequest request) {
        systemLoginService.logoutWx(this.getMemberId());
        return ApiResponse.success(memberService.getUserInfo(getMemberId()));
    }
 
    @PreventRepeat
    @LoginRequired
    @ApiOperation("电车批量上下架")
    @GetMapping("/updateBikeStatus/batch")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
            @ApiImplicitParam(paramType = "query", dataType = "String", name = "ids", value = "车辆编码集合,多个英文逗号隔开", required = true),
            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "bikeStatus", value = "状态", required = true)
    })
    public ApiResponse updateBikeStatus(@RequestParam String ids, @RequestParam Integer bikeStatus) {
        UserResponse user = this.getUserResponse();
        if(user.getSysuser() ==null){
            throw  new BusinessException(ResponseStatus.NOT_ALLOWED);
        }
        String [] idArray = ids.split(",");
        List<String> idList = new ArrayList<>();
        for (String id : idArray) {
            idList.add(id);
        }
        bikesService.updateBikeStatusBatchWx(user,idList,bikeStatus);
        return ApiResponse.success(null);
    }
    @PreventRepeat
    @LoginRequired
    @ApiOperation("电车批量开关锁")
    @GetMapping("/updateLockStatus/batch")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
            @ApiImplicitParam(paramType = "query", dataType = "String", name = "ids", value = "车辆编码集合,多个英文逗号隔开", required = true),
            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "lockStatus", value = "状态 0关锁 1开锁", required = true)
    })
    public ApiResponse<String> updateLockStatus(@RequestParam String ids, @RequestParam Integer lockStatus) {
        UserResponse user = this.getUserResponse();
        if(user.getSysuser() ==null){
            throw  new BusinessException(ResponseStatus.NOT_ALLOWED);
        }
        String [] idArray = ids.split(",");
        List<String> idList = new ArrayList<>();
        for (String id : idArray) {
            idList.add(id);
        }
       String msg = jtt808Service.updateLockStatusBatch(user,idList,lockStatus);
        return ApiResponse.success(msg);
    }
    @PreventRepeat
    @LoginRequired
    @ApiOperation("分页查询电车列表")
    @PostMapping("/pageBikes")
    public ApiResponse<PageData<Bikes>> pageBikes (@RequestBody PageWrap<Bikes> pageWrap) {
        UserResponse user = this.getUserResponse();
        if(user.getSysuser() ==null){
            throw  new BusinessException(ResponseStatus.NOT_ALLOWED);
        }
        pageWrap.getModel().setType(Constants.ONE);//查询电车列表
        PageData<Bikes> list = bikesService.findJoinPage(pageWrap);
        return ApiResponse.success(list);
    }
 
    @LoginRequired
    @ApiOperation("获取可退款信息")
    @GetMapping("/getGoodsorderCanBanlanceDTO")
    public ApiResponse<GoodsorderCanBanlanceDTO> getGoodsorderCanBanlanceDTO(@RequestParam String orderId) {
        // 仅查询,无登录人写入;校验管理员
        UserResponse user = this.getUserResponse();
        if (user.getSysuser() == null) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED);
        }
        return ApiResponse.success(goodsorderService.getGoodsorderCanBanlanceDTO(orderId));
    }
 
    @PreventRepeat
    @LoginRequired
    @ApiOperation("退款")
    @PostMapping("/backGoodsorder")
    public ApiResponse backGoodsorder(@RequestBody GoodsorderBackDTO goodsorderBackDTO) {
        // 退款为管理员操作:校验已绑定系统管理员,creator 取 sysuser.id(与 platform Shiro 口径一致)
        UserResponse user = this.getUserResponse();
        if (user.getSysuser() == null) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED);
        }
        if (Objects.nonNull(goodsorderBackDTO) && Objects.isNull(goodsorderBackDTO.getBackType())) {
            goodsorderBackDTO.setBackType(Constants.ONE);
        }
        goodsorderService.backGoodsorder(goodsorderBackDTO, user.getSysuser().getId());
        return ApiResponse.success(null);
    }
 
}