From 1cff30b8df84f6f11c4af00ac34ccda23a5b1148 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Tue, 21 Jul 2020 17:32:54 +0800 Subject: [PATCH] =?UTF-8?q?heart-work:=E4=BF=9D=E5=AD=98=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E8=8D=89=E7=A8=BFapi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/commons/tools/utils/DateUtils.java | 14 ++ .../dto/form/work/ActPreviewFormDTO.java | 26 +++ ...rmDTO.java => DraftActContentFormDTO.java} | 15 +- .../form/work/PublishActContentFormDTO.java | 36 +++++ .../dto/result/work/ActPreviewResultDTO.java | 16 ++ .../controller/WorkActDraftController.java | 35 +++- .../service/LatestActContentService.java | 10 ++ .../epmet/service/LatestActInfoService.java | 10 ++ .../epmet/service/WorkActDraftService.java | 15 +- .../impl/ActCustomizedServiceImpl.java | 1 + .../impl/LatestActContentServiceImpl.java | 13 ++ .../impl/LatestActInfoServiceImpl.java | 13 ++ .../service/impl/WorkActDraftServiceImpl.java | 151 +++++++++++++++++- .../resources/mapper/LatestActContentDao.xml | 4 +- .../resources/mapper/LatestActInfoDao.xml | 32 ++-- 15 files changed, 357 insertions(+), 34 deletions(-) create mode 100644 epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/ActPreviewFormDTO.java rename epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/{SaveActContentFormDTO.java => DraftActContentFormDTO.java} (79%) create mode 100644 epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/PublishActContentFormDTO.java create mode 100644 epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/ActPreviewResultDTO.java diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java index f79b22ccb5..e76c5a4c33 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java @@ -488,4 +488,18 @@ public class DateUtils { return format.format(timestamp); } + public static Date minStrToSecondDate(String minStr){ + if(StringUtils.isNotBlank(minStr)&&minStr.length()==16){ + String date=minStr.concat(":00"); + System.out.println(date); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + try { + return format.parse(date); + } catch (ParseException e) { + e.printStackTrace(); + } + } + return null; + } + } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/ActPreviewFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/ActPreviewFormDTO.java new file mode 100644 index 0000000000..57166c22f1 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/ActPreviewFormDTO.java @@ -0,0 +1,26 @@ +package com.epmet.dto.form.work; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 活动预览-查看活动详情 + * + * @author yinzuomei@elink-cn.com + * @date 2020/7/21 17:19 + */ +@Data +public class ActPreviewFormDTO implements Serializable { + private static final long serialVersionUID = -1603801389350245626L; + + public interface UserInternalGroup { + } + + /** + * 活动草稿id + */ + @NotBlank(message = "活动草稿id不能为空", groups = {UserInternalGroup.class}) + private String actDraftId; +} diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/SaveActContentFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/DraftActContentFormDTO.java similarity index 79% rename from epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/SaveActContentFormDTO.java rename to epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/DraftActContentFormDTO.java index 3117a66132..91bbae914b 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/SaveActContentFormDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/DraftActContentFormDTO.java @@ -13,19 +13,24 @@ import java.io.Serializable; * @date 2020/7/21 13:18 */ @Data -public class SaveActContentFormDTO implements Serializable { +public class DraftActContentFormDTO implements Serializable { private static final long serialVersionUID = 5236509944250440348L; - public interface UserInternalGroup {} - public interface UserShowGroup extends CustomerClientShowGroup {} + + public interface UserInternalGroup { + } + + public interface UserShowGroup extends CustomerClientShowGroup { + } + /** * 内容 */ - @NotBlank(message = "内容不能为空", groups = {UserShowGroup.class }) + @NotBlank(message = "内容不能为空", groups = {UserShowGroup.class}) private String content; /** * 内容类型 图片:img;文字:text */ - @NotBlank(message = "内容类型不能为空,图片:img;文字:text", groups = {UserInternalGroup.class }) + @NotBlank(message = "内容类型不能为空,图片:img;文字:text", groups = {UserInternalGroup.class}) private String contentType; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/PublishActContentFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/PublishActContentFormDTO.java new file mode 100644 index 0000000000..efe2592e7a --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/PublishActContentFormDTO.java @@ -0,0 +1,36 @@ +package com.epmet.dto.form.work; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 发布活动入参 + * + * @author yinzuomei@elink-cn.com + * @date 2020/7/21 16:21 + */ +@Data +public class PublishActContentFormDTO implements Serializable { + private static final long serialVersionUID = 7541780156596764819L; + + public interface UserInternalGroup { + } + + public interface UserShowGroup extends CustomerClientShowGroup { + } + + /** + * 内容 + */ + @NotBlank(message = "内容不能为空", groups = {UserShowGroup.class}) + private String content; + + /** + * 内容类型 图片:img;文字:text + */ + @NotBlank(message = "内容类型不能为空,图片:img;文字:text", groups = {UserInternalGroup.class}) + private String contentType; +} diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/ActPreviewResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/ActPreviewResultDTO.java new file mode 100644 index 0000000000..5b0aedee40 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/ActPreviewResultDTO.java @@ -0,0 +1,16 @@ +package com.epmet.dto.result.work; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 活动预览-查看活动详情返参修改 + * + * @author yinzuomei@elink-cn.com + * @date 2020/7/21 17:23 + */ +@Data +public class ActPreviewResultDTO implements Serializable { + private static final long serialVersionUID = 8655407962470027973L; +} diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/WorkActDraftController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/WorkActDraftController.java index 69645c02a5..73974c194d 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/WorkActDraftController.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/WorkActDraftController.java @@ -2,7 +2,10 @@ package com.epmet.controller; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; -import com.epmet.dto.form.work.SaveActInfoFormDTO; +import com.epmet.dto.form.work.ActPreviewFormDTO; +import com.epmet.dto.form.work.DraftActContentFormDTO; +import com.epmet.dto.form.work.DraftActInfoFormDTO; +import com.epmet.dto.result.work.ActPreviewResultDTO; import com.epmet.dto.result.work.LatestDraftActInfoResultDTO; import com.epmet.dto.result.work.PublishActInitResultDTO; import com.epmet.dto.result.work.SaveActDraftResultDTO; @@ -73,9 +76,35 @@ public class WorkActDraftController { * @Date 2020/7/21 14:00 **/ @PostMapping("saveact") - public Result saveAct(@RequestBody SaveActInfoFormDTO formDTO){ - ValidatorUtils.validateEntity(formDTO); + public Result saveAct(@RequestBody DraftActInfoFormDTO formDTO){ + //起码活动标题不能为空 + ValidatorUtils.validateEntity(formDTO, DraftActInfoFormDTO.AddDraftUserShowGroup.class, + DraftActInfoFormDTO.AddUserInternalGroup.class); + //如果录入了活动内容,需要校验 content、contentType + if (null != formDTO.getActContent() && formDTO.getActContent().size() > 0) { + for(DraftActContentFormDTO actContentFormDTO:formDTO.getActContent()){ + ValidatorUtils.validateEntity(actContentFormDTO, + DraftActContentFormDTO.UserShowGroup.class, + DraftActContentFormDTO.UserInternalGroup.class + ); + } + } SaveActDraftResultDTO resultDTO=workActDraftService.saveAct(formDTO); return new Result().ok(resultDTO); } + + /** + * @return com.epmet.commons.tools.utils.Result + * @param formDTO + * @author yinzuomei + * @description 预览-查看活动详情 + * @Date 2020/7/21 17:24 + **/ + @PostMapping("preview") + public Result previewActDetail(@RequestBody ActPreviewFormDTO formDTO){ + ValidatorUtils.validateEntity(formDTO,ActPreviewFormDTO.UserInternalGroup.class); + ActPreviewResultDTO resultDTO=workActDraftService.previewActDetail(formDTO); + return new Result().ok(resultDTO); + } + } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActContentService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActContentService.java index cc56738beb..c33aea0235 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActContentService.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActContentService.java @@ -74,6 +74,16 @@ public interface LatestActContentService extends BaseService dtoList); + /** * 默认更新 * diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActInfoService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActInfoService.java index 347fe62c5b..2de8222a44 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActInfoService.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActInfoService.java @@ -74,6 +74,16 @@ public interface LatestActInfoService extends BaseService { */ void save(LatestActInfoDTO dto); + /** + * 默认保存,返回主键 + * + * @param dto + * @return void + * @author generator + * @date 2020-07-19 + */ + String saveOrUpdateLatestActInfoDTO(LatestActInfoDTO dto); + /** * 默认更新 * diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/WorkActDraftService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/WorkActDraftService.java index 6e56268955..816305db8c 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/WorkActDraftService.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/WorkActDraftService.java @@ -1,6 +1,8 @@ package com.epmet.service; -import com.epmet.dto.form.work.SaveActInfoFormDTO; +import com.epmet.dto.form.work.ActPreviewFormDTO; +import com.epmet.dto.form.work.DraftActInfoFormDTO; +import com.epmet.dto.result.work.ActPreviewResultDTO; import com.epmet.dto.result.work.LatestDraftActInfoResultDTO; import com.epmet.dto.result.work.PublishActInitResultDTO; import com.epmet.dto.result.work.SaveActDraftResultDTO; @@ -47,5 +49,14 @@ public interface WorkActDraftService { * @description 预览按下-调用此接口保存活动信息、活动内容 * @Date 2020/7/21 14:00 **/ - SaveActDraftResultDTO saveAct(SaveActInfoFormDTO formDTO); + SaveActDraftResultDTO saveAct(DraftActInfoFormDTO formDTO); + + /** + * @return com.epmet.dto.result.work.ActPreviewResultDTO + * @param formDTO + * @author yinzuomei + * @description 预览-查看活动详情 + * @Date 2020/7/21 17:24 + **/ + ActPreviewResultDTO previewActDetail(ActPreviewFormDTO formDTO); } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActCustomizedServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActCustomizedServiceImpl.java index 1cd0baa3df..1ecc24fc9b 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActCustomizedServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActCustomizedServiceImpl.java @@ -131,6 +131,7 @@ public class ActCustomizedServiceImpl extends BaseServiceImpl dtoList) { + //先删除之前的 + this.deleteByActId(dtoList.get(0).getActId()); + //再插入新的 + for(LatestActContentDTO dto:dtoList){ + LatestActContentEntity entity = ConvertUtils.sourceToTarget(dto, LatestActContentEntity.class); + insert(entity); + } + } + @Override @Transactional(rollbackFor = Exception.class) public void update(LatestActContentDTO dto) { @@ -112,6 +124,7 @@ public class LatestActContentServiceImpl extends BaseServiceImpl actContentList=latestActContentService.selectActContentList(latestAct.getActDraftId()); latestAct.setActContentList(actContentList); } + return latestAct; }else{ logger.warn("loginUserUtil.getLoginUserId()获取当前用户id为空"); } @@ -100,7 +106,140 @@ public class WorkActDraftServiceImpl implements WorkActDraftService { * @Date 2020/7/21 14:00 **/ @Override - public SaveActDraftResultDTO saveAct(SaveActInfoFormDTO formDTO) { + public SaveActDraftResultDTO saveAct(DraftActInfoFormDTO formDTO) { + //保存活动属性 + LatestActInfoDTO latestActInfoDTO=this.constructLatestActInfoDTO(formDTO); + //如果存在草稿id,则更新 + String actDraftId=latestActInfoService.saveOrUpdateLatestActInfoDTO(latestActInfoDTO); + if(null!=formDTO.getActContent()&&formDTO.getActContent().size()>0){ + //保存活动内容 + List actContentList=this.constructLatestActContent(formDTO.getActContent(),actDraftId); + //删除之前的内容 + latestActContentService.saveLatestActContentDTOList(actContentList); + } + SaveActDraftResultDTO resultDTO=new SaveActDraftResultDTO(); + resultDTO.setActDraftId(actDraftId); + return resultDTO; + } + + /** + * @param formDTO + * @return com.epmet.dto.result.work.ActPreviewResultDTO + * @author yinzuomei + * @description 预览-查看活动详情 + * @Date 2020/7/21 17:24 + **/ + @Override + public ActPreviewResultDTO previewActDetail(ActPreviewFormDTO formDTO) { return null; } + + private List constructLatestActContent(List actContent,String actDraftId) { + List list=new ArrayList<>(); + int orderNum=1; + for(DraftActContentFormDTO actContentFormDTO:actContent){ + LatestActContentDTO latestAct=new LatestActContentDTO(); + latestAct.setActId(actDraftId); + latestAct.setContent(actContentFormDTO.getContent()); + latestAct.setContentType(actContentFormDTO.getContentType()); + latestAct.setOrderNum(orderNum); + list.add(latestAct); + orderNum++; + } + return list; + } + + private LatestActInfoDTO constructLatestActInfoDTO(DraftActInfoFormDTO formDTO) { + LatestActInfoDTO latestActInfoDTO=new LatestActInfoDTO(); + if(StringUtils.isNotBlank(formDTO.getActDraftId())){ + logger.info("修改活动草稿actDraftId",formDTO.getActDraftId()); + latestActInfoDTO.setId(formDTO.getActDraftId()); + } + latestActInfoDTO.setCustomerId(formDTO.getCustomerId()); + //活动标题 + latestActInfoDTO.setTitle(formDTO.getTitle()); + //活动封面 + latestActInfoDTO.setCoverPic(formDTO.getCoverPic()); + //报名开始时间latestActInfoDTO.setSignUpStartTime(new Date()); + //报名截止时间 + if(StringUtils.isNotBlank(formDTO.getSignUpEndTime())){ + Date signUpEndTime= DateUtils.minStrToSecondDate(formDTO.getSignUpEndTime()); + latestActInfoDTO.setSignUpEndTime(signUpEndTime); + } + //招募要求 + latestActInfoDTO.setRequirement(formDTO.getRequirement()); + //活动预计开始时间 + if(StringUtils.isNotBlank(formDTO.getActStartTime())){ + Date actStartTime= DateUtils.minStrToSecondDate(formDTO.getActStartTime()); + latestActInfoDTO.setActStartTime(actStartTime); + } + //活动预计结束时间 + if(StringUtils.isNotBlank(formDTO.getActEndTime())){ + Date actEndTime=DateUtils.minStrToSecondDate(formDTO.getActEndTime()); + latestActInfoDTO.setActEndTime(actEndTime); + } + //活动地点 + latestActInfoDTO.setActAddress(formDTO.getActAddress()); + //活动地点-经度 + if(StringUtils.isNotBlank(formDTO.getActLongitude())){ + latestActInfoDTO.setActLongitude(new BigDecimal(formDTO.getActLongitude())); + } + //活动地点-纬度 + if(StringUtils.isNotBlank(formDTO.getActLatitude())){ + latestActInfoDTO.setActLatitude(new BigDecimal(formDTO.getActLatitude())); + } + //打开开始时间 + if(StringUtils.isNotBlank(formDTO.getSignInStartTime())){ + Date signInStartTime=DateUtils.minStrToSecondDate(formDTO.getSignInStartTime()); + latestActInfoDTO.setSignInStartTime(signInStartTime); + } + //打开截止时间 + if(StringUtils.isNotBlank(formDTO.getSignInEndTime())){ + Date signInEndTime=DateUtils.minStrToSecondDate(formDTO.getSignInEndTime()); + latestActInfoDTO.setSignInEndTime(signInEndTime); + } + //活动签到打卡地点 + latestActInfoDTO.setSignInAddress(formDTO.getSignInAddress()); + //活动签到打卡位置经度 + if(StringUtils.isNotBlank(formDTO.getSignInLongitude())){ + latestActInfoDTO.setSignInLongitude(new BigDecimal(formDTO.getSignInLongitude())); + } + //活动签到打卡位置纬度 + if(StringUtils.isNotBlank(formDTO.getSignInLatitude())){ + latestActInfoDTO.setSignInLatitude(new BigDecimal(formDTO.getSignInLatitude())); + } + //活动签到打卡半径(单位:米) + if(null!=formDTO.getSignInRadius()){ + latestActInfoDTO.setSignInRadius(formDTO.getSignInRadius()); + } + //活动名额类型(0-不限名额,1-固定名额) + if(null!=formDTO.getActQuota()&&formDTO.getActQuota()==0){ + latestActInfoDTO.setActQuotaCategory(false); + }else{ + latestActInfoDTO.setActQuotaCategory(true); + } + //活动名额 + latestActInfoDTO.setActQuota(formDTO.getActQuota()); + //联系人 + latestActInfoDTO.setSponsorContacts(formDTO.getSponsorContacts()); + //联系电话 + latestActInfoDTO.setSponsorTel(formDTO.getSponsorTel()); + //主办方类型:网格主办:grid;组织主办:agency + latestActInfoDTO.setSponsorType(formDTO.getSponsorType()); + //主办方id(机关或网格的id) + latestActInfoDTO.setSponsorId(formDTO.getSponsorId()); + //活动主办方名称(机关或网格的名称) + latestActInfoDTO.setSponsorName(formDTO.getSponsorName()); + //如果以网格名义发布,存储空字符串"" + latestActInfoDTO.setSponsorType(formDTO.getSponsorType()); + //活动奖励积分 + latestActInfoDTO.setReward(formDTO.getReward()); + //身份限制:1只有志愿者才可以参加活动0不限制志愿者身份 + latestActInfoDTO.setVolunteerLimit(formDTO.getVolunteerLimit()); + //审核开关:1报名人员需要人工审核0不需要 + latestActInfoDTO.setAuditSwitch(formDTO.getAuditSwitch()); + return latestActInfoDTO; + } + + } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LatestActContentDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LatestActContentDao.xml index 61e18e4f89..44733dcca7 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LatestActContentDao.xml +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LatestActContentDao.xml @@ -21,8 +21,8 @@ UPDATE latest_act_content SET DEL_FLAG = '1' - WHERE - ACT_ID = #{actId} + WHERE DEL_FLAG = '0' + AND ACT_ID = #{actId} diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LatestActInfoDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LatestActInfoDao.xml index 9c860a03b2..e8d11c7b25 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LatestActInfoDao.xml +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LatestActInfoDao.xml @@ -8,20 +8,20 @@ - - + + - - - - - - + + + + + + @@ -57,20 +57,20 @@ - - + + - - - - - - + + + + + +