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 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 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 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 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 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> pageBikes (@RequestBody PageWrap pageWrap) { UserResponse user = this.getUserResponse(); if(user.getSysuser() ==null){ throw new BusinessException(ResponseStatus.NOT_ALLOWED); } pageWrap.getModel().setType(Constants.ONE);//查询电车列表 PageData list = bikesService.findJoinPage(pageWrap); return ApiResponse.success(list); } @LoginRequired @ApiOperation("获取可退款信息") @GetMapping("/getGoodsorderCanBanlanceDTO") public ApiResponse 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); } }