package com.panzhihua.applets.api; import static java.util.Objects.isNull; import static java.util.Objects.nonNull; import javax.annotation.Resource; import javax.validation.Valid; import javax.validation.constraints.NotNull; import org.hibernate.validator.constraints.Length; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.panzhihua.common.constants.HttpStatus; import com.panzhihua.common.controller.BaseController; import com.panzhihua.common.model.dtos.community.warehouse.ComActWarehouseDonatesDTO; import com.panzhihua.common.model.dtos.community.warehouse.PageDonatesDTO; import com.panzhihua.common.model.vos.LoginUserInfoVO; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.vos.community.warehouse.ComActWarehouseDonatesVO; import com.panzhihua.common.service.community.CommunityService; import com.panzhihua.common.validated.AddGroup; import com.panzhihua.common.validated.PutGroup; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; /** * @title: ComActWarehouseApi * @projectName: 成都呐喊信息技术有限公司-智慧社区项目 * @description: 爱心义仓捐赠小程序相关接口 * @author: hans * @date: 2021/10/11 15:45 */ @Slf4j @Api(tags = {"爱心义仓捐赠相关"}) @RestController @RequestMapping("/warehouse/donates") public class ComActWarehouseDonatesApi extends BaseController { @Resource private CommunityService communityService; @ApiOperation(value = "分页查询捐赠物品", response = ComActWarehouseDonatesVO.class) @PostMapping("/page") public R pageDonates(@RequestBody PageDonatesDTO pageDonatesDTO) { LoginUserInfoVO loginUserInfo = getLoginUserInfoSureNoLogin(); Integer isWhich = pageDonatesDTO.getIsWhich(); if (isNull(isWhich)) { return R.fail("缺少isWhich参数"); } if (isNull(pageDonatesDTO.getCommunityId())) { return R.fail("社区id不能为空"); } if (isNull(loginUserInfo) && isWhich.intValue() != 3) { return R.fail(HttpStatus.UNAUTHORIZED, "未登录"); } if (isWhich.intValue() == 2 && loginUserInfo.getIsCommunityWorker().intValue() != 1) { return R.fail("非社区工作人员"); } if (nonNull(loginUserInfo)) { pageDonatesDTO.setUserId(loginUserInfo.getUserId()); } return communityService.pageDonates(pageDonatesDTO); } @ApiOperation(value = "新增物品捐赠") @PostMapping("/add") public R addDonates(@RequestBody @Validated(AddGroup.class) ComActWarehouseDonatesDTO comActWarehouseDonatesDTO) { LoginUserInfoVO loginUserInfo = getLoginUserInfo(); Long userId = loginUserInfo.getUserId(); comActWarehouseDonatesDTO.setCommunityId(loginUserInfo.getCommunityId()); comActWarehouseDonatesDTO.setRegisterBy(userId); comActWarehouseDonatesDTO.setUserId(userId); comActWarehouseDonatesDTO.setName(loginUserInfo.getName()); comActWarehouseDonatesDTO.setPhone(loginUserInfo.getPhone()); return communityService.addDonates(comActWarehouseDonatesDTO); } @ApiOperation(value = "查看物品捐赠详情", response = ComActWarehouseDonatesVO.class) @ApiImplicitParam(name = "isWhich", value = "1.个人中心捐赠详情 2.捐赠物品管理详情 3.爱心义仓捐赠列表详情", required = true) @GetMapping("/get") public R getDonates(@RequestParam("donatesId") Long donatesId, @RequestParam("isWhich") Integer isWhich) { LoginUserInfoVO loginUserInfo = getLoginUserInfoSureNoLogin(); if (isNull(isWhich)) { return R.fail("缺少isWhich参数"); } if (isNull(loginUserInfo) && isWhich.intValue() != 3) { return R.fail(HttpStatus.UNAUTHORIZED, "未登录"); } if (isWhich.intValue() == 2 && loginUserInfo.getIsCommunityWorker().intValue() != 1) { return R.fail("非社区工作人员"); } Long userId = 0L; if (nonNull(loginUserInfo)) { userId = loginUserInfo.getUserId(); } return communityService.getDonates(donatesId, isWhich, userId); } @ApiOperation(value = "捐赠物品签收") @PostMapping("/signing") public R signingDonates(@RequestBody @Validated(PutGroup.class) ComActWarehouseDonatesDTO comActWarehouseDonatesDTO) { LoginUserInfoVO loginUserInfo = getLoginUserInfo(); Integer isCommunityWorker = loginUserInfo.getIsCommunityWorker(); if (isCommunityWorker.intValue() == 2) { return R.fail("非社区工作人员"); } comActWarehouseDonatesDTO.setSigningBy(loginUserInfo.getUserId()); return communityService.signingDonates(comActWarehouseDonatesDTO); } @ApiOperation(value = "用户取消捐赠") @GetMapping("/cancel") public R cancelDonates(@RequestParam("donatesId") Long donatesId) { return communityService.cancelDonates(donatesId, getUserId()); } }