From 08f1b1f1804a8bd833d42f257908d80e88387b55 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期五, 14 三月 2025 11:27:47 +0800
Subject: [PATCH] 3.5增加登录验证、修改密码、人员列表调整
---
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActWarehouseDonatesServiceImpl.java | 332 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 330 insertions(+), 2 deletions(-)
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActWarehouseDonatesServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActWarehouseDonatesServiceImpl.java
index 56ed2a4..297b301 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActWarehouseDonatesServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActWarehouseDonatesServiceImpl.java
@@ -1,13 +1,45 @@
package com.panzhihua.service_community.service.impl;
+import static java.util.Objects.isNull;
+import static java.util.Objects.nonNull;
+import static org.apache.commons.lang3.StringUtils.isBlank;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import javax.annotation.Resource;
+
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.panzhihua.common.exceptions.ServiceException;
+import com.panzhihua.common.model.dtos.community.warehouse.ComActWarehouseApplyDTO;
+import com.panzhihua.common.model.dtos.community.warehouse.ComActWarehouseDonatesDTO;
+import com.panzhihua.common.model.dtos.community.warehouse.ExportDonatesDTO;
+import com.panzhihua.common.model.dtos.community.warehouse.PageDonatesDTO;
import com.panzhihua.common.model.dtos.property.CommonPage;
import com.panzhihua.common.model.vos.R;
-import com.panzhihua.service_community.entity.ComActWarehouseDonates;
+import com.panzhihua.common.model.vos.community.warehouse.ComActWarehouseApplyVO;
+import com.panzhihua.common.model.vos.community.warehouse.ComActWarehouseDonatesVO;
+import com.panzhihua.common.model.vos.community.warehouse.ComActWarehouseOperationVO;
+import com.panzhihua.common.model.vos.community.warehouse.DonatesStatisticsVO;
+import com.panzhihua.common.model.vos.community.warehouse.WarehouseDonatesExcelVO;
+import com.panzhihua.service_community.dao.ComActWarehouseApplyDao;
import com.panzhihua.service_community.dao.ComActWarehouseDonatesDao;
+import com.panzhihua.service_community.dao.ComActWarehouseOperationDao;
+import com.panzhihua.service_community.entity.ComActWarehouseApply;
+import com.panzhihua.service_community.entity.ComActWarehouseDonates;
+import com.panzhihua.service_community.entity.ComActWarehouseOperation;
import com.panzhihua.service_community.service.ComActWarehouseDonatesService;
+
import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
/**
* 爱心义仓/物品捐赠表(ComActWarehouseDonates)表服务实现类
@@ -19,8 +51,304 @@
@Service
public class ComActWarehouseDonatesServiceImpl extends ServiceImpl<ComActWarehouseDonatesDao, ComActWarehouseDonates> implements ComActWarehouseDonatesService {
+ @Resource
+ private ComActWarehouseOperationDao comActWarehouseOperationDao;
+ @Resource
+ private ComActWarehouseApplyDao comActWarehouseApplyDao;
+
@Override
public R pageList(CommonPage commonPage) {
return null;
}
+
+ /**
+ * 后台导入捐赠物品
+ * @param list
+ * @return
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public R batchImportWarehouseDonates(List<WarehouseDonatesExcelVO> list) {
+ try {
+ if (!list.isEmpty()) {
+ List<ComActWarehouseDonates> donateList = list.stream().map(excelVO -> {
+ ComActWarehouseDonates donates = new ComActWarehouseDonates();
+ BeanUtils.copyProperties(excelVO, donates);
+ if (excelVO.getIsAnonymous().equals("是")) {
+ donates.setIsAnonymous(1);
+ } else {
+ donates.setIsAnonymous(2);
+ }
+ return donates;
+ }).collect(Collectors.toList());
+ this.baseMapper.batchInsertDonates(donateList);
+ List<ComActWarehouseOperation> operationList = new ArrayList<>();
+ Date nowDate = new Date();
+ donateList.forEach(donate -> {
+ Long donateId = donate.getId();
+ if (nonNull(donateId)) {
+ ComActWarehouseOperation comActWarehouseOperation = new ComActWarehouseOperation();
+ comActWarehouseOperation.setGoodsId(donateId);
+ comActWarehouseOperation.setUserId(donate.getSigningBy());
+ comActWarehouseOperation.setContent("工作人员完成了物品签收");
+ comActWarehouseOperation.setCreateTime(nowDate);
+ comActWarehouseOperation.setType(ComActWarehouseOperation.type.bxs);
+ operationList.add(comActWarehouseOperation);
+ }
+ });
+ if (!operationList.isEmpty()) {
+ comActWarehouseOperationDao.batchInsertOperation(operationList);
+ }
+ }
+ } catch (Exception e) {
+ log.error("导入捐赠物品失败【{}】", e.getMessage());
+ return R.fail("导入捐赠物品失败");
+ }
+ return R.ok();
+ }
+
+ /**
+ * 后台导出捐赠物品表格
+ * @param exportDonatesDTO
+ * @return
+ */
+ @Override
+ public R exportDonates(ExportDonatesDTO exportDonatesDTO) {
+ List<Long> needExportIds = exportDonatesDTO.getIds();
+ if (nonNull(needExportIds) && !needExportIds.isEmpty()) {
+ //根据id导出
+ return R.ok(this.baseMapper.exportDonatesByIds(needExportIds));
+ }
+ return R.ok(this.baseMapper.exportDonatesBySearch(exportDonatesDTO));
+ }
+
+ /**
+ * 分页查询捐赠物品
+ * @param pageDonatesDTO
+ * @return
+ */
+ @Override
+ public R pageDonates(PageDonatesDTO pageDonatesDTO) {
+ Page page = new Page<>();
+ page.setCurrent(pageDonatesDTO.getPageNum());
+ page.setSize(pageDonatesDTO.getPageSize());
+ IPage<ComActWarehouseDonatesVO> donatesVOIPage = this.baseMapper.pageDonates(page, pageDonatesDTO);
+ Integer isWhich = pageDonatesDTO.getIsWhich();
+ if (nonNull(isWhich) && isWhich.intValue() == 3) {
+ List<ComActWarehouseDonatesVO> records = donatesVOIPage.getRecords();
+ if (!records.isEmpty()) {
+ records.forEach(record -> {
+ String name = record.getName();
+ if (record.getIsAnonymous().equals(ComActWarehouseDonatesVO.isAnonymous.yes) || isBlank(name)) {
+ record.setName("匿名用户");
+ } else {
+ record.setName(name.substring(0, 1).concat(name.substring(1).replaceAll("\\S", "*")));
+ }
+ record.setPhone(null);
+ });
+ }
+ }
+ return R.ok(donatesVOIPage);
+ }
+
+ /**
+ * 新增物品捐赠
+ * @param comActWarehouseDonatesDTO
+ * @return
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public R addDonates(ComActWarehouseDonatesDTO comActWarehouseDonatesDTO) {
+ ComActWarehouseDonates comActWarehouseDonates = new ComActWarehouseDonates();
+ BeanUtils.copyProperties(comActWarehouseDonatesDTO, comActWarehouseDonates);
+ Date nowDate = new Date();
+ comActWarehouseDonates.setRegisterAt(nowDate);
+ comActWarehouseDonates.setSurplusQuantity(comActWarehouseDonatesDTO.getQuantity());
+ if (isNull(comActWarehouseDonatesDTO.getUserId())) {
+ //userId为空代表后台新增
+ comActWarehouseDonates.setSigningAt(nowDate);
+ comActWarehouseDonates.setStatus(2);
+ } else {
+ comActWarehouseDonates.setStatus(1);
+ }
+ int result = this.baseMapper.insert(comActWarehouseDonates);
+ if (result > 0) {
+ if (comActWarehouseDonates.getStatus().intValue() == 2) {
+ ComActWarehouseOperation comActWarehouseOperation = new ComActWarehouseOperation();
+ comActWarehouseOperation.setGoodsId(comActWarehouseDonates.getId());
+ comActWarehouseOperation.setUserId(comActWarehouseDonates.getSigningBy());
+ comActWarehouseOperation.setContent("工作人员完成了物品签收");
+ comActWarehouseOperation.setCreateTime(nowDate);
+ comActWarehouseOperation.setType(ComActWarehouseOperation.type.bxs);
+ comActWarehouseOperationDao.insert(comActWarehouseOperation);
+ }
+ return R.ok();
+ }
+ return R.fail("添加失败,请重试");
+ }
+
+ /**
+ * 查看物品捐赠详情
+ * @param donatesId
+ * @param isWhich
+ * @param userId
+ * @return
+ */
+ @Override
+ public R getDonates(Long donatesId, Integer isWhich, Long userId) {
+ ComActWarehouseDonatesVO comActWarehouseDonatesVO = this.baseMapper.selectDetailById(donatesId);
+ if (isNull(comActWarehouseDonatesVO)) {
+ return R.fail("捐赠物品记录不存在");
+ }
+ if (nonNull(isWhich) && isWhich.intValue() != 0) {
+ if (isWhich.intValue() == 3) {
+ String name = comActWarehouseDonatesVO.getName();
+ if (comActWarehouseDonatesVO.getIsAnonymous().equals(ComActWarehouseDonatesVO.isAnonymous.yes) || isBlank(name)) {
+ comActWarehouseDonatesVO.setName("匿名用户");
+ } else {
+ comActWarehouseDonatesVO.setName(name.substring(0, 1).concat(name.substring(1).replaceAll("\\S", "*")));
+ }
+ comActWarehouseDonatesVO.setPhone(null);
+ }
+ if (isWhich.intValue() == 1 && !userId.equals(comActWarehouseDonatesVO.getUserId())) {
+ return R.fail("无法获取他人捐赠记录");
+ }
+ List<ComActWarehouseOperationVO> operationList = comActWarehouseOperationDao.selectList(donatesId);
+ comActWarehouseDonatesVO.setOperationList(operationList);
+ }
+ return R.ok(comActWarehouseDonatesVO);
+ }
+
+ /**
+ * 捐赠物品后台签收
+ * @param comActWarehouseDonatesDTO
+ * @return
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public R signingDonates(ComActWarehouseDonatesDTO comActWarehouseDonatesDTO) {
+ ComActWarehouseDonates comActWarehouseDonates = this.baseMapper.selectById(comActWarehouseDonatesDTO.getId());
+ if (isNull(comActWarehouseDonates)) {
+ return R.fail("捐赠物品记录不存在");
+ }
+ if (comActWarehouseDonates.getStatus().intValue() != 1) {
+ return R.fail("捐赠物品已被签收或已被取消");
+ }
+ BeanUtils.copyProperties(comActWarehouseDonatesDTO, comActWarehouseDonates);
+ Date nowDate = new Date();
+ if (nonNull(comActWarehouseDonatesDTO.getQuantity())) {
+ comActWarehouseDonates.setSurplusQuantity(comActWarehouseDonatesDTO.getQuantity());
+ }
+ comActWarehouseDonates.setSigningAt(nowDate);
+ comActWarehouseDonates.setStatus(2);
+ int result = this.baseMapper.updateById(comActWarehouseDonates);
+ if (result > 0) {
+ ComActWarehouseOperation comActWarehouseOperation = new ComActWarehouseOperation();
+ comActWarehouseOperation.setGoodsId(comActWarehouseDonates.getId());
+ comActWarehouseOperation.setUserId(comActWarehouseDonates.getSigningBy());
+ comActWarehouseOperation.setContent("工作人员完成了物品签收");
+ comActWarehouseOperation.setCreateTime(nowDate);
+ comActWarehouseOperation.setType(ComActWarehouseOperation.type.bxs);
+ comActWarehouseOperationDao.insert(comActWarehouseOperation);
+ return R.ok();
+ }
+ return R.fail("签收失败");
+ }
+
+ /**
+ * 用户取消捐赠
+ * @param donatesId
+ * @param currentUser
+ * @return
+ */
+ @Override
+ public R cancelDonates(Long donatesId, Long currentUser) {
+ ComActWarehouseDonates comActWarehouseDonates = this.baseMapper.selectById(donatesId);
+ if (isNull(comActWarehouseDonates)) {
+ return R.fail("没有你的捐赠记录");
+ }
+ if (!currentUser.equals(comActWarehouseDonates.getUserId())) {
+ return R.fail("不能取消他人的捐赠记录");
+ }
+ if (comActWarehouseDonates.getStatus().equals(ComActWarehouseDonates.status.yqx)) {
+ return R.ok();
+ }
+ comActWarehouseDonates.setStatus(ComActWarehouseDonates.status.yqx);
+ int result = this.baseMapper.updateById(comActWarehouseDonates);
+ if (result > 0) {
+ ComActWarehouseOperation comActWarehouseOperation = new ComActWarehouseOperation();
+ comActWarehouseOperation.setGoodsId(comActWarehouseDonates.getId());
+ comActWarehouseOperation.setUserId(currentUser);
+ comActWarehouseOperation.setContent("已取消捐赠");
+ comActWarehouseOperation.setCreateTime(new Date());
+ comActWarehouseOperation.setType(ComActWarehouseOperation.type.bxs);
+ comActWarehouseOperationDao.insert(comActWarehouseOperation);
+ }
+ return R.ok();
+ }
+
+ /**
+ * 捐赠物品统计查询
+ * @param communityId
+ * @return
+ */
+ @Override
+ public R getDonatesStatistics(Long communityId) {
+ Date nowDate = new Date();
+ SimpleDateFormat yearFormat = new SimpleDateFormat("yyyy");
+ SimpleDateFormat monthFormat = new SimpleDateFormat("yyyy-MM");
+ SimpleDateFormat dayFormat = new SimpleDateFormat("yyyy-MM-dd");
+ String currentYear = yearFormat.format(nowDate).concat("%");
+ String currentMonth = monthFormat.format(nowDate).concat("%");
+ String today = dayFormat.format(nowDate).concat("%");
+ DonatesStatisticsVO donatesStatisticsVO = this.baseMapper.selectDonatesStatistics(communityId, currentYear, currentMonth, today);
+ donatesStatisticsVO.setTotalDec(donatesStatisticsVO.getTotalInc().intValue() - donatesStatisticsVO.getSurplus().intValue());
+ return R.ok(donatesStatisticsVO);
+ }
+
+ /**
+ * 社区后台物品领用
+ * @param comActWarehouseApplyDTO
+ * @return
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public R applyDonates(ComActWarehouseApplyDTO comActWarehouseApplyDTO) {
+ List<ComActWarehouseApplyVO> applyItems = comActWarehouseApplyDTO.getApplyItems();
+ if (!applyItems.isEmpty()) {
+ Date nowDate = new Date();
+ applyItems.forEach(item -> {
+ Long goodsId = item.getGoodsId();
+ Integer goodsNum = item.getGoodsNum();
+ if (isNull(goodsId) || isNull(goodsNum)) {
+ throw new ServiceException("请求参数有误");
+ }
+ ComActWarehouseDonates warehouseDonates = this.baseMapper.selectById(goodsId);
+ if (nonNull(warehouseDonates) && warehouseDonates.getSurplusQuantity() - goodsNum >= 0) {
+ warehouseDonates.setSurplusQuantity(warehouseDonates.getSurplusQuantity() - goodsNum);
+ this.baseMapper.updateById(warehouseDonates);
+
+ ComActWarehouseApply apply = new ComActWarehouseApply();
+ BeanUtils.copyProperties(comActWarehouseApplyDTO, apply);
+ apply.setActualTime(nowDate);
+ apply.setCreateTime(nowDate);
+ apply.setGoodsId(goodsId);
+ apply.setGoodsNum(goodsNum);
+ apply.setReserveTime(nowDate);
+ apply.setStatus(ComActWarehouseApplyVO.status.ylq);
+ apply.setWriteOffUserId(comActWarehouseApplyDTO.getOperateUserId());
+ comActWarehouseApplyDao.insert(apply);
+
+ ComActWarehouseOperation comActWarehouseOperation=new ComActWarehouseOperation();
+ comActWarehouseOperation.setGoodsId(goodsId);
+ comActWarehouseOperation.setCreateTime(nowDate);
+ comActWarehouseOperation.setContent("爱心传递给了"+comActWarehouseApplyDTO.getApplyName().charAt(0)+"**,"+"减少了"+comActWarehouseApplyDTO.getReason()+"的困难,谢谢你的帮助");
+ comActWarehouseOperation.setType(ComActWarehouseOperation.type.xs);
+ comActWarehouseOperation.setApplyId(apply.getId());
+ comActWarehouseOperationDao.insert(comActWarehouseOperation);
+ }
+ });
+ }
+ return R.ok("领取成功,部分物品可能因剩余数量不足领取失败,请以实际领取记录为准");
+ }
}
--
Gitblit v1.7.1