puhanshu
2021-10-13 55a8369f030a4645c762946b2b056c389fec5679
爱心义仓捐赠相关代码提交
12个文件已修改
11个文件已添加
1635 ■■■■■ 已修改文件
springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/ComActWarehouseDonatesApi.java 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/WarehouseDonatesExcelListen.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/warehouse/ComActWarehouseDonatesDTO.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/warehouse/ExportDonatesDTO.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/warehouse/PageDonatesDTO.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/LoginUserInfoVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/warehouse/ComActWarehouseDonatesVO.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/warehouse/ComActWarehouseOperationVO.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/warehouse/DonatesStatisticsVO.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/warehouse/ExportDonatesVO.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/warehouse/WarehouseDonatesExcelVO.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java 161 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/ComActWarehouseDonatesApi.java 185 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComActWarehouseDonatesApi.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActWarehouseDonatesDao.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActWarehouseOperationDao.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/entity/ComActWarehouseDonates.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActWarehouseDonatesService.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActWarehouseDonatesServiceImpl.java 273 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActWarehouseDonatesMapper.xml 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActWarehouseOperationMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/java/com/panzhihua/zuul/filters/JWTAuthenticationTokenFilter.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/ComActWarehouseDonatesApi.java
New file
@@ -0,0 +1,123 @@
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) {
        Long userId = getUserId();
        comActWarehouseDonatesDTO.setCommunityId(getCommunityId());
        comActWarehouseDonatesDTO.setRegisterBy(userId);
        comActWarehouseDonatesDTO.setUserId(userId);
        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 = null;
        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());
    }
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/WarehouseDonatesExcelListen.java
New file
@@ -0,0 +1,72 @@
package com.panzhihua.common.listen;
import static java.util.Objects.isNull;
import java.util.ArrayList;
import java.util.List;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.panzhihua.common.exceptions.ServiceException;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.warehouse.WarehouseDonatesExcelVO;
import com.panzhihua.common.service.community.CommunityService;
import com.panzhihua.common.utlis.StringUtils;
import lombok.extern.slf4j.Slf4j;
/**
 * @title: WarehouseDonatesExcelListen
 * @projectName: 成都呐喊信息技术有限公司-智慧社区项目
 * @description: 爱心义仓物品捐赠导入监听
 * @author: hans
 * @date: 2021/10/09 17:45
 */
@Slf4j
public class WarehouseDonatesExcelListen extends AnalysisEventListener<WarehouseDonatesExcelVO> {
    private static final int BATCH_COUNT = 3000;
    private CommunityService communityService;
    private Long communityId;
    private Long registerBy;
    private List<WarehouseDonatesExcelVO> list = new ArrayList<>();
    public WarehouseDonatesExcelListen(CommunityService communityService, Long communityId, Long registerBy) {
        this.communityService = communityService;
        this.communityId = communityId;
        this.registerBy = registerBy;
    }
    @Override
    public void invoke(WarehouseDonatesExcelVO warehouseDonatesExcelVO, AnalysisContext analysisContext) {
        if (StringUtils.isEmpty(warehouseDonatesExcelVO.getItem())) {
            throw new ServiceException("捐赠物品名称不可为空");
        }
        Integer quantity = warehouseDonatesExcelVO.getQuantity();
        if (isNull(quantity) || quantity <= 0) {
            throw new ServiceException("捐赠数量有误");
        }
        if (StringUtils.isEmpty(warehouseDonatesExcelVO.getName())) {
            warehouseDonatesExcelVO.setIsAnonymous("是");
        }
        warehouseDonatesExcelVO.setCommunityId(this.communityId);
        warehouseDonatesExcelVO.setStatus(2);
        warehouseDonatesExcelVO.setSurplusQuantity(quantity);
        warehouseDonatesExcelVO.setRegisterBy(this.registerBy);
        warehouseDonatesExcelVO.setSigningBy(this.registerBy);
        list.add(warehouseDonatesExcelVO);
        // 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM
        if (list.size() >= BATCH_COUNT) {
            doAfterAllAnalysed(analysisContext);
            list.clear();
        }
    }
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        R r = this.communityService.batchImportWarehouseDonates(list);
        if (!R.isOk(r)) {
            throw new ServiceException(r.getMsg());
        }
    }
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/warehouse/ComActWarehouseDonatesDTO.java
New file
@@ -0,0 +1,74 @@
package com.panzhihua.common.model.dtos.community.warehouse;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import org.hibernate.validator.constraints.Length;
import com.panzhihua.common.validated.AddGroup;
import com.panzhihua.common.validated.PutGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @title: ComActWarehouseDonatesDTO
 * @projectName: 成都呐喊信息技术有限公司-智慧社区项目
 * @description: 新增/编辑物品捐赠
 * @author: hans
 * @date: 2021/10/11 14:18
 */
@Data
@ApiModel("新增/编辑物品捐赠")
public class ComActWarehouseDonatesDTO {
    @ApiModelProperty("捐赠物品ID")
    @NotNull(groups = {PutGroup.class}, message = "捐赠物品ID不能为空")
    private Long id;
    @ApiModelProperty("捐赠用户")
    @Length(groups = {AddGroup.class}, max = 10, message = "捐赠用户最多支持10个字符")
    private String name;
    @ApiModelProperty("联系电话")
    @Pattern(groups = {AddGroup.class}, message = "联系电话格式错误", regexp = "^(13[0-9]|14[01456879]|15[0-3,5-9]|16[2567]|17[0-8]|18[0-9]|19[0-3,5-9])\\d{8}$")
    private String phone;
    @ApiModelProperty("捐赠物品")
    @NotBlank(groups = {AddGroup.class}, message = "捐赠物品不能为空")
    @Length(groups = {AddGroup.class}, max = 10, message = "捐赠物品名称最多支持10个字符")
    private String item;
    @ApiModelProperty("捐赠数量")
    @NotNull(groups = {AddGroup.class}, message = "捐赠数量不能为空")
    @Min(1)
    private Integer quantity;
    @ApiModelProperty("物品图片")
    @NotBlank(groups = {AddGroup.class}, message = "物品图片不能为空")
    private String image;
    @ApiModelProperty("匿名捐赠(1.是 2.否)")
    @NotNull(groups = {AddGroup.class}, message = "是否匿名捐赠不能为空")
    @Length(groups = {AddGroup.class}, min = 1, max = 2, message = "匿名捐赠值只能为1or2")
    private Integer isAnonymous;
    @ApiModelProperty("留言信息")
    @Length(groups = {AddGroup.class}, max = 100, message = "留言信息最多支持100个字符")
    private String message;
    @ApiModelProperty(value = "社区id", hidden = true)
    private Long communityId;
    @ApiModelProperty(value = "登记人", hidden = true)
    private Long registerBy;
    @ApiModelProperty(value = "捐赠人用户绑定id", hidden = true)
    private Long userId;
    @ApiModelProperty(value = "签收人", hidden = true)
    private Long signingBy;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/warehouse/ExportDonatesDTO.java
New file
@@ -0,0 +1,41 @@
package com.panzhihua.common.model.dtos.community.warehouse;
import java.util.Date;
import java.util.List;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @title: ExportDonatesDTO
 * @projectName: 成都呐喊信息技术有限公司-智慧社区项目
 * @description: 捐赠物品导出请求参数
 * @author: hans
 * @date: 2021/10/11 11:09
 */
@Data
@ApiModel("捐赠物品导出请求参数")
public class ExportDonatesDTO {
    @ApiModelProperty(value = "批量勾选时传参数组")
    private List<Long> ids;
    @ApiModelProperty("关键词")
    private String keyword;
    @ApiModelProperty("捐赠状态(1.待签收 2.已签收 3.已取消)")
    private Integer status;
    @ApiModelProperty("是否匿名捐赠(1.是 2.否)")
    private Integer isAnonymous;
    @ApiModelProperty("签收时间-起")
    private Date signingAtBegin;
    @ApiModelProperty("签收时间-止")
    private Date signingAtEnd;
    @ApiModelProperty(value = "社区id", hidden = true)
    private Long communityId;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/warehouse/PageDonatesDTO.java
New file
@@ -0,0 +1,57 @@
package com.panzhihua.common.model.dtos.community.warehouse;
import java.util.Date;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @title: PageDonatesDTO
 * @projectName: 成都呐喊信息技术有限公司-智慧社区项目
 * @description: 分页查询捐赠物品请求参数
 * @author: hans
 * @date: 2021/10/11 13:56
 */
@Data
@ApiModel("分页查询捐赠物品请求参数")
public class PageDonatesDTO {
    @ApiModelProperty("关键词")
    private String keyword;
    @ApiModelProperty("捐赠状态(1.待签收 2.已签收 3.已取消)")
    private Integer status;
    @ApiModelProperty("是否匿名捐赠(1.是 2.否)")
    private Integer isAnonymous;
    @ApiModelProperty("签收时间-起")
    private Date signingAtBegin;
    @ApiModelProperty("签收时间-止")
    private Date signingAtEnd;
    @ApiModelProperty("小程序使用,1.个人中心捐赠记录 2.捐赠物品管理 3.爱心义仓捐赠列表")
    private Integer isWhich;
    @ApiModelProperty(value = "社区id")
    private Long communityId;
    @ApiModelProperty(value = "分页-当前页数", example = "1")
    @NotNull(message = "分页参数不能为空")
    @Min(value = 1)
    private Long pageNum;
    @ApiModelProperty(value = "分页-每页记录数", example = "10")
    @NotNull(message = "分页参数不能为空")
    @Min(value = 1)
    private Long pageSize;
    @ApiModelProperty(value = "当前访问用户", hidden = true)
    private Long userId;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/LoginUserInfoVO.java
@@ -181,4 +181,7 @@
    @ApiModelProperty("是否四长四员 1.是 2.否")
    private Integer isFourMember;
    @ApiModelProperty("是否社区工作人员 1.是 2.否")
    private Integer isCommunityWorker;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/warehouse/ComActWarehouseDonatesVO.java
New file
@@ -0,0 +1,82 @@
package com.panzhihua.common.model.vos.community.warehouse;
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @title: ComActWarehouseDonatesVO
 * @projectName: 成都呐喊信息技术有限公司-智慧社区项目
 * @description: 爱心义仓/物品捐赠信息
 * @author: hans
 * @date: 2021/10/11 14:06
 */
@Data
@ApiModel("爱心义仓/物品捐赠信息")
public class ComActWarehouseDonatesVO {
    @ApiModelProperty("捐赠物品id")
    private Long id;
    @ApiModelProperty("捐赠人")
    private String name;
    @ApiModelProperty("联系电话")
    private String phone;
    @ApiModelProperty("捐赠物品")
    private String item;
    @ApiModelProperty("物品图片")
    private String image;
    @ApiModelProperty("捐赠数量")
    private Integer quantity;
    @ApiModelProperty("剩余数量")
    private Integer surplusQuantity;
    @ApiModelProperty("是否匿名(1.是 2.否)")
    private Integer isAnonymous;
    @ApiModelProperty("留言信息")
    private String message;
    @ApiModelProperty("物品登记时间/捐赠时间")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+8")
    private Date registerAt;
    @ApiModelProperty("物品签收时间")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+8")
    private Date signingAt;
    @ApiModelProperty("捐赠状态(1.待签收 2.已签收 3.已取消)")
    private Integer status;
    @ApiModelProperty("签收人")
    private String signingBy;
    @ApiModelProperty("物品捐赠操作记录")
    private List<ComActWarehouseOperationVO> operationList;
    @ApiModelProperty("捐赠用户")
    @JsonIgnore
    private Long userId;
    public interface isAnonymous {
        int yes =  1;
        int no = 2;
    }
    public interface status {
        int dqs = 1;
        int yqs = 2;
        int yqx = 3;
    }
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/warehouse/ComActWarehouseOperationVO.java
New file
@@ -0,0 +1,35 @@
package com.panzhihua.common.model.vos.community.warehouse;
import java.util.Date;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @title: ComActWarehouseOperationVO
 * @projectName: 成都呐喊信息技术有限公司-智慧社区项目
 * @description: 爱心义仓操作记录vo
 * @author: hans
 * @date: 2021/10/11 16:32
 */
@Data
@ApiModel("爱心义仓操作记录vo")
public class ComActWarehouseOperationVO {
    @ApiModelProperty(value = "操作记录id")
    private Integer id;
    @ApiModelProperty(value = "物品id")
    private Integer goodsId;
    @ApiModelProperty(value = "操作内容")
    private String content;
    @ApiModelProperty(value = "操作时间")
    private Date createTime;
    @ApiModelProperty(value = "操作人")
    private Integer userId;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/warehouse/DonatesStatisticsVO.java
New file
@@ -0,0 +1,44 @@
package com.panzhihua.common.model.vos.community.warehouse;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @title: DonatesStatisticsVO
 * @projectName: 成都呐喊信息技术有限公司-智慧社区项目
 * @description: 爱心义仓/物品捐赠统计信息
 * @author: hans
 * @date: 2021/10/12 15:56
 */
@Data
@ApiModel("爱心义仓/物品捐赠统计信息")
public class DonatesStatisticsVO {
    @ApiModelProperty("累计物品数量")
    private Integer totalInc;
    @ApiModelProperty("当前剩余物品")
    private Integer surplus;
    @ApiModelProperty("今日新增")
    private Integer dayInc;
    @ApiModelProperty("本月新增")
    private Integer mothInc;
    @ApiModelProperty("本年新增")
    private Integer yearInc;
    @ApiModelProperty("累计领用物品")
    private Integer totalDec;
    @ApiModelProperty("今日领用")
    private Integer dayDec;
    @ApiModelProperty("本月领用")
    private Integer mothDec;
    @ApiModelProperty("本年领用")
    private Integer yearDec;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/warehouse/ExportDonatesVO.java
New file
@@ -0,0 +1,72 @@
package com.panzhihua.common.model.vos.community.warehouse;
import static java.util.Objects.nonNull;
import java.util.Date;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
/**
 * @title: ExportDonatesVO
 * @projectName: 成都呐喊信息技术有限公司-智慧社区项目
 * @description: 爱心义仓捐赠物品导出VO
 * @author: hans
 * @date: 2021/10/11 11:20
 */
@Data
public class ExportDonatesVO {
    private Long id;
    @ExcelProperty("捐赠用户")
    private String name;
    @ExcelProperty("联系电话")
    private String phone;
    @ExcelProperty("捐赠物品")
    private String item;
    @ExcelProperty("捐赠数量")
    private Integer quantity;
    @ExcelProperty("剩余数量")
    private Integer surplusQuantity;
    @ExcelProperty("匿名捐赠")
    private String isAnonymous;
    @ExcelProperty("留言信息")
    private String message;
    @ExcelProperty("物品登记时间")
    private Date registerAt;
    @ExcelProperty("物品签收时间")
    private Date signingAt;
    @ExcelProperty("状态")
    private String status;
    public void setIsAnonymous(String isAnonymous) {
        this.isAnonymous = nonNull(isAnonymous) && isAnonymous.equals("1") ? "是" : "否";
    }
    public void setStatus(String status) {
        if (nonNull(status)) {
            switch (status) {
                case "1":
                    this.status = "待签收";
                    break;
                case "2":
                    this.status = "已签收";
                    break;
                default:
                    this.status = "已取消";
                    break;
            }
        }
    }
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/warehouse/WarehouseDonatesExcelVO.java
New file
@@ -0,0 +1,71 @@
package com.panzhihua.common.model.vos.community.warehouse;
import java.io.Serializable;
import java.util.Date;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @title: WarehouseDonatesExcelVO
 * @projectName: 成都呐喊信息技术有限公司-智慧社区项目
 * @description: 捐赠物品ExcelVO
 * @author: hans
 * @date: 2021/10/09 17:42
 */
@Data
public class WarehouseDonatesExcelVO implements Serializable {
    private static final long serialVersionUID = -7026869907781559301L;
    @ExcelProperty(value = "捐赠用户", index = 0)
    private String name;
    @ExcelProperty(value = "联系电话", index = 1)
    private String phone;
    @ExcelProperty(value = "捐赠物品", index = 2)
    private String item;
    @ExcelProperty(value = "捐赠数量", index = 3)
    private Integer quantity;
    @ExcelProperty(value = "匿名捐赠", index = 4)
    private String isAnonymous;
    @ExcelProperty(value = "留言信息", index = 5)
    private String message;
    @ExcelProperty(value = "物品签收时间", index = 6)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date signingAt;
    /**
     * 剩余数量
     */
    private Integer surplusQuantity;
    /**
     * 捐赠状态
     */
    private Integer status;
    /**
     * 社区id
     */
    private Long communityId;
    /**
     * 物品登记时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date registerAt;
    /**
     * 登记人
     */
    private Long registerBy;
    /**
     * 签收人
     */
    private Long signingBy;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java
@@ -2,25 +2,6 @@
import java.util.List;
import com.panzhihua.common.model.dtos.community.GetIdentityEidTokenDTO;
import com.panzhihua.common.model.dtos.community.*;
import com.panzhihua.common.model.dtos.community.cluster.PageClusterMemberDto;
import com.panzhihua.common.model.dtos.community.cluster.admin.*;
import com.panzhihua.common.model.dtos.property.CommonPage;
import com.panzhihua.common.model.dtos.community.discuss.ComActDiscussDetailDTO;
import com.panzhihua.common.model.dtos.community.discuss.ComActDiscussPublishResultDTO;
import com.panzhihua.common.model.dtos.community.elder.ElderAuthStatisticHeaderDTO;
import com.panzhihua.common.model.dtos.community.elder.PageElderAuthStatisticDTO;
import com.panzhihua.common.model.dtos.community.elder.PagePensionAuthStatisticDTO;
import com.panzhihua.common.model.dtos.community.elder.SignElderAuthStatisticDTO;
import com.panzhihua.common.model.dtos.neighbor.*;
import com.panzhihua.common.model.vos.community.*;
import com.panzhihua.common.model.vos.community.cluster.admin.ComClusterMemberExcelVO;
import com.panzhihua.common.model.vos.community.warehouse.ComActWarehouseApplyVO;
import com.panzhihua.common.model.vos.community.warehouse.ComActWarehouseBaseVO;
import com.panzhihua.common.model.vos.community.warehouse.QRCodeVO;
import io.swagger.annotations.ApiOperation;
import com.panzhihua.common.model.vos.community.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
@@ -55,6 +36,8 @@
import com.panzhihua.common.model.dtos.community.ComMngPopulationEditDTO;
import com.panzhihua.common.model.dtos.community.ComMngPopulationHouseAdminDTO;
import com.panzhihua.common.model.dtos.community.ComMngPopulationHouseEditAdminDTO;
import com.panzhihua.common.model.dtos.community.ComMngPopulationHouseInsertAdminDTO;
import com.panzhihua.common.model.dtos.community.ComMngPopulationHouseUserVO;
import com.panzhihua.common.model.dtos.community.ComMngPopulationTagDTO;
import com.panzhihua.common.model.dtos.community.ComMngRealCompanyBelongsDTO;
import com.panzhihua.common.model.dtos.community.ComOpsHouseDTO;
@@ -119,6 +102,13 @@
import com.panzhihua.common.model.dtos.community.bigscreen.work.ScreenActActivityPeopleListDTO;
import com.panzhihua.common.model.dtos.community.bigscreen.work.ScreenDiscussListDTO;
import com.panzhihua.common.model.dtos.community.bigscreen.work.ScreenMicroListDTO;
import com.panzhihua.common.model.dtos.community.cluster.PageClusterMemberDto;
import com.panzhihua.common.model.dtos.community.cluster.admin.AddClusterAdminDto;
import com.panzhihua.common.model.dtos.community.cluster.admin.AddClusterMemberAdminDto;
import com.panzhihua.common.model.dtos.community.cluster.admin.EditClusterAdminDto;
import com.panzhihua.common.model.dtos.community.cluster.admin.EditClusterMemberAdminDto;
import com.panzhihua.common.model.dtos.community.cluster.admin.PageClusterAdminDto;
import com.panzhihua.common.model.dtos.community.cluster.admin.PageClusterMemberAdminDto;
import com.panzhihua.common.model.dtos.community.convenient.ConvenientMerchantDTO;
import com.panzhihua.common.model.dtos.community.convenient.ConvenientProductCategoryDTO;
import com.panzhihua.common.model.dtos.community.convenient.ConvenientProductDTO;
@@ -171,6 +161,9 @@
import com.panzhihua.common.model.dtos.community.wallet.PageComActWalletAdminDTO;
import com.panzhihua.common.model.dtos.community.wallet.PageComActWalletTradeAdminDTO;
import com.panzhihua.common.model.dtos.community.wallet.PageComActWalletTradeDTO;
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.elders.ComEldersAuthGetResultDTO;
import com.panzhihua.common.model.dtos.elders.ComEldersAuthPageDTO;
import com.panzhihua.common.model.dtos.elders.ComEldersAuthUserAddAppDTO;
@@ -236,14 +229,77 @@
import com.panzhihua.common.model.vos.DictionaryVO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.SystemmanagementConfigVO;
import com.panzhihua.common.model.vos.community.ActivitySignVO;
import com.panzhihua.common.model.vos.community.BatchhouseVO;
import com.panzhihua.common.model.vos.community.ComActActEvaluateVO;
import com.panzhihua.common.model.vos.community.ComActActRegistVO;
import com.panzhihua.common.model.vos.community.ComActActivityVO;
import com.panzhihua.common.model.vos.community.ComActCommiteeVO;
import com.panzhihua.common.model.vos.community.ComActDynVO;
import com.panzhihua.common.model.vos.community.ComActEasyPhotoVO;
import com.panzhihua.common.model.vos.community.ComActFourMemberVO;
import com.panzhihua.common.model.vos.community.ComActMessageBackVO;
import com.panzhihua.common.model.vos.community.ComActMessageVO;
import com.panzhihua.common.model.vos.community.ComActMicroWishVO;
import com.panzhihua.common.model.vos.community.ComActReserveCommitVO;
import com.panzhihua.common.model.vos.community.ComActSocialOrgVO;
import com.panzhihua.common.model.vos.community.ComActVO;
import com.panzhihua.common.model.vos.community.ComActWorkGuideClassifyVO;
import com.panzhihua.common.model.vos.community.ComActWorkGuideVO;
import com.panzhihua.common.model.vos.community.ComCvtServeExcelVO;
import com.panzhihua.common.model.vos.community.ComElderAuthRecordImportExcelVO;
import com.panzhihua.common.model.vos.community.ComElderAuthRecordVO;
import com.panzhihua.common.model.vos.community.ComEldersAuthElderlyDetailsVO;
import com.panzhihua.common.model.vos.community.ComMngBuildingExcelVO;
import com.panzhihua.common.model.vos.community.ComMngCarExcelVO;
import com.panzhihua.common.model.vos.community.ComMngPopulationCorrectExcelVO;
import com.panzhihua.common.model.vos.community.ComMngPopulationCultExcelVO;
import com.panzhihua.common.model.vos.community.ComMngPopulationDisabilityExcelVO;
import com.panzhihua.common.model.vos.community.ComMngPopulationDrugExcelVO;
import com.panzhihua.common.model.vos.community.ComMngPopulationElderExcelVO;
import com.panzhihua.common.model.vos.community.ComMngPopulationKeyExcelVO;
import com.panzhihua.common.model.vos.community.ComMngPopulationLowSecurityExcelVO;
import com.panzhihua.common.model.vos.community.ComMngPopulationMajorExcelVO;
import com.panzhihua.common.model.vos.community.ComMngPopulationPensionExcelVO;
import com.panzhihua.common.model.vos.community.ComMngPopulationRehabilitationExcelVO;
import com.panzhihua.common.model.vos.community.ComMngPopulationSentenceExcelVO;
import com.panzhihua.common.model.vos.community.ComMngPopulationServeExcelVO;
import com.panzhihua.common.model.vos.community.ComMngPopulationVO;
import com.panzhihua.common.model.vos.community.ComMngPopulationVeteransExcelVO;
import com.panzhihua.common.model.vos.community.ComMngRealAssetsExcelVO;
import com.panzhihua.common.model.vos.community.ComMngRealAssetsVO;
import com.panzhihua.common.model.vos.community.ComMngRealCompanyExcelVO;
import com.panzhihua.common.model.vos.community.ComMngRealCompanyVO;
import com.panzhihua.common.model.vos.community.ComMngStructAreaVO;
import com.panzhihua.common.model.vos.community.ComMngStructHouseVO;
import com.panzhihua.common.model.vos.community.ComMngStructOtherBuildVO;
import com.panzhihua.common.model.vos.community.ComMngVillageServeExcelVO;
import com.panzhihua.common.model.vos.community.ComMngVillageVO;
import com.panzhihua.common.model.vos.community.ComMngVolunteerMngVO;
import com.panzhihua.common.model.vos.community.ComOpsHouseUndercarriageVO;
import com.panzhihua.common.model.vos.community.ComOpsHouseVO;
import com.panzhihua.common.model.vos.community.ComPensionAuthRecordImportExcelVO;
import com.panzhihua.common.model.vos.community.ComPensionAuthRecordVO;
import com.panzhihua.common.model.vos.community.ComPropertyVO;
import com.panzhihua.common.model.vos.community.ComStreetVO;
import com.panzhihua.common.model.vos.community.ComSwRotaExcelVO;
import com.panzhihua.common.model.vos.community.EldersAuthDetailsVO;
import com.panzhihua.common.model.vos.community.EldersAuthElderlyExcelVO;
import com.panzhihua.common.model.vos.community.ResetComActMessageVO;
import com.panzhihua.common.model.vos.community.SignactivityVO;
import com.panzhihua.common.model.vos.community.bigscreen.BigScreenStatisticAgeGender;
import com.panzhihua.common.model.vos.community.bigscreen.BigScreenStatisticPartyActivity;
import com.panzhihua.common.model.vos.community.bigscreen.BigScreenStatisticPartyBuild;
import com.panzhihua.common.model.vos.community.bigscreen.PartyBuildingMemberVO;
import com.panzhihua.common.model.vos.community.cluster.admin.ComClusterMemberExcelVO;
import com.panzhihua.common.model.vos.community.convenient.ConvenientMerchantVO;
import com.panzhihua.common.model.vos.community.questnaire.EditComActQuestnaireVo;
import com.panzhihua.common.model.vos.community.questnaire.QuestnaireVO;
import com.panzhihua.common.model.vos.community.questnaire.UsersAnswerQuestnaireVO;
import com.panzhihua.common.model.vos.community.warehouse.ComActWarehouseApplyVO;
import com.panzhihua.common.model.vos.community.warehouse.ComActWarehouseBaseVO;
import com.panzhihua.common.model.vos.community.warehouse.QRCodeVO;
import com.panzhihua.common.model.vos.community.warehouse.WarehouseDonatesExcelVO;
import com.panzhihua.common.model.vos.neighbor.AddNeighborCircleAdminVO;
import com.panzhihua.common.model.vos.neighbor.ChangeCommentReplyStatusByAdminVO;
import com.panzhihua.common.model.vos.neighbor.ChangeCommentStatusByAdminVO;
@@ -6723,4 +6779,71 @@
     */
    @PostMapping("/comActWarehouseApply/export")
    public R comActWarehouseApplyExport(@RequestBody CommonPage commonPage);
    /**
     * 后台导入捐赠物品
     * @param list
     * @return
     */
    @PostMapping("/comActWarehouseDonates/import")
    R batchImportWarehouseDonates(@RequestBody List<WarehouseDonatesExcelVO> list);
    /**
     * 后台导出捐赠物品表格
     * @param exportDonatesDTO
     * @return
     */
    @PostMapping("/comActWarehouseDonates/donates/export")
    R exportDonates(@RequestBody ExportDonatesDTO exportDonatesDTO);
    /**
     * 分页查询捐赠物品
     * @param pageDonatesDTO
     * @return
     */
    @PostMapping("/comActWarehouseDonates/donates/page")
    R pageDonates(@RequestBody PageDonatesDTO pageDonatesDTO);
    /**
     * 新增物品捐赠
     * @param comActWarehouseDonatesDTO
     * @return
     */
    @PostMapping("/comActWarehouseDonates/donates/add")
    R addDonates(@RequestBody ComActWarehouseDonatesDTO comActWarehouseDonatesDTO);
    /**
     * 查看物品捐赠详情
     * @param donatesId
     * @param isWhich
     * @param userId
     * @return
     */
    @GetMapping("/comActWarehouseDonates/donates/get")
    R getDonates(@RequestParam("donatesId") Long donatesId, @RequestParam("isWhich") Integer isWhich, @RequestParam("userId") Long userId);
    /**
     * 捐赠物品后台签收
     * @param comActWarehouseDonatesDTO
     * @return
     */
    @PostMapping("/comActWarehouseDonates/donates/signing")
    R signingDonates(@RequestBody ComActWarehouseDonatesDTO comActWarehouseDonatesDTO);
    /**
     * 用户取消捐赠
     * @param donatesId
     * @param currentUser
     * @return
     */
    @GetMapping("/comActWarehouseDonates/donates/cancel")
    R cancelDonates(@RequestParam("donatesId") Long donatesId, @RequestParam("currentUser") Long currentUser);
    /**
     * 捐赠物品统计查询
     * @param communityId
     * @return
     */
    @GetMapping("/comActWarehouseDonates/donates/statistics")
    R getDonatesStatistics(@RequestParam("communityId") Long communityId);
}
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/ComActWarehouseDonatesApi.java
New file
@@ -0,0 +1,185 @@
package com.panzhihua.community_backstage.api;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import javax.annotation.Resource;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.fastjson.JSONArray;
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.vos.community.warehouse.ComActWarehouseDonatesVO;
import com.panzhihua.common.model.vos.community.warehouse.DonatesStatisticsVO;
import com.panzhihua.common.model.vos.community.warehouse.ExportDonatesVO;
import com.panzhihua.common.utlis.SFTPUtil;
import com.panzhihua.common.validated.AddGroup;
import com.panzhihua.common.validated.PutGroup;
import org.springframework.beans.factory.annotation.Value;
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 org.springframework.web.multipart.MultipartFile;
import com.alibaba.excel.EasyExcel;
import com.panzhihua.common.controller.BaseController;
import com.panzhihua.common.listen.WarehouseDonatesExcelListen;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.warehouse.WarehouseDonatesExcelVO;
import com.panzhihua.common.service.community.CommunityService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
/**
 * @title: ComActWarehouseApi
 * @projectName: 成都呐喊信息技术有限公司-智慧社区项目
 * @description: 爱心义仓相关接口
 * @author: hans
 * @date: 2021/10/09 17:35
 */
@Slf4j
@Api(tags = {"爱心义仓捐赠相关"})
@RestController
@RequestMapping("/warehouse/donates")
public class ComActWarehouseDonatesApi extends BaseController {
    @Resource
    private CommunityService communityService;
    @Value("${excel.donatesimporturl}")
    private String donatesImportUrl;
    @Value("${excel.userurl}")
    private String excelUrl;
    @Value("${ftp.username}")
    private String userName;
    @Value("${ftp.password}")
    private String password;
    @Value("${ftp.host}")
    private String host;
    @Value("${ftp.port}")
    private int port;
    @Value("${ftp.url}")
    private String url;
    @PostMapping("/import")
    @ApiOperation(value = "捐赠物品导入", response = R.class)
    public R importDonates(@RequestParam MultipartFile file) {
        InputStream inputStream;
        try {
            inputStream = file.getInputStream();
            EasyExcel.read(inputStream, WarehouseDonatesExcelVO.class,
                            new WarehouseDonatesExcelListen(communityService, getCommunityId(), getUserId())).sheet().doRead();
        } catch (IOException e) {
            e.printStackTrace();
            log.error("导入捐赠物品失败【{}】", e.getMessage());
        }
        return R.ok();
    }
    @GetMapping("/import/templates")
    @ApiOperation(value = "获取物品捐赠导入模板", response = R.class)
    public R getDonatesImportTemplate() {
        return R.ok(donatesImportUrl);
    }
    @ApiOperation(value = "捐赠物品导出")
    @PostMapping("/export")
    public R exportDonates(@RequestBody ExportDonatesDTO exportDonatesDTO) {
        String communityName = getCommunityName();
        exportDonatesDTO.setCommunityId(getCommunityId());
        String url = excelUrl;
        String name = "爱心义仓" + communityName + "捐赠物品导出.xlsx";
        String ftpUrl = "/mnt/data/web/excel/";
        R r = communityService.exportDonates(exportDonatesDTO);
        if (R.isOk(r)) {
            List<ExportDonatesVO> exportDonatesVOList =
                    JSONArray.parseArray(JSONArray.toJSONString(r.getData()), ExportDonatesVO.class);
            try {
                SFTPUtil sftp = new SFTPUtil(userName, password, host, port);
                sftp.login();
                boolean existDir = sftp.isExistDir(ftpUrl + name);
                if (!existDir) {
                    String property = System.getProperty("user.dir");
                    String fileName = property + File.separator + name;
                    // 这里 需要指定写用哪个class去写
                    ExcelWriter excelWriter = null;
                    InputStream inputStream = null;
                    try {
                        excelWriter = EasyExcel.write(fileName, ExportDonatesVO.class).build();
                        WriteSheet writeSheet = EasyExcel.writerSheet("爱心义仓捐赠物品导出").build();
                        excelWriter.write(exportDonatesVOList, writeSheet);
                        excelWriter.finish();
                        File file = new File(fileName);
                        inputStream = new FileInputStream(file);
                        sftp.uploadMore(ftpUrl, name, inputStream);
                        sftp.logout();
                        inputStream.close();
                        String absolutePath = file.getAbsolutePath();
                        boolean delete = file.delete();
                        log.info("删除excel【{}】结果【{}】", absolutePath, delete);
                    } finally {
                        // 千万别忘记finish 会帮忙关闭流
                        if (inputStream != null) {
                            inputStream.close();
                        }
                        if (excelWriter != null) {
                            excelWriter.finish();
                        }
                    }
                }
                return R.ok(url + name);
            } catch (Exception e) {
                e.printStackTrace();
                log.error("文件传输失败【{}】", e.getMessage());
                return R.fail();
            }
        }
        return R.fail("未查询到数据");
    }
    @ApiOperation(value = "分页查询捐赠物品", response = ComActWarehouseDonatesVO.class)
    @PostMapping("/page")
    public R pageDonates(@RequestBody PageDonatesDTO pageDonatesDTO) {
        pageDonatesDTO.setCommunityId(getCommunityId());
        return communityService.pageDonates(pageDonatesDTO);
    }
    @ApiOperation(value = "新增物品捐赠")
    @PostMapping("/add")
    public R addDonates(@RequestBody @Validated(AddGroup.class) ComActWarehouseDonatesDTO comActWarehouseDonatesDTO) {
        comActWarehouseDonatesDTO.setCommunityId(getCommunityId());
        comActWarehouseDonatesDTO.setRegisterBy(getUserId());
        return communityService.addDonates(comActWarehouseDonatesDTO);
    }
    @ApiOperation(value = "查看物品捐赠详情", response = ComActWarehouseDonatesVO.class)
    @GetMapping("/get")
    public R getDonates(@RequestParam("donatesId") Long donatesId) {
        return communityService.getDonates(donatesId, null, null);
    }
    @ApiOperation(value = "捐赠物品签收")
    @PostMapping("/signing")
    public R signingDonates(@RequestBody @Validated(PutGroup.class) ComActWarehouseDonatesDTO comActWarehouseDonatesDTO) {
        comActWarehouseDonatesDTO.setSigningBy(getUserId());
        return communityService.signingDonates(comActWarehouseDonatesDTO);
    }
    @ApiOperation(value = "捐赠物品统计查询", response = DonatesStatisticsVO.class)
    @GetMapping("/statistics")
    public R getDonatesStatistics() {
        return communityService.getDonatesStatistics(getCommunityId());
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComActWarehouseDonatesApi.java
@@ -3,9 +3,13 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.api.ApiController;
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.vos.R;
import com.panzhihua.common.model.dtos.property.CommonPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.panzhihua.common.model.vos.community.warehouse.WarehouseDonatesExcelVO;
import com.panzhihua.service_community.entity.ComActWarehouseDonates;
import com.panzhihua.service_community.service.ComActWarehouseDonatesService;
import org.springframework.web.bind.annotation.*;
@@ -83,4 +87,85 @@
    public R delete(@RequestParam("id") Long id) {
        return R.ok(this.comActWarehouseDonatesService.removeById(id));
    }
    /**
     * 后台导入捐赠物品
     * @param list
     * @return
     */
    @PostMapping("/import")
    public R batchImportWarehouseDonates(@RequestBody List<WarehouseDonatesExcelVO> list) {
        return comActWarehouseDonatesService.batchImportWarehouseDonates(list);
    }
    /**
     * 后台导出捐赠物品表格
     * @param exportDonatesDTO
     * @return
     */
    @PostMapping("/donates/export")
    public R exportDonates(@RequestBody ExportDonatesDTO exportDonatesDTO) {
        return comActWarehouseDonatesService.exportDonates(exportDonatesDTO);
    }
    /**
     * 分页查询捐赠物品
     * @param pageDonatesDTO
     * @return
     */
    @PostMapping("/donates/page")
    public R pageDonates(@RequestBody PageDonatesDTO pageDonatesDTO) {
        return comActWarehouseDonatesService.pageDonates(pageDonatesDTO);
    }
    /**
     * 新增物品捐赠
     * @param comActWarehouseDonatesDTO
     * @return
     */
    @PostMapping("/donates/add")
    public R addDonates(@RequestBody ComActWarehouseDonatesDTO comActWarehouseDonatesDTO) {
        return comActWarehouseDonatesService.addDonates(comActWarehouseDonatesDTO);
    }
    /**
     * 查看物品捐赠详情
     * @param donatesId
     * @return
     */
    @GetMapping("/donates/get")
    public R getDonates(@RequestParam("donatesId") Long donatesId, @RequestParam("isWhich") Integer isWhich, @RequestParam("userId") Long userId) {
        return comActWarehouseDonatesService.getDonates(donatesId, isWhich, userId);
    }
    /**
     * 捐赠物品后台签收
     * @param comActWarehouseDonatesDTO
     * @return
     */
    @PostMapping("/donates/signing")
    public R signingDonates(@RequestBody ComActWarehouseDonatesDTO comActWarehouseDonatesDTO) {
        return comActWarehouseDonatesService.signingDonates(comActWarehouseDonatesDTO);
    }
    /**
     * 用户取消捐赠
     * @param donatesId
     * @param currentUser
     * @return
     */
    @GetMapping("/donates/cancel")
    public R cancelDonates(@RequestParam("donatesId") Long donatesId, @RequestParam("currentUser") Long currentUser) {
        return comActWarehouseDonatesService.cancelDonates(donatesId, currentUser);
    }
    /**
     * 捐赠物品统计查询
     * @param communityId
     * @return
     */
    @GetMapping("/donates/statistics")
    public R getDonatesStatistics(@RequestParam("communityId") Long communityId) {
        return comActWarehouseDonatesService.getDonatesStatistics(communityId);
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActWarehouseDonatesDao.java
@@ -1,7 +1,18 @@
package com.panzhihua.service_community.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.panzhihua.common.model.dtos.community.warehouse.PageDonatesDTO;
import com.panzhihua.common.model.vos.community.warehouse.ComActWarehouseDonatesVO;
import com.panzhihua.common.model.vos.community.warehouse.DonatesStatisticsVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.panzhihua.common.model.dtos.community.warehouse.ExportDonatesDTO;
import com.panzhihua.common.model.vos.community.warehouse.ExportDonatesVO;
import com.panzhihua.service_community.entity.ComActWarehouseDonates;
/**
@@ -13,4 +24,50 @@
@Mapper
public interface ComActWarehouseDonatesDao extends BaseMapper<ComActWarehouseDonates> {
    /**
     * 批量插入捐赠物品
     * @param donateList
     * @return
     */
    int batchInsertDonates(@Param("donateList") List<ComActWarehouseDonates> donateList);
    /**
     * 根据id查找导出数据
     * @param needExportIds
     * @return
     */
    List<ExportDonatesVO> exportDonatesByIds(@Param("needExportIds") List<Long> needExportIds);
    /**
     * 根据查询条件导出数据
     * @param exportDonatesDTO
     * @return
     */
    List<ExportDonatesVO> exportDonatesBySearch(@Param("exportDonatesDTO") ExportDonatesDTO exportDonatesDTO);
    /**
     * 社区后台分页查询捐赠物品
     * @param page
     * @param pageDonatesDTO
     * @return
     */
    IPage<ComActWarehouseDonatesVO> pageDonates(@Param("page") Page page, @Param("pageDonatesDTO") PageDonatesDTO pageDonatesDTO);
    /**
     * 查看捐赠详情
     * @param donatesId
     * @return
     */
    ComActWarehouseDonatesVO selectDetailById(@Param("donatesId") Long donatesId);
    /**
     * 捐赠物品统计查询
     * @param communityId
     * @param currentYear
     * @param currentMonth
     * @param today
     * @return
     */
    DonatesStatisticsVO selectDonatesStatistics(@Param("communityId") Long communityId, @Param("currentYear") String currentYear,
                                                @Param("currentMonth") String currentMonth, @Param("today") String today);
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActWarehouseOperationDao.java
@@ -3,6 +3,9 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import com.panzhihua.service_community.entity.ComActWarehouseOperation;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * 爱心义操作表(ComActWarehouseOperation)表数据库访问层
@@ -13,4 +16,10 @@
@Mapper
public interface ComActWarehouseOperationDao extends BaseMapper<ComActWarehouseOperation> {
    /**
     * 批量插入操作记录
     * @param operationList
     * @return
     */
    int batchInsertOperation(@Param("operationList") List<ComActWarehouseOperation> operationList);
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/entity/ComActWarehouseDonates.java
@@ -115,4 +115,21 @@
    @ApiModelProperty(value = "社区id")
    private Long communityId;
    /**
     * 登记人
     */
    @ApiModelProperty(value = "登记人")
    private Long registerBy;
    /**
     * 签收人
     */
    @ApiModelProperty(value = "签收人")
    private Long signingBy;
    public interface status {
        int dqs = 1;
        int yqs = 2;
        int yqx = 3;
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActWarehouseDonatesService.java
@@ -1,9 +1,15 @@
package com.panzhihua.service_community.service;
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.vos.R;
import com.panzhihua.common.model.dtos.property.CommonPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.panzhihua.common.model.vos.community.warehouse.WarehouseDonatesExcelVO;
import com.panzhihua.service_community.entity.ComActWarehouseDonates;
import java.util.List;
/**
 * 爱心义仓/物品捐赠表(ComActWarehouseDonates)表服务接口
@@ -13,4 +19,63 @@
 */
public interface ComActWarehouseDonatesService extends IService<ComActWarehouseDonates> {
    R pageList(CommonPage commonPage);
    /**
     * 后台导入捐赠物品
     * @param list
     * @return
     */
    R batchImportWarehouseDonates(List<WarehouseDonatesExcelVO> list);
    /**
     * 后台导出捐赠物品表格
     * @param exportDonatesDTO
     * @return
     */
    R exportDonates(ExportDonatesDTO exportDonatesDTO);
    /**
     * 分页查询捐赠物品
     * @param pageDonatesDTO
     * @return
     */
    R pageDonates(PageDonatesDTO pageDonatesDTO);
    /**
     * 新增物品捐赠
     * @param comActWarehouseDonatesDTO
     * @return
     */
    R addDonates(ComActWarehouseDonatesDTO comActWarehouseDonatesDTO);
    /**
     * 查看物品捐赠详情
     * @param donatesId
     * @param isWhich
     * @param userId
     * @return
     */
    R getDonates(Long donatesId, Integer isWhich, Long userId);
    /**
     * 捐赠物品后台签收
     * @param comActWarehouseDonatesDTO
     * @return
     */
    R signingDonates(ComActWarehouseDonatesDTO comActWarehouseDonatesDTO);
    /**
     * 用户取消捐赠
     * @param donatesId
     * @param currentUser
     * @return
     */
    R cancelDonates(Long donatesId, Long currentUser);
    /**
     * 捐赠物品统计查询
     * @param communityId
     * @return
     */
    R getDonatesStatistics(Long communityId);
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActWarehouseDonatesServiceImpl.java
@@ -1,13 +1,40 @@
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 com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.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.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.ComActWarehouseDonatesDao;
import com.panzhihua.service_community.dao.ComActWarehouseOperationDao;
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 +46,250 @@
@Service
public class ComActWarehouseDonatesServiceImpl extends ServiceImpl<ComActWarehouseDonatesDao, ComActWarehouseDonates> implements ComActWarehouseDonatesService {
    @Resource
    private ComActWarehouseOperationDao comActWarehouseOperationDao;
    @Override
    public R pageList(CommonPage commonPage) {
        return null;
    }
    /**
     * 后台导入捐赠物品
     * @param list
     * @return
     */
    @Override
    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);
                    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.intValue());
                        comActWarehouseOperation.setUserId(donate.getSigningBy().intValue());
                        comActWarehouseOperation.setContent("工作人员完成了物品签收");
                        comActWarehouseOperation.setCreateTime(nowDate);
                        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
    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().intValue());
                comActWarehouseOperation.setUserId(comActWarehouseDonates.getSigningBy().intValue());
                comActWarehouseOperation.setContent("工作人员完成了物品签收");
                comActWarehouseOperation.setCreateTime(nowDate);
                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)) {
            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<ComActWarehouseOperation> operationDOList = comActWarehouseOperationDao.selectList(new QueryWrapper<ComActWarehouseOperation>()
                    .lambda().eq(ComActWarehouseOperation::getGoodsId, donatesId));
            List<ComActWarehouseOperationVO> operationVOList = new ArrayList<>();
            if (!operationDOList.isEmpty()) {
                operationDOList.forEach(operation -> {
                    ComActWarehouseOperationVO operationVO = new ComActWarehouseOperationVO();
                    BeanUtils.copyProperties(operation, operationVO);
                    operationVOList.add(operationVO);
                });
            }
            comActWarehouseDonatesVO.setOperationList(operationVOList);
        }
        return R.ok(comActWarehouseDonatesVO);
    }
    /**
     * 捐赠物品后台签收
     * @param comActWarehouseDonatesDTO
     * @return
     */
    @Override
    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();
        comActWarehouseDonates.setSigningAt(nowDate);
        comActWarehouseDonates.setStatus(2);
        int result = this.baseMapper.updateById(comActWarehouseDonates);
        if (result > 0) {
            ComActWarehouseOperation comActWarehouseOperation = new ComActWarehouseOperation();
            comActWarehouseOperation.setGoodsId(comActWarehouseDonates.getId().intValue());
            comActWarehouseOperation.setUserId(comActWarehouseDonates.getSigningBy().intValue());
            comActWarehouseOperation.setContent("工作人员完成了物品签收");
            comActWarehouseOperation.setCreateTime(nowDate);
            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().intValue());
            comActWarehouseOperation.setUserId(currentUser.intValue());
            comActWarehouseOperation.setContent("已取消捐赠");
            comActWarehouseOperation.setCreateTime(new Date());
            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);
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActWarehouseDonatesMapper.xml
@@ -18,6 +18,102 @@
        <result property="signingAt" column="signing_at"/>
        <result property="status" column="status"/>
        <result property="communityId" column="community_id"/>
        <result property="registerBy" column="register_by"/>
        <result property="signingBy" column="signing_by"/>
    </resultMap>
    <insert id="batchInsertDonates" parameterType="java.util.List">
        INSERT INTO `com_act_warehouse_donates`(`name`,phone,item,quantity,surplus_quantity,
        is_anonymous,message,register_at,signing_at,status,community_id,register_by)
        VALUES
        <foreach collection="donateList" item="item" index="index" separator="," >
            (#{item.name}, #{item.phone}, #{item.phone}, #{item.item}, #{item.quantity}, #{item.surplusQuantity},
            #{item.isAnonymous}, #{item.message}, #{item.registerAt}, #{item.signingAt}, #{item.status}, #{item.communityId}, #{item.registerBy})
        </foreach>
    </insert>
    <select id="exportDonatesByIds"
            resultType="com.panzhihua.common.model.vos.community.warehouse.ExportDonatesVO">
        SELECT * FROM com_act_warehouse_donates
        WHERE id IN
            <foreach collection="needExportIds" open="(" separator="," close=")" index="index" item="item">
                #{item}
            </foreach>
    </select>
    <select id="exportDonatesBySearch"
            resultType="com.panzhihua.common.model.vos.community.warehouse.ExportDonatesVO">
        SELECT * FROM com_act_warehouse_donates
        WHERE community_id = #{exportDonatesDTO.communityId}
        <if test="exportDonatesDTO.status != null">
            AND status = #{exportDonatesDTO.status}
        </if>
        <if test="exportDonatesDTO.isAnonymous != null">
            AND is_anonymous = #{exportDonatesDTO.isAnonymous}
        </if>
        <if test="exportDonatesDTO.signingAtBegin != null">
            AND signing_at &gt;= #{exportDonatesDTO.signingAtBegin}
        </if>
        <if test="exportDonatesDTO.signingAtEnd != null">
            AND signing_at &lt;= #{exportDonatesDTO.signingAtEnd}
        </if>
        <if test="exportDonatesDTO.keyword != null and exportDonatesDTO.keyword != &quot;&quot;">
            AND (
                `name` LIKE CONCAT('%', #{exportDonatesDTO.keyword}, '%')
                OR phone LIKE CONCAT('%', #{exportDonatesDTO.keyword}, '%')
                OR item LIKE CONCAT('%', #{exportDonatesDTO.keyword}, '%')
            )
        </if>
        ORDER BY id DESC
    </select>
    <select id="pageDonates"
            resultType="com.panzhihua.common.model.vos.community.warehouse.ComActWarehouseDonatesVO">
        SELECT * FROM com_act_warehouse_donates
        WHERE community_id = #{pageDonatesDTO.communityId}
        <if test="pageDonatesDTO.isWhich != null and pageDonatesDTO.isWhich == 1">
            AND user_id = #{pageDonatesDTO.userId}
        </if>
        <if test="pageDonatesDTO.status != null">
            AND status = #{pageDonatesDTO.status}
        </if>
        <if test="pageDonatesDTO.isAnonymous != null">
            AND is_anonymous = #{pageDonatesDTO.isAnonymous}
        </if>
        <if test="pageDonatesDTO.signingAtBegin != null">
            AND signing_at &gt;= #{pageDonatesDTO.signingAtBegin}
        </if>
        <if test="pageDonatesDTO.signingAtEnd != null">
            AND signing_at &lt;= #{pageDonatesDTO.signingAtEnd}
        </if>
        <if test="pageDonatesDTO.keyword != null and pageDonatesDTO.keyword != &quot;&quot;">
            <if test="pageDonatesDTO.isWhich != null">
                AND status = 2
                AND `name` LIKE CONCAT('%', #{pageDonatesDTO.keyword}, '%')
            </if>
            <if test="pageDonatesDTO.isWhich == null">
                AND (
                `name` LIKE CONCAT('%', #{pageDonatesDTO.keyword}, '%')
                OR phone LIKE CONCAT('%', #{pageDonatesDTO.keyword}, '%')
                OR item LIKE CONCAT('%', #{pageDonatesDTO.keyword}, '%')
                )
            </if>
        </if>
        ORDER BY id DESC
    </select>
    <select id="selectDetailById"
            resultType="com.panzhihua.common.model.vos.community.warehouse.ComActWarehouseDonatesVO">
        SELECT temp.*,IF(su.name IS NULL, su.nick_name, su.name) AS signingBy FROM (
            SELECT * FROM com_act_warehouse_donates WHERE id = #{donatesId}
        ) temp LEFT JOIN sys_user su ON temp.signing_by = su.user_id
    </select>
    <select id="selectDonatesStatistics"
            resultType="com.panzhihua.common.model.vos.community.warehouse.DonatesStatisticsVO">
        SELECT
            (SELECT IF(SUM(quantity) IS NULL,0,SUM(quantity)) FROM com_act_warehouse_donates WHERE community_id = #{communityId} AND `status` = 2) as totalInc ,
            (SELECT IF(SUM(surplus_quantity) IS NULL,0,SUM(surplus_quantity)) FROM com_act_warehouse_donates WHERE community_id = #{communityId} AND `status` = 2) as surplus,
            (SELECT IF(SUM(quantity) IS NULL,0,SUM(quantity)) FROM com_act_warehouse_donates WHERE community_id = #{communityId} AND `status` = 2 AND signing_at LIKE #{currentYear}) as yearInc,
            (SELECT IF(SUM(quantity) IS NULL,0,SUM(quantity)) FROM com_act_warehouse_donates WHERE community_id = #{communityId} AND `status` = 2 AND signing_at LIKE #{currentMonth}) as mothInc,
            (SELECT IF(SUM(quantity) IS NULL,0,SUM(quantity)) FROM com_act_warehouse_donates WHERE community_id = #{communityId} AND `status` = 2 AND signing_at LIKE #{today}) as dayInc,
            (SELECT IF(SUM(goods_num) IS NULL,0,SUM(goods_num)) FROM com_act_warehouse_apply WHERE community_id = #{communityId} AND `status` = 3 AND actual_time LIKE #{currentYear}) as yearDec,
            (SELECT IF(SUM(goods_num) IS NULL,0,SUM(goods_num)) FROM com_act_warehouse_apply WHERE community_id = #{communityId} AND `status` = 3 AND actual_time LIKE #{currentMonth}) as mothDec,
            (SELECT IF(SUM(goods_num) IS NULL,0,SUM(goods_num)) FROM com_act_warehouse_apply WHERE community_id = #{communityId} AND `status` = 3 AND actual_time LIKE #{today}) as dayDec
    </select>
</mapper>
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActWarehouseOperationMapper.xml
@@ -10,5 +10,12 @@
        <result property="createTime" column="create_time"/>
        <result property="userId" column="user_id"/>
    </resultMap>
    <insert id="batchInsertOperation" parameterType="java.util.List">
        INSERT INTO `com_act_warehouse_operation` (goods_id,content,create_time,user_id)
        VALUES
        <foreach collection="operationList" item="item" index="index" separator="," >
            (#{item.goodsId}, #{item.content}, #{item.createTime}, #{item.userId})
        </foreach>
    </insert>
</mapper>
springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java
@@ -324,6 +324,7 @@
        }
        loginUserInfoVO.setIsmemberrole(2);
        loginUserInfoVO.setIsFourMember(2);
        loginUserInfoVO.setIsCommunityWorker(2);
        // 志愿者状态
        String phone = sysUserDO.getPhone();
        Long userCommunityId = sysUserDO.getCommunityId();
@@ -352,6 +353,7 @@
            Integer isSysUser = userDao.selectCountSysUser(phone, userCommunityId);
            if (countTeam != null && countTeam > 0) {
                loginUserInfoVO.setIsmemberrole(1);
                loginUserInfoVO.setIsCommunityWorker(1);
            } else if (selectCountMemberRole != null && selectCountMemberRole > 0) {
                loginUserInfoVO.setIsmemberrole(1);
            } else if (isSysUser != null && isSysUser > 0) {
springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/java/com/panzhihua/zuul/filters/JWTAuthenticationTokenFilter.java
@@ -261,6 +261,8 @@
                noLoginUrl.add("/api/applets/convenient/merchant/incr-view");
                noLoginUrl.add("/api/applets/convenient/product/incr-view");
                noLoginUrl.add("/api/shopbackstage/convenient/upload/file");
                noLoginUrl.add("/api/applets/warehouse/donates/page");
                noLoginUrl.add("/api/applets/warehouse/donates/get");
                if (noLoginUrl.contains(requestURI)) {
                    List<SimpleGrantedAuthority> authorities = new ArrayList<>();
                    authorities.add(new SimpleGrantedAuthority(SecurityConstants.ROLE_APPLETS));