Browse Source

heart-work:重新发布活动

dev_shibei_match
yinzuomei 5 years ago
parent
commit
c0e5578683
  1. 194
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/RePublishFormDTO.java
  2. 3
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/PublishActResultDTO.java
  3. 8
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/constant/ActMessageConstant.java
  4. 24
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/WorkActController.java
  5. 9
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/ActContentDao.java
  6. 9
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/ActUserRelationDao.java
  7. 9
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/WorkActService.java
  8. 168
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActServiceImpl.java
  9. 8
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/ActContentDao.xml
  10. 13
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/ActUserRelationDao.xml

194
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/RePublishFormDTO.java

@ -0,0 +1,194 @@
package com.epmet.dto.form.work;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.Valid;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
/**
* 重新发布活动-入参DTO
*
* @author yinzuomei@elink-cn.com
* @date 2020/7/27 13:49
*/
@Data
public class RePublishFormDTO implements Serializable {
private static final long serialVersionUID = -959956652123514886L;
public interface AddUserInternalGroup {
}
public interface AddUserShowGroup extends CustomerClientShowGroup {
}
@Valid
@Size(min=1,message = "活动详情不能为空",groups = {AddUserShowGroup.class})
private List<PublishActContentFormDTO> actContent;
/**
* 活动id
*/
@NotBlank(message = "活动id不能为空", groups = {AddUserInternalGroup.class})
private String actId;
/**
* 是否通知已报名人员true 通知 false 不通知
*/
@NotNull(message = "是否通知已报名人员标志不能为空",groups ={AddUserInternalGroup.class} )
private Boolean noticePassedPeople;
/**
* 活动标题
*/
@NotBlank(message = "活动标题不能为空", groups = {AddUserShowGroup.class})
@Length(min=1, max=50,message = "活动标题限50字以内", groups = {AddUserShowGroup.class})
private String title;
/**
* 封面图
*/
@NotBlank(message = "封面图不能为空", groups = {AddUserShowGroup.class})
private String coverPic;
/**
* 活动地点
*/
@NotBlank(message = "活动地点不能为空", groups = {AddUserShowGroup.class})
private String actAddress;
/**
* 活动地点-经度
*/
@NotNull(message = "活动地点经度不能为空", groups = {AddUserInternalGroup.class})
private BigDecimal actLongitude;
/**
* 活动地点-纬度
*/
@NotNull(message = "活动地点经度不能为空", groups = {AddUserInternalGroup.class})
private BigDecimal actLatitude;
/**
* 活动预计开始时间yyyy-MM-dd HH:mm
*/
@NotBlank(message = "活动预计开始时间不能为空", groups = {AddUserShowGroup.class})
private String actStartTime;
/**
* 活动预计结束时间yyyy-MM-dd HH:mm
*/
@NotBlank(message = "活动预计结束时间不能为空", groups = {AddUserShowGroup.class})
private String actEndTime;
/**
* 活动人数
*/
@Min(0)
private Integer actQuota;
/**
* 活动积分
*/
@Min(0)
private Integer reward;
/**
* 报名审核true只有志愿者才可以参加活动false: 只要是居民就可以参加活动
*/
@NotNull(message = "报名身份不能为空", groups = {AddUserInternalGroup.class})
private Boolean volunteerLimit;
/**
* 报名审核 true: 需人工审核 false: 无需审核
*/
@NotNull(message = "报名审核方式不能为空", groups = {AddUserInternalGroup.class})
private Boolean auditSwitch;
/**
* 报名截止时间yyyy-MM-dd HH:mm
*/
@NotBlank(message = "报名截止时间不能为空", groups = {AddUserShowGroup.class})
private String signUpEndTime;
/**
* 报名条件
*/
@NotBlank(message = "报名条件不能为空", groups = {AddUserShowGroup.class})
@Length(min=1, max=50,message = "报名条件限200字以内", groups = {AddUserShowGroup.class})
private String requirement;
/**
* 签到开始时间yyyy-MM-dd HH:mm
*/
@NotBlank(message = "签到开始时间不能为空", groups = {AddUserShowGroup.class})
private String signInStartTime;
/**
* 签到结束时间: yyyy-MM-dd HH:mm
*/
@NotBlank(message = "签到结束时间不能为空", groups = {AddUserShowGroup.class})
private String signInEndTime;
/**
* 签到地址
*/
@NotBlank(message = "签到地址不能为空", groups = {AddUserShowGroup.class})
private String signInAddress;
/**
* 签到地址-纬度
*/
@NotNull(message = "签到地址-纬度不能为空", groups = {AddUserInternalGroup.class})
private BigDecimal signInLatitude;
/**
* 签到地址-经度
*/
@NotNull(message = "签到地址-经度不能为空", groups = {AddUserInternalGroup.class})
private BigDecimal signInLongitude;
/**
* 签到有效范围()
*/
@Min(0)
@NotNull(message = "签到有效范围不能为空", groups = {AddUserShowGroup.class})
private Integer signInRadius;
/**
* 主办方id
*/
@NotBlank(message = "主办方id不能为空", groups = {AddUserInternalGroup.class})
private String sponsorId;
/**
* 主办方类型以网格名义grid , 以机关名义 agency
*/
@NotBlank(message = "主办方类型不能为空", groups = {AddUserInternalGroup.class})
private String sponsorType;
/**
* 主办方名称
*/
@NotBlank(message = "主办方名称不能为空", groups = {AddUserShowGroup.class})
private String sponsorName;
/**
* 联系人
*/
@NotBlank(message = "联系人不能为空", groups = {AddUserShowGroup.class})
private String sponsorContacts;
/**
* 联系电话
*/
@NotBlank(message = "联系电话不能为空", groups = {AddUserShowGroup.class})
private String sponsorTel;
}

3
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/PublishActResultDTO.java

@ -13,5 +13,8 @@ import java.io.Serializable;
@Data @Data
public class PublishActResultDTO implements Serializable { public class PublishActResultDTO implements Serializable {
private static final long serialVersionUID = 4699176252192192495L; private static final long serialVersionUID = 4699176252192192495L;
/**
* 活动id
*/
private String actId; private String actId;
} }

8
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/constant/ActMessageConstant.java

@ -21,6 +21,9 @@ public interface ActMessageConstant {
*/ */
String ACT_CANCELED="您报名的活动%s,已取消,原因:%s"; String ACT_CANCELED="您报名的活动%s,已取消,原因:%s";
/**
* 发放积分结束活动时调用消息的备注
*/
String ACT_POINTS_EVENT_REMARK="参与%s"; String ACT_POINTS_EVENT_REMARK="参与%s";
/** /**
@ -32,4 +35,9 @@ public interface ActMessageConstant {
* 居民端-添加实况发送消息 * 居民端-添加实况发送消息
*/ */
String ACT_POINTS_EVENT_VOLUNTEER_LIVE="用户%s,添加活动实况,活动:%s"; String ACT_POINTS_EVENT_VOLUNTEER_LIVE="用户%s,添加活动实况,活动:%s";
/**
* 工作端-重新发布活动通知待审核+已经审核通过的用户
*/
String RE_PUBLISH_ACT="您好,您参与的%s活动,%s,请注意查看";
} }

24
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/WorkActController.java

@ -66,8 +66,7 @@ public class WorkActController {
PublishActContentFormDTO.UserInternalGroup.class PublishActContentFormDTO.UserInternalGroup.class
); );
} }
PublishActResultDTO resultDTO = workActService.publishAct(formDTO); return new Result<PublishActResultDTO>().ok(workActService.publishAct(formDTO));
return new Result<PublishActResultDTO>().ok(resultDTO);
} }
/** /**
@ -220,4 +219,25 @@ public class WorkActController {
ValidatorUtils.validateEntity(formDTO, ActIdFormDTO.AddUserInternalGroup.class); ValidatorUtils.validateEntity(formDTO, ActIdFormDTO.AddUserInternalGroup.class);
return new Result<ReEditActInfoResultDTO>().ok(workActService.getActInfo(formDTO.getActId())); return new Result<ReEditActInfoResultDTO>().ok(workActService.getActInfo(formDTO.getActId()));
} }
/**
* @param rePublishFormDTO
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.work.PublishActResultDTO>
* @author yinzuomei
* @description 重新发布活动
* @Date 2020/7/27 13:55
**/
@PostMapping("republish")
public Result<PublishActResultDTO> rePublish(@RequestBody RePublishFormDTO rePublishFormDTO) {
ValidatorUtils.validateEntity(rePublishFormDTO, RePublishFormDTO.AddUserShowGroup.class, RePublishFormDTO.AddUserInternalGroup.class);
for (PublishActContentFormDTO actContentFormDTO : rePublishFormDTO.getActContent()) {
ValidatorUtils.validateEntity(actContentFormDTO,
PublishActContentFormDTO.UserShowGroup.class,
PublishActContentFormDTO.UserInternalGroup.class
);
}
return new Result<PublishActResultDTO>().ok(workActService.rePublish(rePublishFormDTO));
}
} }

9
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/ActContentDao.java

@ -41,4 +41,13 @@ public interface ActContentDao extends BaseDao<ActContentEntity> {
* @Date 2020/7/26 18:26 * @Date 2020/7/26 18:26
**/ **/
List<ActPreviewContentResultDTO> selectByActId(String actId); List<ActPreviewContentResultDTO> selectByActId(String actId);
/**
* @return int
* @param actId
* @author yinzuomei
* @description 根据活动id,将原来的活动详情删除del_flag=1
* @Date 2020/7/27 14:06
**/
int updateDelFlagByActId(String actId);
} }

9
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/ActUserRelationDao.java

@ -175,4 +175,13 @@ public interface ActUserRelationDao extends BaseDao<ActUserRelationEntity> {
* @Date 2020/7/26 22:38 * @Date 2020/7/26 22:38
**/ **/
Integer selectCountByReward(@Param("actId") String actId, @Param("rewardFlag")String rewardFlag); Integer selectCountByReward(@Param("actId") String actId, @Param("rewardFlag")String rewardFlag);
/**
* @return java.util.List<com.epmet.dto.ActUserRelationDTO>
* @param actId 活动id
* @author yinzuomei
* @description 根据活动id,查询待审核+已经审核通过的人员
* @Date 2020/7/27 14:59
**/
List<ActUserRelationDTO> selectAuditingAndPassedList(String actId);
} }

9
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/WorkActService.java

@ -137,4 +137,13 @@ public interface WorkActService {
* @Date 2020/7/27 13:36 * @Date 2020/7/27 13:36
**/ **/
ReEditActInfoResultDTO getActInfo(String actId); ReEditActInfoResultDTO getActInfo(String actId);
/**
* @return com.epmet.dto.result.work.PublishActResultDTO
* @param rePublishFormDTO
* @author yinzuomei
* @description 重新发布活动
* @Date 2020/7/27 13:55
**/
PublishActResultDTO rePublish(RePublishFormDTO rePublishFormDTO);
} }

168
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActServiceImpl.java

@ -171,7 +171,7 @@ public class WorkActServiceImpl implements WorkActService {
* @return void * @return void
* @param formDTO * @param formDTO
* @author yinzuomei * @author yinzuomei
* @description * @description 第一次发布
* @Date 2020/7/24 16:45 * @Date 2020/7/24 16:45
**/ **/
private void checkPublishFormDTO(PublishActInfoFormDTO formDTO) { private void checkPublishFormDTO(PublishActInfoFormDTO formDTO) {
@ -189,6 +189,28 @@ public class WorkActServiceImpl implements WorkActService {
} }
} }
/**
* @return void
* @param formDTO
* @author yinzuomei
* @description 重新发布
* @Date 2020/7/24 16:45
**/
private void checkRePublishFormDTO(RePublishFormDTO formDTO) {
//1、活动预计开始时间、活动预计结束时间
if(formDTO.getActStartTime().compareTo(formDTO.getActEndTime())!=-1){
throw new RenException(EpmetErrorCode.ACT_START_TIME_ERROR.getCode());
}
//2、签到开始时间、签到结束时间
if(formDTO.getSignInStartTime().compareTo(formDTO.getSignInEndTime())!=-1){
throw new RenException(EpmetErrorCode.ACT_SIGN_IN_START_TIME_ERROR.getCode());
}
//3、报名截止时间(应该在活动预计开始时间之前)
if(formDTO.getSignUpEndTime().compareTo(formDTO.getActStartTime())!=-1){
throw new RenException((EpmetErrorCode.ACT_SIGN_UP_END_TIME_ERROR.getCode()));
}
}
public static void main(String[] args) { public static void main(String[] args) {
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@ -243,6 +265,43 @@ public class WorkActServiceImpl implements WorkActService {
this.auditActContent(textList,imgList); this.auditActContent(textList,imgList);
} }
/**
* @return void
* @param formDTO
* @author yinzuomei
* @description 重新发布活动,内容审核
* @Date 2020/7/27 14:01
**/
private void auditRePublishAct(RePublishFormDTO formDTO) {
//1、活动标题
if (StringUtils.isNotBlank(formDTO.getTitle())) {
this.auditActTitle(formDTO.getTitle());
}
//2、活动封面
if(StringUtils.isNotBlank(formDTO.getCoverPic())){
this.auditActCoverPic(formDTO.getCoverPic());
}
//3、招募要求
if (StringUtils.isNotBlank(formDTO.getRequirement())) {
this.auditActRequirement(formDTO.getRequirement());
}
//4、活动内容
if(null==formDTO.getActContent()||formDTO.getActContent().size()<1){
return;
}
List<String> textList=new ArrayList<>();
List<String> imgList=new ArrayList<>();
for(PublishActContentFormDTO actContent:formDTO.getActContent()){
if(ActConstant.ACT_CONTENT_TYPE_TEXT.equals(actContent.getContentType())){
textList.add(actContent.getContent());
}else if(ActConstant.ACT_CONTENT_TYPE_IMG.equals(actContent.getContentType())){
imgList.add(actContent.getContent());
}
}
this.auditActContent(textList,imgList);
}
/** /**
* @return com.epmet.entity.ActInfoEntity * @return com.epmet.entity.ActInfoEntity
* @param formDTO * @param formDTO
@ -286,6 +345,49 @@ public class WorkActServiceImpl implements WorkActService {
return actInfoEntity; return actInfoEntity;
} }
/**
* @return com.epmet.entity.ActInfoEntity
* @param formDTO
* @author yinzuomei
* @description 重新发布=构造act_info
* @Date 2020/7/27 14:02
**/
private ActInfoEntity constructRePublishActInfo(RePublishFormDTO formDTO) {
ActInfoEntity actInfoEntity = ConvertUtils.sourceToTarget(formDTO, ActInfoEntity.class);
//报名开始、报名截止、活动预计开始、活动预计截止、签到开始、签到截止
actInfoEntity.setSignUpEndTime(DateUtils.minStrToSecondDate(formDTO.getSignUpEndTime()));
actInfoEntity.setSignInStartTime(DateUtils.minStrToSecondDate(formDTO.getSignInStartTime()));
actInfoEntity.setSignInEndTime(DateUtils.minStrToSecondDate(formDTO.getSignInEndTime()));
actInfoEntity.setActStartTime(DateUtils.minStrToSecondDate(formDTO.getActStartTime()));
actInfoEntity.setActEndTime(DateUtils.minStrToSecondDate(formDTO.getActEndTime()));
//活动名额类型(0-不限名额,1-固定名额)
if(actInfoEntity.getActQuota()==0){
actInfoEntity.setActQuotaCategory(false);
}else{
actInfoEntity.setActQuotaCategory(true);
}
Date nowDate=new Date();
actInfoEntity.setSignUpStartTime(nowDate);
actInfoEntity.setCreatedTime(nowDate);
actInfoEntity.setUpdatedTime(nowDate);
actInfoEntity.setActStatus(ActConstant.ACT_STATUS_PUBLISHED);
//1已经总结0未总结
actInfoEntity.setSummaryFlag(false);
if(ActConstant.SPONSOR_AGENCY.equals(actInfoEntity.getSponsorType())){
//调用gov_org服务获取当前组织的上一级机关id
Result<CustomerAgencyDTO> result=govOrgOpenFeignClient.getAgencyById(formDTO.getSponsorId());
if(result.success()&&null!=result.getData()){
actInfoEntity.setPid(result.getData().getPid());
}else{
logger.warn("重新发布活动,根据agencyId查询组织信息失败,agencyId=",formDTO.getSponsorId());
}
}else{
actInfoEntity.setPid(StrConstant.EPMETY_STR);
}
return actInfoEntity;
}
/** /**
* @return java.util.List<com.epmet.entity.ActContentEntity> * @return java.util.List<com.epmet.entity.ActContentEntity>
* @param actContent * @param actContent
@ -864,4 +966,68 @@ public class WorkActServiceImpl implements WorkActService {
resultDTO.setActContent(actContent); resultDTO.setActContent(actContent);
return resultDTO; return resultDTO;
} }
/**
* @param rePublishFormDTO
* @return com.epmet.dto.result.work.PublishActResultDTO
* @author yinzuomei
* @description 重新发布活动
* @Date 2020/7/27 13:55
**/
@Override
public PublishActResultDTO rePublish(RePublishFormDTO rePublishFormDTO) {
ActInfoDTO originalActInfo=actInfoService.get(rePublishFormDTO.getActId());
if(null==originalActInfo){
logger.error("act_info is null");
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode());
}
if(!originalActInfo.getCreatedBy().equals(loginUserUtil.getLoginUserId())){
throw new RenException(EpmetErrorCode.REQUIRE_PERMISSION.getCode());
}
//校验参数
this.checkRePublishFormDTO(rePublishFormDTO);
PublishActResultDTO publishActResultDTO=new PublishActResultDTO();
//内容审核(活动标题、招募要求、活动内容图文)
this.auditRePublishAct(rePublishFormDTO);
logger.info("重新发布活动,审核成功");
//构造属性保存活动属性,活动内容
ActInfoEntity newActInfoEntity=this.constructRePublishActInfo(rePublishFormDTO);
newActInfoEntity.setId(rePublishFormDTO.getActId());
actInfoDao.updateById(newActInfoEntity);
//删除原来的
actContentDao.updateDelFlagByActId(rePublishFormDTO.getActId());
//插入编辑后的活动详情
List<ActContentEntity> actContentEntityList=this.constructActContent(rePublishFormDTO.getActContent(),rePublishFormDTO.getActId());
for(ActContentEntity actContentEntity:actContentEntityList){
actContentDao.insert(actContentEntity);
}
//插入一条操作日志
ActOperationRecEntity actOperationRecEntity=new ActOperationRecEntity();
actOperationRecEntity.setActId(rePublishFormDTO.getActId());
actOperationRecEntity.setType(ActConstant.ACT_OPER_TYPE_UPDATE);
actOperationRecEntity.setNoticeUser(rePublishFormDTO.getNoticePassedPeople());
actOperationRecEntity.setRemark(StrConstant.EPMETY_STR);
actOperationRecDao.insert(actOperationRecEntity);
//删除所有的草稿
this.deleteDraft();
publishActResultDTO.setActId(rePublishFormDTO.getActId());
//发送消息通知-暂时不做了
/*if(rePublishFormDTO.getNoticePassedPeople()){
this.noticePassedPeople(originalActInfo,newActInfoEntity);
}*/
return publishActResultDTO;
}
private void noticePassedPeople(ActInfoDTO originalActInfo, ActInfoEntity newActInfoEntity) {
/* List<ActUserRelationDTO> actUserRelationDTOList=actUserRelationDao.selectAuditingAndPassedList(originalActInfo.getId());
if(null==actUserRelationDTOList||actUserRelationDTOList.size()<1){
logger.info("不存在待审核人员、已经审核用户,无需发送站内信");
return;
}
String originalTitle=originalActInfo.getTitle();
//活动地点、活动预计开始时间、活动预计结束时间、活动积分、签到时间开始、签到结束时间、签到地点*/
}
} }

8
epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/ActContentDao.xml

@ -29,4 +29,12 @@
AND ac.ACT_ID = #{actId} AND ac.ACT_ID = #{actId}
order by orderNum asc order by orderNum asc
</select> </select>
<!-- 根据活动id,将原来的活动详情删除,del_flag=1-->
<update id="updateDelFlagByActId" parameterType="java.lang.String">
UPDATE act_content ac
SET ac.DEL_FLAG = '1'
WHERE
ac.ACT_ID = #{actId}
</update>
</mapper> </mapper>

13
epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/ActUserRelationDao.xml

@ -252,4 +252,17 @@
and aur.REWARD_FLAG=#{rewardFlag} and aur.REWARD_FLAG=#{rewardFlag}
AND aur.ACT_ID = #{actId} AND aur.ACT_ID = #{actId}
</select> </select>
<!-- 根据活动id,查询待审核+已经审核通过的人员 -->
<select id="selectAuditingAndPassedList" parameterType="java.lang.String" resultType="com.epmet.dto.ActUserRelationDTO">
SELECT
aur.id,
aur.USER_ID
FROM
act_user_relation aur
WHERE
aur.DEL_FLAG = '0'
AND ( aur.STATUS = 'auditing' OR aur.`STATUS` = 'passed' )
AND aur.ACT_ID = #{actId}
</select>
</mapper> </mapper>

Loading…
Cancel
Save