diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wgz/controller/WgzAppController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wgz/controller/WgzAppController.java index 32300c6..7689708 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wgz/controller/WgzAppController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wgz/controller/WgzAppController.java @@ -44,6 +44,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import static com.ruoyi.common.constant.Constants.WGZ; + /** * APP务工者Controller * @@ -319,7 +321,7 @@ public class WgzAppController { /** * 【首页】【项目详情】 项目详情 */ - @ApiOperation("【首页】【项目详情】 项目详情)") + @ApiOperation("【首页】【招工列表】【项目详情】 项目详情)") //@PreAuthorize("@ss.hasPermi('wgzApp:user:userProjectDetails')") @GetMapping("/WgzAppUserProjectDetails/{id}") public AjaxResult userProjectDetails(@NotNull(message = "主键不能为空") @PathVariable("id") Long id) { @@ -336,16 +338,6 @@ public class WgzAppController { return AjaxResult.success(iBgtProjectRecruitApplyService.userApplyForRegistration(id)); } - /** - * 【首页】【项目详情】 项目详情·确认|拒绝报名 - */ - @ApiOperation("【首页】【项目详情】 项目详情·确认|拒绝报名)") - //@PreAuthorize("@ss.hasPermi('wgzApp:user:userConfirmRegistration')") - @GetMapping("/WgzAppUserConfirmRegistration/{id}") - public AjaxResult userConfirmRegistration(@Validated WgzAppConfirmRegistrationReq req) { - return AjaxResult.success(iBgtProjectRecruitApplyService.userConfirmRegistration(req)); - } - /** * 【首页】【已报名项目】 已报名项目 */ @@ -361,9 +353,9 @@ public class WgzAppController { */ @ApiOperation("【首页】【已报名项目】 已报名项目·取消报名)") //@PreAuthorize("@ss.hasPermi('wgzApp:user:userCancelRegistration')") - @DeleteMapping("/WgzAppUserCancelRegistration/{recruitId}") - public AjaxResult userCancelRegistration(@NotEmpty(message = "招工主键不能为空") @PathVariable Long recruitId) { - return AjaxResult.success(iBgtProjectRecruitApplyService.userCancelRegistration(recruitId)); + @DeleteMapping("/WgzAppUserCancelRegistration/{recruitApplyId}") + public AjaxResult userCancelRegistration(@NotEmpty(message = "招工主键不能为空") @PathVariable Long recruitApplyId) { + return AjaxResult.success(iBgtProjectRecruitApplyService.userCancelRegistration(recruitApplyId)); } /** @@ -478,6 +470,26 @@ public class WgzAppController { return iWgzMessageService.userGetMessageList(req); } + /** + * 【消息】【报名消息】 报名消息 + */ + @ApiOperation("【消息】【报名消息】 报名消息") + //@PreAuthorize("@ss.hasPermi('wgzApp:user:userRegistrationInformation')") + @GetMapping("/WgzAppUserRegistrationInformation/{messageId}") + public AjaxResult userRegistrationInformation(@NotNull(message = "消息主键ID不能为空") @PathVariable("messageId") Long messageId) { + return AjaxResult.success(iWgzMessageService.userRegistrationInformation(messageId)); + } + + /** + * 【消息】【报名消息】 报名消息·确认|拒绝报名 + */ + @ApiOperation("【消息】【报名消息】 报名消息·确认|拒绝报名") + //@PreAuthorize("@ss.hasPermi('wgzApp:user:userConfirmRegistration')") + @GetMapping("/WgzAppUserConfirmRegistration") + public AjaxResult userConfirmRegistration(@Validated WgzAppConfirmRegistrationReq req) { + return AjaxResult.success(iBgtProjectRecruitApplyService.userConfirmRegistration(req)); + } + @@ -500,30 +512,37 @@ public class WgzAppController { //@PreAuthorize("@ss.hasPermi('wgzApp:user:userAttachmentAcquisition')") @GetMapping("/wgzUserAttachmentAcquisition") public AjaxResult userAttachmentAcquisition(@Validated WgzAppAttachmentAcquisitionReq req) { + Long appUserId = SecurityUtils.getAppUserId(); + BgtProjectRecruitApply by = iBgtProjectRecruitApplyService.selectByUserIdProjectRecruitApplyId(appUserId); + Long recruitId = by.getRecruitId(); + if (!appUserId.equals(recruitId)){ + throw new RuntimeException("当前用户不是该招工的申请人"); + } //返回对象 WgzAppAttachmentAcquisitionRes wgzAppAttachmentAcquisitionRes = new WgzAppAttachmentAcquisitionRes(); List resData = new ArrayList<>(); //附件类型 - String userType = "wgz_attachment"; + String annexType = "wgz_attachment"; //具体附件值 String[] specifiedAttachment = req.getSpecifiedAttachment(); //String[] SpecifiedAttachment = {"0"}; //1、获取指定实名认证的附件结构返回 - List data = dictTypeService.selectDictDataByType(userType); + List data = dictTypeService.selectDictDataByType(annexType); data.forEach(item -> { for (String val : specifiedAttachment) { String dictValue = item.getDictValue(); if (dictValue.equals(val)) { //2、每个结构下有那些附件(附件可能有多个或一个);查询附件表 AnnexQueryBo annexQueryBo = new AnnexQueryBo(); - annexQueryBo.setUserId(req.getUserId()); - annexQueryBo.setUserType(userType); + annexQueryBo.setUserId(appUserId); + annexQueryBo.setUserType(WGZ); + annexQueryBo.setRecruitId(recruitId); annexQueryBo.setAnnexType(val); List annexes = iAnnexService.queryList(annexQueryBo); //3、具体附件结构 WgzAutonymAnnex wgzAutonymAnnex = new WgzAutonymAnnex(). - setUserType(userType). + setUserType(WGZ). setDictLabel(item.getDictLabel()). setDictValue(dictValue).setAnnex(annexes); resData.add(wgzAutonymAnnex); diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/mapper/BgtProjectRecruitMapper.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/mapper/BgtProjectRecruitMapper.java index 0250ebe..5a9ec6e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/mapper/BgtProjectRecruitMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/mapper/BgtProjectRecruitMapper.java @@ -6,12 +6,10 @@ import com.ruoyi.bgt.domain.dto.BgtProjectRecruitQueryDTO; import com.ruoyi.bgt.domain.vo.BgtProjectRecruitVO; import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache; import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus; +import com.ruoyi.wgz.bo.req.WgzAppGetMessageListReq; import com.ruoyi.wgz.bo.req.WgzAppRegisteredProjectReq; import com.ruoyi.wgz.bo.req.WgzAppUnderwayReq; -import com.ruoyi.wgz.bo.res.WgzAppCancelRegistrationProjectDetailsRes; -import com.ruoyi.wgz.bo.res.WgzAppProjectDetailsRes; -import com.ruoyi.wgz.bo.res.WgzAppRegisteredProjectRes; -import com.ruoyi.wgz.bo.res.WgzAppUnderwayRes; +import com.ruoyi.wgz.bo.res.*; import com.ruoyi.wgz.bo.rests.WgzAppCancelRegistrationProjectDetailsTwo; import org.apache.ibatis.annotations.CacheNamespace; import org.apache.ibatis.annotations.Param; @@ -37,4 +35,6 @@ public interface BgtProjectRecruitMapper extends BaseMapperPlus GetsTheMembersUnderTheCurrentProject (@Param("recruitId") Long recruitId); + + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectRecruitApplyService.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectRecruitApplyService.java index ffb3044..cfad08a 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectRecruitApplyService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectRecruitApplyService.java @@ -115,7 +115,7 @@ public interface IBgtProjectRecruitApplyService extends IServicePlus lqw = Wrappers.lambdaQuery(); lqw.eq(BgtProjectRecruitApply::getUserId, id). - eq(BgtProjectRecruitApply::getStatus, "3"); //包工头同意、务工者同意才算进场ok -// isNotNull(BgtProjectRecruitApply::getEntryTime). -// ne(BgtProjectRecruitApply::getEntryTime, ""); + in(BgtProjectRecruitApply::getStatus, strings); //包工头+务工者同意 or 进场 才算进场ok List bgtProjectRecruitApplies = baseMapper.selectList(lqw); if (bgtProjectRecruitApplies.size()>1){ throw new RuntimeException("异常,查询到用户同时在多个工地务工!"); @@ -280,8 +279,11 @@ public class BgtProjectRecruitApplyServiceImpl extends ServicePlusImpl().eq(BgtProjectRecruitApply::getRecruitId, recruitId)) >0; + public Boolean userCancelRegistration(Long recruitApplyId) { + BgtProjectRecruitApply bgtProjectRecruitApply = new BgtProjectRecruitApply(); + bgtProjectRecruitApply.setId(recruitApplyId); + bgtProjectRecruitApply.setStatus("7"); + return baseMapper.updateById(bgtProjectRecruitApply) >0; } @@ -296,10 +298,8 @@ public class BgtProjectRecruitApplyServiceImpl extends ServicePlusImpl { * 根据表自增ID来删除指定附件数据,并删除对应的资源 */ Boolean deleteByIds(Long id); + + /** + * 根据务工者唯一标识+招工标识 得到附件信息 + */ + List findByUserIdAndRecruitId(Long userId,Long recruitId,String[] types); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/common/service/impl/AnnexServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/common/service/impl/AnnexServiceImpl.java index db4f1ad..3b28767 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/common/service/impl/AnnexServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/common/service/impl/AnnexServiceImpl.java @@ -24,6 +24,8 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import static com.ruoyi.common.constant.Constants.WGZ; + /** * 附件Service业务层处理 * @@ -56,6 +58,8 @@ public class AnnexServiceImpl extends ServicePlusImpl implem Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.eq(bo.getUserId() != null, Annex::getUserId, bo.getUserId()); + lqw.eq(StrUtil.isNotBlank(bo.getUserType()), Annex::getUserType, bo.getUserType()); + lqw.eq(bo.getRecruitId() != null, Annex::getRecruitId, bo.getRecruitId()); lqw.eq(StrUtil.isNotBlank(bo.getAnnexType()), Annex::getAnnexType, bo.getAnnexType()); lqw.like(StrUtil.isNotBlank(bo.getAnnexName()), Annex::getAnnexName, bo.getAnnexName()); lqw.eq(StrUtil.isNotBlank(bo.getAnnexUrl()), Annex::getAnnexUrl, bo.getAnnexUrl()); @@ -128,4 +132,14 @@ public class AnnexServiceImpl extends ServicePlusImpl implem } return true; } + + @Override + public List findByUserIdAndRecruitId(Long userId, Long recruitId, String[] types) { + LambdaQueryWrapper wra = new LambdaQueryWrapper(). + eq(Annex::getUserType,WGZ). + eq(Annex::getUserId,userId). + eq(Annex::getRecruitId,recruitId). + in(Annex::getAnnexType,types); + return baseMapper.selectList(wra); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppAttachmentAcquisitionReq.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppAttachmentAcquisitionReq.java index 554eac3..260272e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppAttachmentAcquisitionReq.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppAttachmentAcquisitionReq.java @@ -8,6 +8,7 @@ import lombok.experimental.Accessors; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; +import javax.validation.constraints.Pattern; import javax.validation.constraints.Size; import java.io.Serializable; import java.time.Year; @@ -17,13 +18,9 @@ import java.time.Year; @Accessors(chain = true) @ApiModel("务工者APP-实名认证·附件结构请求对象") public class WgzAppAttachmentAcquisitionReq implements Serializable { - @ApiModelProperty("唯一标识") - @NotNull(message = "唯一标识不能为空") - private Long userId; - @ApiModelProperty("0资格证书 1劳动合同 2保单") - @NotNull(message = "唯一标识不能为空") - @Size(min = 1, message = "唯一标识数组必须至少包含一个元素") + @ApiModelProperty("0资格证书 1劳动合同 2保单 3入场材料 4电子税票 5工作明细报告") + @Pattern(regexp = "^[0-5]$", message = "status 只能是 0 到 5 之间的数字") private String[] specifiedAttachment; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppConfirmRegistrationReq.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppConfirmRegistrationReq.java index 153cd0b..3a10b7e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppConfirmRegistrationReq.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppConfirmRegistrationReq.java @@ -6,6 +6,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; +import javax.validation.constraints.Pattern; import java.io.Serializable; @Data @@ -14,8 +15,9 @@ import java.io.Serializable; @ApiModel("确认|拒绝报名请求对象") public class WgzAppConfirmRegistrationReq implements Serializable { @ApiModelProperty("招工ID") - private Long recruitId; + private Long recruitApplyId; - @ApiModelProperty("0拒绝 1确认") + @ApiModelProperty("3务工者同意 4务工者拒绝 ") + @Pattern(regexp = "^(3|4)$", message = "status 只能是 3 或 4") private String status; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppRegisteredProjectRes.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppRegisteredProjectRes.java index 57b2184..339c3a0 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppRegisteredProjectRes.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppRegisteredProjectRes.java @@ -20,11 +20,14 @@ import java.time.LocalTime; @Accessors(chain = true) @ApiModel("已报名项目返回对象") public class WgzAppRegisteredProjectRes implements Serializable { - @ApiModelProperty("主键ID") + @ApiModelProperty("招工ID") private Long id; - @ApiModelProperty("项目ID") - private Long projectId; +// @ApiModelProperty("招工ID") +// private Long projectId; + + @ApiModelProperty("招工申请ID") + private Long recruitApplyId; @ApiModelProperty("招工名称") private String recruitName; diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppRegistrationInformationRes.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppRegistrationInformationRes.java new file mode 100644 index 0000000..c405d41 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppRegistrationInformationRes.java @@ -0,0 +1,72 @@ +package com.ruoyi.wgz.bo.res; + +import com.ruoyi.common.domain.Annex; +import com.ruoyi.wgz.bo.rests.WgzAppCancelRegistrationProjectDetailsTwo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.util.List; + +@Data +@NoArgsConstructor +@Accessors(chain = true) +@ApiModel("消息报名信息返回对象") +public class WgzAppRegistrationInformationRes implements Serializable { + @ApiModelProperty("招工ID") + private Long recruitId; + + @ApiModelProperty("招工申请ID") + private Long recruitApplyId; + + //============== + @ApiModelProperty("封面图(多个逗号分隔)") + private String coverPlan; + + @ApiModelProperty("创建时间") + private LocalDateTime createTime; + + @ApiModelProperty("招工名称") + private String recruitName; + + @ApiModelProperty("招工金额") + private BigDecimal recruitAmount; + + @ApiModelProperty("招工数量") + private Integer recruitStaffNum; + + @ApiModelProperty("任务名称") + private String taskName; + + @ApiModelProperty("任务地址") + private String taskAddress; + + @ApiModelProperty("招工描述") + private String subDescribe; + + @ApiModelProperty("开工日期") + private LocalDate recruitWorkBeginTime; + + @ApiModelProperty("进场日期") + private LocalDate entryTime; + + @ApiModelProperty("联系人") + private String recruitContactPerson; + + @ApiModelProperty("联系电话") + private String recruitContactPhone; + + @ApiModelProperty("备注") + private String remark; + +// @ApiModelProperty("附件实体数据") +// private List annex; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/mapper/WgzMessageMapper.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/mapper/WgzMessageMapper.java index e538131..891ea16 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/mapper/WgzMessageMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/mapper/WgzMessageMapper.java @@ -5,6 +5,7 @@ import com.ruoyi.bgt.domain.dto.BgtDailyClockListDTO; import com.ruoyi.bgt.domain.vo.BgtDailyClockListVO; import com.ruoyi.wgz.bo.req.WgzAppGetMessageListReq; import com.ruoyi.wgz.bo.res.WgzAppGetMessageListRes; +import com.ruoyi.wgz.bo.res.WgzAppRegistrationInformationRes; import com.ruoyi.wgz.domain.WgzMessage; import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus; import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache; @@ -25,4 +26,7 @@ import java.util.Map; public interface WgzMessageMapper extends BaseMapperPlus { Page userGetMessageList(@Param("page") Page page); + + // //根据招工id获取到招工的信息+附件 + WgzAppRegistrationInformationRes findByRecruitIdData(@Param("recruitId") Long recruitId); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzMessageService.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzMessageService.java index 4d6ce45..80ca732 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzMessageService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzMessageService.java @@ -3,6 +3,7 @@ package com.ruoyi.wgz.service; import com.ruoyi.wgz.bo.req.WgzAppGetMessageListReq; import com.ruoyi.wgz.bo.res.WgzAppGetMessageListRes; import com.ruoyi.wgz.bo.res.WgzAppMessageTypeStatisticsRes; +import com.ruoyi.wgz.bo.res.WgzAppRegistrationInformationRes; import com.ruoyi.wgz.domain.WgzMessage; import com.ruoyi.wgz.bo.WgzMessageQueryBo; import com.ruoyi.common.core.mybatisplus.core.IServicePlus; @@ -78,4 +79,9 @@ public interface IWgzMessageService extends IServicePlus { * 消息列表 */ TableDataInfo userGetMessageList(@Validated WgzAppGetMessageListReq req); + + /** + * 根据消息招工申请信息的主键ID去获取招工信息 + */ + WgzAppRegistrationInformationRes userRegistrationInformation(Long messageId); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzMessageServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzMessageServiceImpl.java index 168e9bd..008c89d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzMessageServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzMessageServiceImpl.java @@ -3,7 +3,11 @@ package com.ruoyi.wgz.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.bgt.mapper.BgtProjectRecruitMapper; +import com.ruoyi.bgt.service.IBgtProjectRecruitService; import com.ruoyi.common.core.domain.entity.SysDictData; +import com.ruoyi.common.domain.Annex; +import com.ruoyi.common.service.IAnnexService; import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.core.page.PagePlus; import com.ruoyi.common.core.page.TableDataInfo; @@ -13,6 +17,7 @@ import com.ruoyi.wgz.bo.req.WgzAppGetMessageListReq; import com.ruoyi.wgz.bo.req.WgzAppLeaveHistoryListPageReq; import com.ruoyi.wgz.bo.res.WgzAppGetMessageListRes; import com.ruoyi.wgz.bo.res.WgzAppMessageTypeStatisticsRes; +import com.ruoyi.wgz.bo.res.WgzAppRegistrationInformationRes; import com.ruoyi.wgz.bo.rests.WgzAppMessageTypeStatisticsTwo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; @@ -42,6 +47,9 @@ public class WgzMessageServiceImpl extends ServicePlusImpl byUserIdAndRecruitId = annexService.findByUserIdAndRecruitId(appUserId, byId.getId(), new String[]{"1"}); +// byRecruitIdData.setAnnex(null); + return byRecruitIdData; + } } diff --git a/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitMapper.xml b/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitMapper.xml index abe0dac..acb6343 100644 --- a/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitMapper.xml @@ -57,6 +57,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" diff --git a/ruoyi-system/src/main/resources/mapper/wgz/WgzMessageMapper.xml b/ruoyi-system/src/main/resources/mapper/wgz/WgzMessageMapper.xml index 9afbed8..8acd957 100644 --- a/ruoyi-system/src/main/resources/mapper/wgz/WgzMessageMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/wgz/WgzMessageMapper.xml @@ -84,4 +84,31 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + +