Browse Source

获取签到小程序码

dev_shibei_match
yinzuomei 4 years ago
parent
commit
59ec40e6cd
  1. 31
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/act/form/BuildSignInCodeFormDTO.java
  2. 14
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/act/form/BuildSignInCodeResultDTO.java
  3. 1
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/act/result/SetSignTimeResultDTO.java
  4. 19
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/controller/ActSignInRecordController.java
  5. 3
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/ActSignInCodeService.java
  6. 12
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/ActSignInRecordService.java
  7. 5
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/impl/ActSignInCodeServiceImpl.java
  8. 98
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/impl/ActSignInRecordServiceImpl.java
  9. 5
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/utils/ModuleConstant.java

31
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/act/form/BuildSignInCodeFormDTO.java

@ -0,0 +1,31 @@
package com.epmet.resi.group.dto.act.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 018获取签到码图片
*
* @author yinzuomei@elink-cn.com
* @date 2021/4/21 18:01
*/
@Data
public class BuildSignInCodeFormDTO implements Serializable {
private static final long serialVersionUID = -2806512125925383053L;
public interface AddUserInternalGroup {
}
@NotBlank(message = "groupActId不能为空", groups = AddUserInternalGroup.class)
private String groupActId;
/**
* 当前用户id
*/
@NotBlank(message = "tokenDto获取userId为空", groups = AddUserInternalGroup.class)
private String userId;
private String customerId;
}

14
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/act/form/BuildSignInCodeResultDTO.java

@ -0,0 +1,14 @@
package com.epmet.resi.group.dto.act.form;
import lombok.Data;
/**
* 018获取签到码图片
*
* @author yinzuomei@elink-cn.com
* @date 2021/4/21 18:13
*/
@Data
public class BuildSignInCodeResultDTO {
private String signInCodeUrl;
}

1
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/act/result/SetSignTimeResultDTO.java

@ -18,5 +18,4 @@ public class SetSignTimeResultDTO implements Serializable {
private String groupActId; private String groupActId;
private Date signInStartTime; private Date signInStartTime;
private Date signInEndTime; private Date signInEndTime;
private String signInCodeUrl;
} }

19
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/controller/ActSignInRecordController.java

@ -22,9 +22,7 @@ import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result; 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.*;
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.act.result.SignInRecResultDTO;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -92,4 +90,19 @@ public class ActSignInRecordController {
ValidatorUtils.validateEntity(formDTO,SignInRecFormDTO.AddUserInternalGroup.class); ValidatorUtils.validateEntity(formDTO,SignInRecFormDTO.AddUserInternalGroup.class);
return new Result<SignInRecResultDTO>().ok(actSignInRecordService.querySignRecList(formDTO)); return new Result<SignInRecResultDTO>().ok(actSignInRecordService.querySignRecList(formDTO));
} }
/**
* @param tokenDto
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<com.epmet.resi.group.dto.act.ActSignInCodeDTO>
* @author yinzuomei
* @description 018获取签到码图片
* @Date 2021/4/21 18:05
**/
@PostMapping("geturl")
public Result<BuildSignInCodeResultDTO> getSignInUrl(@LoginUser TokenDto tokenDto, @RequestBody BuildSignInCodeFormDTO formDTO) {
formDTO.setUserId(tokenDto.getUserId());
ValidatorUtils.validateEntity(formDTO, BuildSignInCodeFormDTO.AddUserInternalGroup.class);
return new Result<BuildSignInCodeResultDTO>().ok(actSignInRecordService.getSignInUrl(formDTO));
}
} }

3
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/ActSignInCodeService.java

@ -36,4 +36,7 @@ public interface ActSignInCodeService extends BaseService<ActSignInCodeEntity> {
* @return com.epmet.resi.group.dto.act.ActSignInCodeDTO * @return com.epmet.resi.group.dto.act.ActSignInCodeDTO
*/ */
ActSignInCodeDTO selectLastRec(String groupActId); ActSignInCodeDTO selectLastRec(String groupActId);
int saveActSignInCodeEntity(ActSignInCodeEntity actSignInCodeEntity);
} }

12
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/ActSignInRecordService.java

@ -19,9 +19,7 @@ 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.*;
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.act.result.SignInRecResultDTO;
@ -65,4 +63,12 @@ public interface ActSignInRecordService extends BaseService<ActSignInRecordEntit
* @return com.epmet.resi.group.dto.act.result.SignInRecResultDTO * @return com.epmet.resi.group.dto.act.result.SignInRecResultDTO
*/ */
SignInRecResultDTO querySignRecList(SignInRecFormDTO formDTO); SignInRecResultDTO querySignRecList(SignInRecFormDTO formDTO);
/**
* 018获取签到码图片
*
* @param formDTO
* @return com.epmet.resi.group.dto.act.result.SignInRecResultDTO
*/
BuildSignInCodeResultDTO getSignInUrl(BuildSignInCodeFormDTO formDTO);
} }

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

@ -44,4 +44,9 @@ public class ActSignInCodeServiceImpl extends BaseServiceImpl<ActSignInCodeDao,
public ActSignInCodeDTO selectLastRec(String groupActId) { public ActSignInCodeDTO selectLastRec(String groupActId) {
return baseDao.selectLastRec(groupActId); return baseDao.selectLastRec(groupActId);
} }
@Override
public int saveActSignInCodeEntity(ActSignInCodeEntity actSignInCodeEntity) {
return baseDao.insert(actSignInCodeEntity);
}
} }

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

@ -17,17 +17,23 @@
package com.epmet.modules.act.service.impl; package com.epmet.modules.act.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
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.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.HttpClientManager;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.result.UploadImgResultDTO;
import com.epmet.dto.result.UserBaseInfoResultDTO; import com.epmet.dto.result.UserBaseInfoResultDTO;
import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.OssFeignClient;
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.ActSignInCodeEntity;
import com.epmet.modules.act.entity.ActSignInRecordEntity; import com.epmet.modules.act.entity.ActSignInRecordEntity;
import com.epmet.modules.act.entity.GroupActInfoEntity; import com.epmet.modules.act.entity.GroupActInfoEntity;
import com.epmet.modules.act.service.ActSignInCodeService; import com.epmet.modules.act.service.ActSignInCodeService;
@ -35,20 +41,23 @@ 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.constant.GroupActConstant;
import com.epmet.modules.member.service.ResiGroupMemberService; import com.epmet.modules.member.service.ResiGroupMemberService;
import com.epmet.modules.utils.ModuleConstant;
import com.epmet.resi.group.dto.QRCodeMultipartFileDTO;
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.*;
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.act.result.SignInRecResultDTO;
import com.epmet.resi.group.dto.member.ResiGroupMemberDTO; import com.epmet.resi.group.dto.member.ResiGroupMemberDTO;
import com.epmet.utils.ThirdUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
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 org.springframework.util.CollectionUtils;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -73,6 +82,9 @@ public class ActSignInRecordServiceImpl extends BaseServiceImpl<ActSignInRecordD
private ActSignInCodeService actSignInCodeService; private ActSignInCodeService actSignInCodeService;
@Autowired @Autowired
private EpmetUserOpenFeignClient epmetUserOpenFeignClient; private EpmetUserOpenFeignClient epmetUserOpenFeignClient;
@Autowired
private OssFeignClient ossFeignClient;
/** /**
* 查询当前用户是否签到 * 查询当前用户是否签到
* *
@ -115,30 +127,12 @@ public class ActSignInRecordServiceImpl extends BaseServiceImpl<ActSignInRecordD
} }
groupActInfoDao.updateById(groupActInfoEntity); groupActInfoDao.updateById(groupActInfoEntity);
SetSignTimeResultDTO result = new SetSignTimeResultDTO(); SetSignTimeResultDTO result = new SetSignTimeResultDTO();
//3、如果签到时间修改了,重新生成签到码
result.setSignInCodeUrl(getSignInCodeUrl(groupActInfoEntity, originalActInfo));
result.setGroupActId(formDTO.getGroupActId()); result.setGroupActId(formDTO.getGroupActId());
result.setSignInStartTime(groupActInfoEntity.getSignInStartTime()); result.setSignInStartTime(groupActInfoEntity.getSignInStartTime());
result.setSignInEndTime(groupActInfoEntity.getSignInEndTime()); result.setSignInEndTime(groupActInfoEntity.getSignInEndTime());
return result; return result;
} }
private String getSignInCodeUrl(GroupActInfoEntity actInfoEntity, GroupActInfoDTO groupActInfoDTO) {
ActSignInCodeDTO actSignInCodeDTO = actSignInCodeService.selectLastRec(actInfoEntity.getId());
if (null != actSignInCodeDTO) {
if (actInfoEntity.getSignInStartTime().equals(groupActInfoDTO.getSignInStartTime())
&& actInfoEntity.getSignInEndTime().equals(groupActInfoDTO.getSignInEndTime())) {
log.info("签到开始时间、签到截止时间未变更,不需要重新生成签到码");
return actSignInCodeDTO.getUrl();
}
}
//todo
//别忘了插入数据库act_sign_in_code
return "重新生成新的url";
}
/** /**
* 007签到 * 007签到
* *
@ -242,4 +236,66 @@ public class ActSignInRecordServiceImpl extends BaseServiceImpl<ActSignInRecordD
} }
return resultDTO; return resultDTO;
} }
/**
* 018获取签到码图片
*
* @param formDTO
* @return com.epmet.resi.group.dto.act.result.SignInRecResultDTO
*/
@Override
public BuildSignInCodeResultDTO getSignInUrl(BuildSignInCodeFormDTO formDTO) {
BuildSignInCodeResultDTO resultDTO = new BuildSignInCodeResultDTO();
ActSignInCodeDTO actSignInCodeDTO = actSignInCodeService.selectLastRec(formDTO.getGroupActId());
if (null != actSignInCodeDTO) {
resultDTO.setSignInCodeUrl(actSignInCodeDTO.getUrl());
} else {
//获取AccessToken
String accessToken = ThirdUtils.getAccessToken(formDTO.getCustomerId()).getResiToken();
if (StringUtils.isBlank(accessToken)) {
log.warn("获取accessToken失败,customerId:{}", formDTO.getCustomerId());
throw new RenException("获取accessToken失败,customerId:{}", formDTO.getCustomerId());
}
//跳转的页面
//todo
StringBuilder path = new StringBuilder(ModuleConstant.GROUP_ACT_DETAIL_PAGE);
path.append("?groupActId=").append(formDTO.getGroupActId());
//需要发送的Json
JSONObject data = new JSONObject();
data.put("path", path.toString());
data.put("width", 400);
//发送
byte[] buffer = HttpClientManager.getInstance().getMediaByteArray(ModuleConstant.GET_CODE_URL + accessToken, JSON.toJSONString(data)).getData();
if (buffer != null && buffer.length < 500) {
String wxResult = "";
try {
wxResult = new String(buffer, "UTF-8");
if (-1 != wxResult.indexOf("errcode")) {
log.error("获取二维码接口返回错误:{}", wxResult);
throw new RenException("获取二维码失败");
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
//上传
QRCodeMultipartFileDTO qrCodeMultipartFile = new QRCodeMultipartFileDTO();
qrCodeMultipartFile.setBytes(buffer);
String originalFilename = formDTO.getGroupActId().concat(".jpg");
qrCodeMultipartFile.setOriginalFilename(originalFilename);
Result<UploadImgResultDTO> uploadResult = ossFeignClient.uploadQrCode(qrCodeMultipartFile);
if (!uploadResult.success()) {
throw new RenException("调用oss服务上传活动签到码失败");
}
//别忘了插入数据库act_sign_in_code
ActSignInCodeEntity actSignInCodeEntity = new ActSignInCodeEntity();
actSignInCodeEntity.setCustomerId(formDTO.getCustomerId());
actSignInCodeEntity.setGroupActId(formDTO.getGroupActId());
actSignInCodeEntity.setUrl(uploadResult.getData().getUrl());
actSignInCodeService.saveActSignInCodeEntity(actSignInCodeEntity);
resultDTO.setSignInCodeUrl(uploadResult.getData().getUrl());
}
return resultDTO;
}
} }

5
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/utils/ModuleConstant.java

@ -369,6 +369,11 @@ public interface ModuleConstant extends Constant {
*/ */
String CODE_INVITE_PAGE = "pages/group/group/invitation/invitation"; String CODE_INVITE_PAGE = "pages/group/group/invitation/invitation";
/**
* 活动扫码签到对应的跳转到 活动详情页面
*/
String GROUP_ACT_DETAIL_PAGE = "XXXXXXXXXXXXXXXXXXXXX找莹姐要路径";
String TOPIC_CONTENT_AND_VOICE_IS_NULL = "请输入话题内容或语音"; String TOPIC_CONTENT_AND_VOICE_IS_NULL = "请输入话题内容或语音";
/** /**

Loading…
Cancel
Save