Browse Source

签到、签到记录

dev_shibei_match
yinzuomei 4 years ago
parent
commit
7d3f9708c8
  1. 4
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
  2. 47
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/act/form/SignInFormDTO.java
  3. 25
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/act/form/SignInRecFormDTO.java
  4. 31
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/act/result/SignInRecResultDTO.java
  5. 33
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/controller/ActSignInRecordController.java
  6. 10
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/dao/ActSignInRecordDao.java
  7. 19
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/ActSignInRecordService.java
  8. 107
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/impl/ActSignInRecordServiceImpl.java
  9. 11
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/impl/GroupActInfoServiceImpl.java
  10. 11
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/act/ActSignInRecordDao.xml

4
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,"您不是党员,不能加入支部小组"), PARTY_MEMBER_JOIN_BRANCH_GROUP(8908,"您不是党员,不能加入支部小组"),
GROUP_ACT_CAN_NOT_CANCEL(8909,"活动%s,不能取消"), GROUP_ACT_CAN_NOT_CANCEL(8909,"活动%s,不能取消"),
//8910的msg动态赋值 //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 int code;
private String msg; private String msg;

47
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;
}

25
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;
}

31
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<SignInDetail> list;
@NoArgsConstructor
@Data
public static class SignInDetail {
private String signUserId;
private String signUserName;
private Date signInTime;
private String signInAddress;
}
}

33
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.commons.tools.validator.ValidatorUtils;
import com.epmet.modules.act.service.ActSignInRecordService; import com.epmet.modules.act.service.ActSignInRecordService;
import com.epmet.resi.group.dto.act.form.SetSignTimeFormDTO; 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.SetSignTimeResultDTO;
import com.epmet.resi.group.dto.act.result.SignInRecResultDTO;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
@ -59,4 +62,34 @@ public class ActSignInRecordController {
ValidatorUtils.validateEntity(formDTO, SetSignTimeFormDTO.AddUserInternalGroup.class); ValidatorUtils.validateEntity(formDTO, SetSignTimeFormDTO.AddUserInternalGroup.class);
return new Result<SetSignTimeResultDTO>().ok(actSignInRecordService.setSignTime(formDTO)); return new Result<SetSignTimeResultDTO>().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<com.epmet.resi.group.dto.act.result.SignInRecResultDTO>
* @param formDTO
* @author yinzuomei
* @description 009签到记录列表
* @Date 2021/4/20 15:46
**/
@PostMapping("reclist")
public Result<SignInRecResultDTO> querySignRecList(@RequestBody SignInRecFormDTO formDTO){
ValidatorUtils.validateEntity(formDTO,SignInRecFormDTO.AddUserInternalGroup.class);
return new Result<SignInRecResultDTO>().ok(actSignInRecordService.querySignRecList(formDTO));
}
} }

10
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.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* 组织活动签到记录 * 组织活动签到记录
* *
@ -39,4 +41,12 @@ public interface ActSignInRecordDao extends BaseDao<ActSignInRecordEntity> {
* @return int * @return int
*/ */
int selectCountUserRec(@Param("groupActId")String groupActId, @Param("signUserId")String signUserId); int selectCountUserRec(@Param("groupActId")String groupActId, @Param("signUserId")String signUserId);
/**
* 查询活动的签到记录
*
* @param groupActId
* @return int
*/
List<ActSignInRecordEntity> selectListByGroupActId(String groupActId);
} }

19
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.commons.mybatis.service.BaseService;
import com.epmet.modules.act.entity.ActSignInRecordEntity; import com.epmet.modules.act.entity.ActSignInRecordEntity;
import com.epmet.resi.group.dto.act.form.SetSignTimeFormDTO; 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.SetSignTimeResultDTO;
import com.epmet.resi.group.dto.act.result.SignInRecResultDTO;
/** /**
* 组织活动签到记录 * 组织活动签到记录
@ -46,4 +49,20 @@ public interface ActSignInRecordService extends BaseService<ActSignInRecordEntit
* @return com.epmet.resi.group.dto.act.result.SetSignTimeResultDTO * @return com.epmet.resi.group.dto.act.result.SetSignTimeResultDTO
*/ */
SetSignTimeResultDTO setSignTime(SetSignTimeFormDTO formDTO); SetSignTimeResultDTO setSignTime(SetSignTimeFormDTO formDTO);
/**
* 007签到
*
* @param formDTO
* @return
*/
void signIn(SignInFormDTO formDTO);
/**
* 009签到记录列表
*
* @param formDTO
* @return com.epmet.resi.group.dto.act.result.SignInRecResultDTO
*/
SignInRecResultDTO querySignRecList(SignInRecFormDTO formDTO);
} }

107
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/impl/ActSignInRecordServiceImpl.java

@ -18,10 +18,14 @@
package com.epmet.modules.act.service.impl; package com.epmet.modules.act.service.impl;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.result.UserBaseInfoResultDTO;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.modules.act.dao.ActSignInRecordDao; import com.epmet.modules.act.dao.ActSignInRecordDao;
import com.epmet.modules.act.dao.GroupActInfoDao; import com.epmet.modules.act.dao.GroupActInfoDao;
import com.epmet.modules.act.entity.ActSignInRecordEntity; import com.epmet.modules.act.entity.ActSignInRecordEntity;
@ -29,16 +33,26 @@ import com.epmet.modules.act.entity.GroupActInfoEntity;
import com.epmet.modules.act.service.ActSignInCodeService; import com.epmet.modules.act.service.ActSignInCodeService;
import com.epmet.modules.act.service.ActSignInRecordService; import com.epmet.modules.act.service.ActSignInRecordService;
import com.epmet.modules.act.service.GroupActInfoService; import com.epmet.modules.act.service.GroupActInfoService;
import com.epmet.modules.constant.GroupActConstant;
import com.epmet.modules.member.service.ResiGroupMemberService; import com.epmet.modules.member.service.ResiGroupMemberService;
import com.epmet.resi.group.dto.act.ActSignInCodeDTO; import com.epmet.resi.group.dto.act.ActSignInCodeDTO;
import com.epmet.resi.group.dto.act.GroupActInfoDTO; import com.epmet.resi.group.dto.act.GroupActInfoDTO;
import com.epmet.resi.group.dto.act.form.SetSignTimeFormDTO; 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.SetSignTimeResultDTO;
import com.epmet.resi.group.dto.act.result.SignInRecResultDTO;
import com.epmet.resi.group.dto.member.ResiGroupMemberDTO; import com.epmet.resi.group.dto.member.ResiGroupMemberDTO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/** /**
* 组织活动签到记录 * 组织活动签到记录
@ -57,6 +71,8 @@ public class ActSignInRecordServiceImpl extends BaseServiceImpl<ActSignInRecordD
private GroupActInfoDao groupActInfoDao; private GroupActInfoDao groupActInfoDao;
@Autowired @Autowired
private ActSignInCodeService actSignInCodeService; private ActSignInCodeService actSignInCodeService;
@Autowired
private EpmetUserOpenFeignClient epmetUserOpenFeignClient;
/** /**
* 查询当前用户是否签到 * 查询当前用户是否签到
* *
@ -117,6 +133,97 @@ public class ActSignInRecordServiceImpl extends BaseServiceImpl<ActSignInRecordD
} }
} }
//todo //todo
//别忘了插入数据库act_sign_in_code
return "重新生成新的url"; return "重新生成新的url";
} }
/**
* 007签到
*
* @param formDTO
* @return
*/
@Transactional(rollbackFor = Exception.class)
@Override
public void signIn(SignInFormDTO formDTO) {
if(queryUserSignInRec(formDTO.getGroupActId(),formDTO.getUserId())){
//已经签到无需重复签到
log.warn(String.format("当前用户userId=%s,已经签到,groupActId=%s",formDTO.getUserId(),formDTO.getGroupActId()));
return;
}
GroupActInfoDTO originalActInfo = groupActInfoService.getGroupActInfoDTO(formDTO.getGroupActId());
//关闭、已取消不能签到
if (GroupActConstant.CLOSED.equals(originalActInfo.getStatus())) {
throw new RenException(EpmetErrorCode.GROUP_ACT_CAN_NOT_CANCEL.getCode(), "活动已关闭,不能签到");
} else if (GroupActConstant.CANCELED.equals(originalActInfo.getStatus())) {
throw new RenException(EpmetErrorCode.GROUP_ACT_CAN_NOT_CANCEL.getCode(), "活动已取消,不能签到");
}
Date nowDate=new Date();
long nowTime=nowDate.getTime();
long signInStartTime=originalActInfo.getSignInStartTime().getTime();
long signInEndTime=originalActInfo.getSignInEndTime().getTime();
if (nowTime < signInStartTime) {
//未到签到时间
throw new RenException(EpmetErrorCode.SIGN_IN_TIME_NOT_START.getCode(),EpmetErrorCode.SIGN_IN_TIME_NOT_START.getMsg());
} else if (nowTime > 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<ActSignInRecordEntity> list = baseDao.selectListByGroupActId(formDTO.getGroupActId());
if (!CollectionUtils.isEmpty(list)) {
//2.调用user服务,查询人员基础数据
List<String> userIdList = list.stream().map(ActSignInRecordEntity::getSignUserId).collect(Collectors.toList());
Result<List<UserBaseInfoResultDTO>> result = epmetUserOpenFeignClient.queryUserBaseInfo(userIdList);
if (!result.success()) {
throw new RenException("调用user服务,获取用户基础数据失败");
}
if (!CollectionUtils.isEmpty(result.getData())) {
List<SignInRecResultDTO.SignInDetail> 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;
}
} }

11
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<GroupActInfoDao, Gr
ActReadRecordEntity actReadRecordEntity=new ActReadRecordEntity(); ActReadRecordEntity actReadRecordEntity=new ActReadRecordEntity();
actReadRecordEntity.setCustomerId(customerId); actReadRecordEntity.setCustomerId(customerId);
actReadRecordEntity.setGroupActId(groupActId); actReadRecordEntity.setGroupActId(groupActId);
if(publishUserId.equals(memberDTO.getCustomerUserId())){ actReadRecordEntity.setRead(GroupActConstant.UN_READ);
//发布人默认是已读
actReadRecordEntity.setRead(GroupActConstant.READ);
}else{
actReadRecordEntity.setRead(GroupActConstant.UN_READ);
}
actReadRecordEntity.setUserId(memberDTO.getCustomerUserId()); actReadRecordEntity.setUserId(memberDTO.getCustomerUserId());
actReadRecordEntity.setShouldBeRead(Constant.YES); actReadRecordEntity.setShouldBeRead(Constant.YES);
list.add(actReadRecordEntity); if(!publishUserId.equals(memberDTO.getCustomerUserId())){
list.add(actReadRecordEntity);
}
}); });
return list; return list;
} }

11
epmet-module/resi-group/resi-group-server/src/main/resources/mapper/act/ActSignInRecordDao.xml

@ -15,4 +15,15 @@
AND acr.SIGN_USER_ID =#{signUserId} AND acr.SIGN_USER_ID =#{signUserId}
</select> </select>
<!-- 查询活动的签到记录 -->
<select id="selectListByGroupActId" resultType="com.epmet.modules.act.entity.ActSignInRecordEntity" parameterType="java.lang.String">
SELECT
*
FROM
act_sign_in_record acr
WHERE
acr.DEL_FLAG = '0'
AND acr.GROUP_ACT_ID = #{groupActId}
</select>
</mapper> </mapper>
Loading…
Cancel
Save