From 7d3f9708c8dbb97044cbe83e37e48270c33bc11e Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Tue, 20 Apr 2021 15:59:21 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AD=BE=E5=88=B0=E3=80=81=E7=AD=BE=E5=88=B0?= =?UTF-8?q?=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tools/exception/EpmetErrorCode.java | 4 +- .../group/dto/act/form/SignInFormDTO.java | 47 ++++++++ .../group/dto/act/form/SignInRecFormDTO.java | 25 ++++ .../dto/act/result/SignInRecResultDTO.java | 31 +++++ .../controller/ActSignInRecordController.java | 33 ++++++ .../modules/act/dao/ActSignInRecordDao.java | 10 ++ .../act/service/ActSignInRecordService.java | 19 ++++ .../impl/ActSignInRecordServiceImpl.java | 107 ++++++++++++++++++ .../service/impl/GroupActInfoServiceImpl.java | 11 +- .../mapper/act/ActSignInRecordDao.xml | 11 ++ 10 files changed, 290 insertions(+), 8 deletions(-) create mode 100644 epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/act/form/SignInFormDTO.java create mode 100644 epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/act/form/SignInRecFormDTO.java create mode 100644 epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/act/result/SignInRecResultDTO.java diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java index 49514ffd1b..90ed153985 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java @@ -171,7 +171,9 @@ public enum EpmetErrorCode { PARTY_MEMBER_JOIN_BRANCH_GROUP(8908,"您不是党员,不能加入支部小组"), GROUP_ACT_CAN_NOT_CANCEL(8909,"活动%s,不能取消"), //8910的msg动态赋值 - GROUP_ACT_CAN_NOT_COMMENT(8910,"当前活动,不能评论"); + GROUP_ACT_CAN_NOT_COMMENT(8910,"当前活动,不能评论"), + SIGN_IN_TIME_NOT_START(8911,"未到签到时间,不允许签到"), + SIGN_IN_TIME_PASSED(8912,"当前时间已超过签到时间"); private int code; private String msg; diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/act/form/SignInFormDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/act/form/SignInFormDTO.java new file mode 100644 index 0000000000..af00808a0f --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/act/form/SignInFormDTO.java @@ -0,0 +1,47 @@ +package com.epmet.resi.group.dto.act.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 007、签到 + * + * @author yinzuomei@elink-cn.com + * @date 2021/4/20 15:14 + */ +@Data +public class SignInFormDTO implements Serializable { + private static final long serialVersionUID = 3632452994910057034L; + + public interface AddUserInternalGroup { + } + + @NotBlank(message = "活动id不能为空",groups = AddUserInternalGroup.class) + private String groupActId; + + /** + * 签到地址 + */ + @NotBlank(message = "签到地址不能为空",groups = AddUserInternalGroup.class) + private String signInAddress; + /** + * 签到地点-经度 + */ + private BigDecimal longitude; + + /** + * 签到地点-纬度 + */ + private BigDecimal latitude; + + @NotBlank(message = "tokenDto获取userId为空", groups = AddUserInternalGroup.class) + private String userId; + + @NotBlank(message = "tokenDto获取customerId为空", groups = AddUserInternalGroup.class) + private String customerId; + +} + diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/act/form/SignInRecFormDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/act/form/SignInRecFormDTO.java new file mode 100644 index 0000000000..95af7d5f77 --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/act/form/SignInRecFormDTO.java @@ -0,0 +1,25 @@ +package com.epmet.resi.group.dto.act.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 009、签到记录列表 + * + * @author yinzuomei@elink-cn.com + * @date 2021/4/20 15:42 + */ +@Data +public class SignInRecFormDTO implements Serializable { + private static final long serialVersionUID = -144395799437468448L; + + public interface AddUserInternalGroup { + } + + @NotBlank(message = "groupActId不能为空", groups = AddUserInternalGroup.class) + private String groupActId; + private Integer pageNo; + private Integer pageSize; +} diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/act/result/SignInRecResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/act/result/SignInRecResultDTO.java new file mode 100644 index 0000000000..0bdb2b17d0 --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/act/result/SignInRecResultDTO.java @@ -0,0 +1,31 @@ +package com.epmet.resi.group.dto.act.result; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * 009、签到记录列表 + * + * @author yinzuomei@elink-cn.com + * @date 2021/4/20 15:43 + */ +@Data +public class SignInRecResultDTO implements Serializable { + private static final long serialVersionUID = -2847848186325667663L; + private Integer signedInNum; + private Integer shouldAttend; + private List list; + + @NoArgsConstructor + @Data + public static class SignInDetail { + private String signUserId; + private String signUserName; + private Date signInTime; + private String signInAddress; + } +} diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/controller/ActSignInRecordController.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/controller/ActSignInRecordController.java index 7bece885f4..3e8883dbd6 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/controller/ActSignInRecordController.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/controller/ActSignInRecordController.java @@ -23,7 +23,10 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.modules.act.service.ActSignInRecordService; import com.epmet.resi.group.dto.act.form.SetSignTimeFormDTO; +import com.epmet.resi.group.dto.act.form.SignInFormDTO; +import com.epmet.resi.group.dto.act.form.SignInRecFormDTO; import com.epmet.resi.group.dto.act.result.SetSignTimeResultDTO; +import com.epmet.resi.group.dto.act.result.SignInRecResultDTO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -59,4 +62,34 @@ public class ActSignInRecordController { ValidatorUtils.validateEntity(formDTO, SetSignTimeFormDTO.AddUserInternalGroup.class); return new Result().ok(actSignInRecordService.setSignTime(formDTO)); } + + /** + * @return com.epmet.commons.tools.utils.Result + * @param tokenDto + * @param formDTO + * @author yinzuomei + * @description 007、签到 + * @Date 2021/4/20 15:19 + **/ + @PostMapping("signin") + public Result signIn(@LoginUser TokenDto tokenDto, @RequestBody SignInFormDTO formDTO){ + formDTO.setUserId(tokenDto.getUserId()); + formDTO.setCustomerId(tokenDto.getCustomerId()); + ValidatorUtils.validateEntity(formDTO,SignInFormDTO.AddUserInternalGroup.class); + actSignInRecordService.signIn(formDTO); + return new Result(); + } + + /** + * @return com.epmet.commons.tools.utils.Result + * @param formDTO + * @author yinzuomei + * @description 009、签到记录列表 + * @Date 2021/4/20 15:46 + **/ + @PostMapping("reclist") + public Result querySignRecList(@RequestBody SignInRecFormDTO formDTO){ + ValidatorUtils.validateEntity(formDTO,SignInRecFormDTO.AddUserInternalGroup.class); + return new Result().ok(actSignInRecordService.querySignRecList(formDTO)); + } } \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/dao/ActSignInRecordDao.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/dao/ActSignInRecordDao.java index 1d103db768..6e53fe6bef 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/dao/ActSignInRecordDao.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/dao/ActSignInRecordDao.java @@ -22,6 +22,8 @@ import com.epmet.modules.act.entity.ActSignInRecordEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * 组织活动签到记录 * @@ -39,4 +41,12 @@ public interface ActSignInRecordDao extends BaseDao { * @return int */ int selectCountUserRec(@Param("groupActId")String groupActId, @Param("signUserId")String signUserId); + + /** + * 查询活动的签到记录 + * + * @param groupActId + * @return int + */ + List selectListByGroupActId(String groupActId); } \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/ActSignInRecordService.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/ActSignInRecordService.java index eb62f8d39a..da979840b0 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/ActSignInRecordService.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/ActSignInRecordService.java @@ -20,7 +20,10 @@ package com.epmet.modules.act.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.modules.act.entity.ActSignInRecordEntity; import com.epmet.resi.group.dto.act.form.SetSignTimeFormDTO; +import com.epmet.resi.group.dto.act.form.SignInFormDTO; +import com.epmet.resi.group.dto.act.form.SignInRecFormDTO; import com.epmet.resi.group.dto.act.result.SetSignTimeResultDTO; +import com.epmet.resi.group.dto.act.result.SignInRecResultDTO; /** * 组织活动签到记录 @@ -46,4 +49,20 @@ public interface ActSignInRecordService extends BaseService signInEndTime) { + //未签到、已经超过了签到时间 + throw new RenException(EpmetErrorCode.SIGN_IN_TIME_PASSED.getCode(),EpmetErrorCode.SIGN_IN_TIME_PASSED.getMsg()); + } + + //未签到、在签到时间范围内的,可以签到 + GroupActInfoEntity groupActInfoEntity = ConvertUtils.sourceToTarget(originalActInfo, GroupActInfoEntity.class); + groupActInfoEntity.setSignedInNum(originalActInfo.getSignedInNum() + NumConstant.ONE); + groupActInfoDao.updateById(groupActInfoEntity); + + ActSignInRecordEntity insertEntity=new ActSignInRecordEntity(); + insertEntity.setCustomerId(formDTO.getCustomerId()); + insertEntity.setGroupActId(formDTO.getGroupActId()); + insertEntity.setSignUserId(formDTO.getUserId()); + insertEntity.setSignInAddress(formDTO.getSignInAddress()); + insertEntity.setLatitude(formDTO.getLatitude()); + insertEntity.setLongitude(formDTO.getLongitude()); + baseDao.insert(insertEntity); + } + + /** + * 009、签到记录列表 + * + * @param formDTO + * @return com.epmet.resi.group.dto.act.result.SignInRecResultDTO + */ + @Override + public SignInRecResultDTO querySignRecList(SignInRecFormDTO formDTO) { + GroupActInfoDTO originalActInfo = groupActInfoService.getGroupActInfoDTO(formDTO.getGroupActId()); + SignInRecResultDTO resultDTO = new SignInRecResultDTO(); + resultDTO.setSignedInNum(originalActInfo.getSignedInNum()); + resultDTO.setShouldAttend(originalActInfo.getShouldAttend()); + List list = baseDao.selectListByGroupActId(formDTO.getGroupActId()); + if (!CollectionUtils.isEmpty(list)) { + //2.调用user服务,查询人员基础数据 + List userIdList = list.stream().map(ActSignInRecordEntity::getSignUserId).collect(Collectors.toList()); + Result> result = epmetUserOpenFeignClient.queryUserBaseInfo(userIdList); + if (!result.success()) { + throw new RenException("调用user服务,获取用户基础数据失败"); + } + if (!CollectionUtils.isEmpty(result.getData())) { + List signInDetailList = new ArrayList<>(); + //3.遍历封装数据并返回 + list.forEach(l -> { + result.getData().forEach(user -> { + if (l.getSignUserId().equals(user.getUserId())) { + SignInRecResultDTO.SignInDetail signInDetail = new SignInRecResultDTO.SignInDetail(); + signInDetail.setSignInAddress(l.getSignInAddress()); + signInDetail.setSignInTime(l.getCreatedTime()); + signInDetail.setSignUserId(l.getSignUserId()); + signInDetail.setSignUserName(user.getSurname().concat(user.getName())); + } + }); + }); + resultDTO.setList(signInDetailList); + } + } + return resultDTO; + } } \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/impl/GroupActInfoServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/impl/GroupActInfoServiceImpl.java index 9a5ebaf733..ecf6f045df 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/impl/GroupActInfoServiceImpl.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/impl/GroupActInfoServiceImpl.java @@ -174,15 +174,12 @@ public class GroupActInfoServiceImpl extends BaseServiceImpl + + + \ No newline at end of file