Browse Source

Merge remote-tracking branch 'origin/dev_heart' into dev_heart

dev
wangchao 5 years ago
parent
commit
ae93c6be03
  1. 49
      epmet-auth/src/main/java/com/epmet/controller/ThirdLoginController.java
  2. 28
      epmet-auth/src/main/java/com/epmet/dto/form/LoginFormDTO.java
  3. 27
      epmet-auth/src/main/java/com/epmet/service/ThirdLoginService.java
  4. 38
      epmet-auth/src/main/java/com/epmet/service/impl/PublicUserLoginServiceImpl.java
  5. 350
      epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java
  6. 4
      epmet-commons/epmet-commons-tools/pom.xml
  7. 21
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/ApplicationConfig.java
  8. 30
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/MqConfig.java
  9. 2
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/NumConstant.java
  10. 30
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/MqBaseMsgDTO.java
  11. 18
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/MqConfigDTO.java
  12. 19
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/MqReturnBaseResult.java
  13. 36
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/MqSubscribeFormDTO.java
  14. 21
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/ReceiveMqMsg.java
  15. 42
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/MqMethodPathEnum.java
  16. 12
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
  17. 9
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java
  18. 11
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisUtils.java
  19. 14
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java
  20. 147
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java
  21. 149
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/Md5Util.java
  22. 53
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/MultipartFileToFileUtils.java
  23. 1
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/ScanContentUtils.java
  24. 69
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/SendMqMsgUtils.java
  25. 2
      epmet-gateway/deploy/docker-compose-dev.yml
  26. 2
      epmet-gateway/deploy/docker-compose-test.yml
  27. 2
      epmet-gateway/pom.xml
  28. 6
      epmet-gateway/src/main/java/com/epmet/filter/CpAuthGatewayFilterFactory.java
  29. 2
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/ActInfoDTO.java
  30. 5
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/ActOperationRecDTO.java
  31. 5
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/HeartUserInfoDTO.java
  32. 81
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/ActUserClockLogFormDTO.java
  33. 68
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/ResiActBaseFormDTO.java
  34. 45
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/ResiActCaculateDistanceFormDTO.java
  35. 71
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/ResiActUserCancelSignUpFormDTO.java
  36. 57
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/ResiLatestActFormDTO.java
  37. 62
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/ResiMyActFormDTO.java
  38. 26
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/ActPreviewFormDTO.java
  39. 23
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/AuditingActUserFormDTO.java
  40. 36
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/DraftActContentFormDTO.java
  41. 168
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/DraftActInfoFormDTO.java
  42. 36
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/PublishActContentFormDTO.java
  43. 193
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/PublishActInfoFormDTO.java
  44. 48
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ActClockListResultDTO.java
  45. 90
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiActInfoResultDTO.java
  46. 33
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiInProgressActResultDTO.java
  47. 85
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiLatestActResultDTO.java
  48. 69
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiLookBackActResultDTO.java
  49. 85
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiMyActResultDTO.java
  50. 25
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/ActPreviewContentResultDTO.java
  51. 92
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/ActPreviewResultDTO.java
  52. 55
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/AuditingActUserResultDTO.java
  53. 51
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/CustomerHeartConfigsResultDTO.java
  54. 15
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/LatestDraftActInfoResultDTO.java
  55. 2
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/PublishActInitResultDTO.java
  56. 17
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/PublishActResultDTO.java
  57. 21
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/SaveActDraftResultDTO.java
  58. 30
      epmet-module/epmet-heart/epmet-heart-server/pom.xml
  59. 70
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/constant/ActConstant.java
  60. 15
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ActCustomizedController.java
  61. 168
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ResiActListController.java
  62. 53
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/TestController.java
  63. 67
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/WorkActDraftController.java
  64. 27
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/WorkActUserController.java
  65. 10
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/ActCustomizedDao.java
  66. 148
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/ActInfoDao.java
  67. 22
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/ActUserRelationDao.java
  68. 11
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/HeartUserInfoDao.java
  69. 10
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/LatestActContentDao.java
  70. 10
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/LatestActInfoDao.java
  71. 2
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/ActInfoEntity.java
  72. 5
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/ActOperationRecEntity.java
  73. 5
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/HeartUserInfoEntity.java
  74. 10
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/ActCustomizedService.java
  75. 111
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/ActInfoService.java
  76. 18
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/ActUserRelationService.java
  77. 9
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/HeartUserInfoService.java
  78. 20
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActContentService.java
  79. 20
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActInfoService.java
  80. 33
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/WorkActDraftService.java
  81. 23
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/WorkActUserService.java
  82. 15
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActCustomizedServiceImpl.java
  83. 115
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActInfoServiceImpl.java
  84. 24
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActUserRelationServiceImpl.java
  85. 12
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/HeartUserInfoServiceImpl.java
  86. 26
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActContentServiceImpl.java
  87. 26
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActInfoServiceImpl.java
  88. 475
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActDraftServiceImpl.java
  89. 110
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActUserServiceImpl.java
  90. 40
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/utils/CaculateDistance.java
  91. 17
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/bootstrap.yml
  92. 18
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/ActCustomizedDao.xml
  93. 315
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/ActInfoDao.xml
  94. 24
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/ActUserRelationDao.xml
  95. 11
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/HeartUserInfoDao.xml
  96. 17
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LatestActContentDao.xml
  97. 55
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LatestActInfoDao.xml
  98. 2
      epmet-module/epmet-job/epmet-job-server/deploy/docker-compose-dev.yml
  99. 7
      epmet-module/epmet-job/epmet-job-server/pom.xml
  100. 13
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/ComponentAccessTokenService.java

49
epmet-auth/src/main/java/com/epmet/controller/ThirdLoginController.java

@ -0,0 +1,49 @@
package com.epmet.controller;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.LoginFormDTO;
import com.epmet.dto.result.UserTokenResultDTO;
import com.epmet.service.ThirdLoginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description 第三方-居民端政府端登陆服务
* @author sun
*/
@RestController
@RequestMapping("thirdlogin")
public class ThirdLoginController {
@Autowired
private ThirdLoginService thirdLoginService;
/**
* @param formDTO
* @return
* @Author sun
* @Description 单客户-居民端微信小程序登录
**/
@PostMapping("resilogin")
public Result<UserTokenResultDTO> resiLogin(@RequestBody LoginFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return new Result<UserTokenResultDTO>().ok(thirdLoginService.resiLogin(formDTO));
}
/**
* @param formDTO
* @return
* @Author sun
* @Description 单客户-政府端微信小程序登录
**/
@PostMapping("worklogin")
public Result<UserTokenResultDTO> workLogin(@RequestBody LoginFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return new Result<UserTokenResultDTO>().ok(thirdLoginService.workLogin(formDTO));
}
}

28
epmet-auth/src/main/java/com/epmet/dto/form/LoginFormDTO.java

@ -0,0 +1,28 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Description 单客户-居民端微信小程序登录
* @Author sun
*/
@Data
public class LoginFormDTO extends LoginCommonFormDTO implements Serializable {
private static final long serialVersionUID = 7950477424010655108L;
/**
* 小程序appId
*/
@NotBlank(message = "appId不能为空",groups = {AddUserInternalGroup.class})
private String appId;
/**
* 用户微信code
*/
@NotBlank(message = "wxCode不能为空",groups = {AddUserInternalGroup.class})
private String wxCode;
}

27
epmet-auth/src/main/java/com/epmet/service/ThirdLoginService.java

@ -0,0 +1,27 @@
package com.epmet.service;
import com.epmet.dto.form.LoginFormDTO;
import com.epmet.dto.result.UserTokenResultDTO;
/**
* @Description 第三方-居民端政府端登陆服务
* @author sun
*/
public interface ThirdLoginService {
/**
* @param formDTO
* @return
* @Author sun
* @Description 单客户-居民端微信小程序登录
**/
UserTokenResultDTO resiLogin(LoginFormDTO formDTO);
/**
* @param formDTO
* @return
* @Author sun
* @Description 单客户-政府端微信小程序登录
**/
UserTokenResultDTO workLogin(LoginFormDTO formDTO);
}

38
epmet-auth/src/main/java/com/epmet/service/impl/PublicUserLoginServiceImpl.java

@ -12,6 +12,7 @@ import com.epmet.constant.PublicUserLoginConstant;
import com.epmet.constant.SmsTemplateConstant;
import com.epmet.dto.PaCustomerDTO;
import com.epmet.dto.PaUserDTO;
import com.epmet.dto.PaUserWechatDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.CustomerUserResultDTO;
import com.epmet.dto.result.SaveUserResultDTO;
@ -77,7 +78,9 @@ public class PublicUserLoginServiceImpl implements PublicUserLoginService {
//3.获取用户token
String token = this.generateGovWxmpToken(resultDTO.getUserId());
//4.保存到redis
this.saveLatestGovTokenDto(resultDTO, wxMpUser, token);
String openid = wxMpUser.getOpenId();
String unionId = (null == wxMpUser.getUnionId() ? "" : wxMpUser.getUnionId());
this.saveLatestGovTokenDto("", resultDTO.getUserId(), openid, unionId, token);
UserTokenResultDTO userTokenResultDTO = new UserTokenResultDTO();
userTokenResultDTO.setToken(token);
return userTokenResultDTO;
@ -118,17 +121,17 @@ public class PublicUserLoginServiceImpl implements PublicUserLoginService {
}
//保存tokenDto到redis
private void saveLatestGovTokenDto(SaveUserResultDTO resultDTO, WxMpUser wxMpUser, String token) {
private void saveLatestGovTokenDto(String customerId, String userId, String openId, String unionId, String token) {
TokenDto tokenDTO = new TokenDto();
int expire = jwtTokenProperties.getExpire();
tokenDTO.setApp(LoginConstant.APP_PUBLIC);
tokenDTO.setClient(LoginConstant.CLIENT_MP);
tokenDTO.setOpenId(wxMpUser.getOpenId());
tokenDTO.setUnionId(null == wxMpUser.getUnionId() ? "" : wxMpUser.getUnionId());
tokenDTO.setOpenId(openId);
tokenDTO.setUnionId(unionId);
tokenDTO.setToken(token);
//首次初始化时还没有客户
tokenDTO.setCustomerId("");
tokenDTO.setUserId(resultDTO.getUserId());
tokenDTO.setCustomerId(customerId);
tokenDTO.setUserId(userId);
tokenDTO.setExpireTime(jwtTokenUtils.getExpiration(token).getTime());
tokenDTO.setUpdateTime(System.currentTimeMillis());
cpUserDetailRedis.set(tokenDTO, expire);
@ -206,19 +209,22 @@ public class PublicUserLoginServiceImpl implements PublicUserLoginService {
logger.error(String.format("验证码错误code[%s],msg[%s]", EpmetErrorCode.MOBILE_CODE_ERROR.getCode(), EpmetErrorCode.MOBILE_CODE_ERROR.getMsg()));
throw new RenException(EpmetErrorCode.MOBILE_CODE_ERROR.getCode());
}
//获取缓存中的token
TokenDto redisTokenDTO = cpUserDetailRedis.get(LoginConstant.APP_PUBLIC, LoginConstant.CLIENT_MP, userDTO.getId(), TokenDto.class);
if (redisTokenDTO == null) {
return null;
}
//4.判断是否存在客户信息,是否需要生成新的token
//生成的token是根据登陆手机号对应的user生成的token,访问记录表记录的是那个user根据自己或他人的手机号登陆的
//4.直接生成一个新的token放入缓存中(不管缓存中是否存在旧的token,都重新生成)
//4-1.生成token
String token = this.generateGovWxmpToken(userDTO.getId());
//4-2.判断是否存在信息,给customerId赋值
PaCustomerDTO customerDTO = resultDTO.getPaCustomerResult();
String customerId = "";
if (null != customerDTO && !StringUtils.isBlank(customerDTO.getId())) {
redisTokenDTO.setCustomerId(customerDTO.getId());
int expire = jwtTokenProperties.getExpire();
cpUserDetailRedis.set(redisTokenDTO, expire);
customerId = customerDTO.getId();
}
//4-3.token存入redis
PaUserWechatDTO wechatDTO = resultDTO.getPaUserWechatResult();
String openid = wechatDTO.getWxOpenId();
String unionId = (null == wechatDTO.getUnionId() ? "" : wechatDTO.getUnionId());
this.saveLatestGovTokenDto(customerId, userDTO.getId(), openid, unionId, token);
//5.登陆成功,访问记录表新增访问记录(访问记录新增失败不应影响用户登陆)
SaveUserVisitedFormDTO visited = new SaveUserVisitedFormDTO();
@ -232,7 +238,7 @@ public class PublicUserLoginServiceImpl implements PublicUserLoginService {
//6.返回token
UserTokenResultDTO userTokenResultDTO = new UserTokenResultDTO();
userTokenResultDTO.setToken(redisTokenDTO.getToken());
userTokenResultDTO.setToken(token);
return userTokenResultDTO;
}

350
epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java

@ -0,0 +1,350 @@
package com.epmet.service.impl;
import com.epmet.common.token.constant.LoginConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.security.dto.GovTokenDto;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.CpUserDetailRedis;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.CustomerAgencyDTO;
import com.epmet.dto.GovStaffRoleDTO;
import com.epmet.dto.UserDTO;
import com.epmet.dto.UserWechatDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.DepartmentListResultDTO;
import com.epmet.dto.result.GridByStaffResultDTO;
import com.epmet.dto.result.StaffLatestAgencyResultDTO;
import com.epmet.dto.result.UserTokenResultDTO;
import com.epmet.feign.EpmetThirdFeignClient;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.jwt.JwtTokenProperties;
import com.epmet.jwt.JwtTokenUtils;
import com.epmet.service.ThirdLoginService;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* @author sun
* @Description 第三方-居民端政府端登陆服务
*/
@Slf4j
@Service
public class ThirdLoginServiceImpl implements ThirdLoginService {
private static final Logger logger = LoggerFactory.getLogger(ThirdLoginServiceImpl.class);
@Autowired
private JwtTokenUtils jwtTokenUtils;
@Autowired
private JwtTokenProperties jwtTokenProperties;
@Autowired
private CpUserDetailRedis cpUserDetailRedis;
@Autowired
private EpmetThirdFeignClient epmetThirdFeignClient;
@Autowired
private EpmetUserOpenFeignClient epmetUserOpenFeignClient;
@Autowired
private GovOrgOpenFeignClient govOrgOpenFeignClient;
/**
* @param formDTO
* @return
* @Author sun
* @Description 单客户-居民端微信小程序登录
**/
@Override
public UserTokenResultDTO resiLogin(LoginFormDTO formDTO) {
//1.调用epmet_third服务,校验appId是否有效以及是否授权,校验通过的调用微信API获取用户基本信息
WxLoginFormDTO resiLoginFormDTO = new WxLoginFormDTO();
resiLoginFormDTO.setAppId(formDTO.getAppId());
resiLoginFormDTO.setWxCode(formDTO.getWxCode());
Result<UserWechatDTO> result = epmetThirdFeignClient.resiAndWorkLogin(resiLoginFormDTO);
if (!result.success()) {
logger.error("居民端小程序登陆,调用epmet_third服务获取数据失败");
throw new RenException(result.getCode());
}
UserWechatDTO userWechatDTO = result.getData();
//2.调用epmet-user服务,新增用户信息(先判断用户是否存在,不存在则新增存在则更新)
WxUserFormDTO wxUserFormDTO = new WxUserFormDTO();
wxUserFormDTO.setWechatDTO(userWechatDTO);
wxUserFormDTO.setApp(formDTO.getApp());
Result<UserDTO> userResult = epmetUserOpenFeignClient.saveWxUser(wxUserFormDTO);
if (!userResult.success()) {
throw new RenException(result.getCode());
}
UserDTO userDTO = userResult.getData();
//3.生成业务token
String userId = userDTO.getId();
String token = this.generateToken(formDTO, userId);
//4.存放Redis
this.saveTokenDto(formDTO, userId, userWechatDTO, token);
//5.接口返参
UserTokenResultDTO userTokenResultDTO = new UserTokenResultDTO();
userTokenResultDTO.setToken(token);
return userTokenResultDTO;
}
/**
* @Description 居民端登陆生成业务token的key
**/
private String generateToken(LoginCommonFormDTO formDTO, String userId) {
Map<String, Object> map = new HashMap<>();
map.put("app", formDTO.getApp());
map.put("client", formDTO.getClient());
map.put("userId", userId);
String token = jwtTokenUtils.createToken(map);
logger.info("app:" + formDTO.getApp() + ";client:" + formDTO.getClient() + ";userId:" + userId + ";生成token[" + token + "]");
return token;
}
/**
* @Description 将token存入redis
**/
private String saveTokenDto(LoginCommonFormDTO formDTO, String userId, UserWechatDTO userWechatDTO, String token) {
int expire = jwtTokenProperties.getExpire();
TokenDto tokenDto = new TokenDto();
tokenDto.setApp(formDTO.getApp());
tokenDto.setClient(formDTO.getClient());
tokenDto.setUserId(userId);
tokenDto.setOpenId(userWechatDTO.getWxOpenId());
tokenDto.setSessionKey(userWechatDTO.getSessionKey());
tokenDto.setUnionId(userWechatDTO.getUnionId());
tokenDto.setToken(token);
tokenDto.setUpdateTime(System.currentTimeMillis());
tokenDto.setExpireTime(jwtTokenUtils.getExpiration(token).getTime());
cpUserDetailRedis.set(tokenDto, expire);
logger.info("截止时间:" + DateUtils.format(jwtTokenUtils.getExpiration(token), "yyyy-MM-dd HH:mm:ss"));
return token;
}
/**
* @param formDTO
* @return
* @Author sun
* @Description 单客户-政府端微信小程序登录
**/
@Override
public UserTokenResultDTO workLogin(LoginFormDTO formDTO) {
//1.调用epmet_third服务,校验appId是否有效以及是否授权,校验通过的调用微信API获取用户基本信息
WxLoginFormDTO resiLoginFormDTO = new WxLoginFormDTO();
resiLoginFormDTO.setAppId(formDTO.getAppId());
resiLoginFormDTO.setWxCode(formDTO.getWxCode());
Result<UserWechatDTO> result = epmetThirdFeignClient.resiAndWorkLogin(resiLoginFormDTO);
if (!result.success()) {
logger.error("工作端小程序登陆,调用epmet_third服务获取数据失败");
throw new RenException(result.getCode());
}
UserWechatDTO userWechatDTO = result.getData();
//2.根据openid查询用户是否存在历史登陆信息
Result<StaffLatestAgencyResultDTO> latestStaffWechat = epmetUserOpenFeignClient.getLatestStaffWechatLoginRecord(userWechatDTO.getWxOpenId());
if (!latestStaffWechat.success() || null == latestStaffWechat.getData()) {
logger.error(String.format("没有获取到用户最近一次登录账户信息,code[%s],msg[%s]", EpmetErrorCode.PLEASE_LOGIN.getCode(), EpmetErrorCode.PLEASE_LOGIN.getMsg()));
throw new RenException(EpmetErrorCode.PLEASE_LOGIN.getCode());
}
StaffLatestAgencyResultDTO staffLatestAgencyResultDTO = latestStaffWechat.getData();
//3.记录staff_wechat
this.savestaffwechat(staffLatestAgencyResultDTO.getStaffId(), userWechatDTO.getWxOpenId());
//4.记录登录日志
this.saveStaffLoginRecord(staffLatestAgencyResultDTO);
//5.获取用户token
String token = this.generateGovWxmpToken(staffLatestAgencyResultDTO.getStaffId());
//6.保存到redis
this.saveLatestGovTokenDto(staffLatestAgencyResultDTO, userWechatDTO, token);
UserTokenResultDTO userTokenResultDTO = new UserTokenResultDTO();
userTokenResultDTO.setToken(token);
return userTokenResultDTO;
}
/**
* @param userId openid
* @return
* @Author sun
* @Description 保存微信和当前登录用户关系
**/
private Result savestaffwechat(String userId, String openid) {
StaffWechatFormDTO staffWechatFormDTO = new StaffWechatFormDTO();
staffWechatFormDTO.setUserId(userId);
staffWechatFormDTO.setWxOpenId(openid);
return epmetUserOpenFeignClient.saveStaffWechat(staffWechatFormDTO);
}
/**
* @param latestStaffWechatLoginDTO
* @return
* @Author sun
* @Description 保存登录日志
**/
private Result saveStaffLoginRecord(StaffLatestAgencyResultDTO latestStaffWechatLoginDTO) {
StaffLoginAgencyRecordFormDTO staffLoginAgencyRecordFormDTO = new StaffLoginAgencyRecordFormDTO();
staffLoginAgencyRecordFormDTO.setCustomerId(latestStaffWechatLoginDTO.getCustomerId());
staffLoginAgencyRecordFormDTO.setStaffId(latestStaffWechatLoginDTO.getStaffId());
staffLoginAgencyRecordFormDTO.setWxOpenId(latestStaffWechatLoginDTO.getWxOpenId());
staffLoginAgencyRecordFormDTO.setMobile(latestStaffWechatLoginDTO.getMobile());
staffLoginAgencyRecordFormDTO.setAgencyId(latestStaffWechatLoginDTO.getAgencyId());
Result staffLoginRecordResult = epmetUserOpenFeignClient.saveStaffLoginRecord(staffLoginAgencyRecordFormDTO);
return staffLoginRecordResult;
}
/**
* @Description 生成政府端小程序业务token Key
* @Author sun
**/
private String generateGovWxmpToken(String staffId) {
Map<String, Object> map = new HashMap<>();
map.put("app", LoginConstant.APP_GOV);
map.put("client", LoginConstant.CLIENT_WXMP);
map.put("userId", staffId);
String token = jwtTokenUtils.createToken(map);
logger.info("app:" + LoginConstant.APP_GOV + ";client:" + LoginConstant.CLIENT_WXMP + ";userId:" + staffId + ";生成token[" + token + "]");
return token;
}
/**
* @Description 保存tokenDto到redis
* @Author sun
**/
private void saveLatestGovTokenDto(StaffLatestAgencyResultDTO staffLatestAgency, UserWechatDTO userWechatDTO, String token) {
int expire = jwtTokenProperties.getExpire();
GovTokenDto govTokenDto = new GovTokenDto();
govTokenDto.setApp(LoginConstant.APP_GOV);
govTokenDto.setClient(LoginConstant.CLIENT_WXMP);
govTokenDto.setUserId(staffLatestAgency.getStaffId());
govTokenDto.setOpenId(userWechatDTO.getWxOpenId());
govTokenDto.setSessionKey(userWechatDTO.getSessionKey());
govTokenDto.setUnionId(userWechatDTO.getUnionId());
govTokenDto.setToken(token);
govTokenDto.setUpdateTime(System.currentTimeMillis());
govTokenDto.setExpireTime(jwtTokenUtils.getExpiration(token).getTime());
govTokenDto.setRootAgencyId(staffLatestAgency.getAgencyId());
govTokenDto.setCustomerId(staffLatestAgency.getCustomerId());
//设置部门,网格,角色列表
govTokenDto.setDeptIdList(getDeptartmentIdList(staffLatestAgency.getStaffId()));
govTokenDto.setGridIdList(getGridIdList(staffLatestAgency.getStaffId()));
CustomerAgencyDTO agency = getAgencyByStaffId(staffLatestAgency.getStaffId());
if (agency != null) {
govTokenDto.setAgencyId(agency.getId());
govTokenDto.setRoleList(queryGovStaffRoles(staffLatestAgency.getStaffId(), agency.getId()));
}
govTokenDto.setOrgIdPath(getOrgIdPath(staffLatestAgency.getStaffId()));
cpUserDetailRedis.set(govTokenDto, expire);
logger.info("截止时间:" + DateUtils.format(jwtTokenUtils.getExpiration(token), "yyyy-MM-dd HH:mm:ss"));
}
public Set<String> getDeptartmentIdList(String staffId) {
try {
Result<List<DepartmentListResultDTO>> deptListResult = govOrgOpenFeignClient.getDepartmentListByStaffId(staffId);
if (deptListResult.success()) {
if (!CollectionUtils.isEmpty(deptListResult.getData())) {
Set<String> deptIdLists = deptListResult.getData().stream().map(dept -> dept.getDepartmentId()).collect(Collectors.toSet());
return deptIdLists;
}
} else {
logger.error("登录:查询部门列表,远程调用返回错误:{}", deptListResult.getMsg());
}
} catch (Exception e) {
String errorStackTrace = ExceptionUtils.getErrorStackTrace(e);
logger.error("登录:查询部门列表异常:{}", errorStackTrace);
}
return null;
}
/**
* 根据工作人员ID查询网格ID列表
*
* @param staffId
* @return
*/
public Set<String> getGridIdList(String staffId) {
Result<List<GridByStaffResultDTO>> result = govOrgOpenFeignClient.listGridsbystaffid(staffId);
if (!result.success()) {
logger.error("登录:查询网格列表,远程调用返回错误:{}", result.getMsg());
return null;
} else {
List<GridByStaffResultDTO> grids = result.getData();
return grids.stream().map(grid -> grid.getGridId()).collect(Collectors.toSet());
}
}
/**
* 根据staffId查询所属的组织机构
*
* @param staffId
*/
public CustomerAgencyDTO getAgencyByStaffId(String staffId) {
Result<CustomerAgencyDTO> result = govOrgOpenFeignClient.getAgencyByStaff(staffId);
if (!result.success()) {
logger.error("登录:查询登录人所属的机关OrgIdPath失败:{}", result.getMsg());
return null;
}
return result.getData();
}
/**
* 查询人员在某机关单位下的角色列表
*
* @param staffId orgId
*/
public List<GovTokenDto.Role> queryGovStaffRoles(String staffId, String orgId) {
StaffRoleFormDTO formDTO = new StaffRoleFormDTO();
formDTO.setStaffId(staffId);
formDTO.setOrgId(orgId);
Result<List<GovStaffRoleDTO>> gridResult = epmetUserOpenFeignClient.getRolesOfStaff(formDTO);
if (!CollectionUtils.isEmpty(gridResult.getData())) {
//return gridResult.getData().stream().map(role -> role.getId()).collect(Collectors.toSet());
return ConvertUtils.sourceToTarget(gridResult.getData(), GovTokenDto.Role.class);
}
return null;
}
/**
* 查询工作人员的OrgIdPath
*
* @param staffId
* @return
*/
public String getOrgIdPath(String staffId) {
Result<CustomerAgencyDTO> result = govOrgOpenFeignClient.getAgencyByStaff(staffId);
if (!result.success()) {
logger.error("登录:查询登录人所属的机关OrgIdPath失败:{}", result.getMsg());
return null;
}
CustomerAgencyDTO agency = result.getData();
if (agency != null) {
if ("0".equals(agency.getPid())) {
// 顶级
return agency.getId();
} else {
return agency.getPids().concat(":").concat(agency.getId());
}
}
return null;
}
}

4
epmet-commons/epmet-commons-tools/pom.xml

@ -129,6 +129,10 @@
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
</dependency>
</dependencies>
<build>

21
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/ApplicationConfig.java

@ -0,0 +1,21 @@
package com.epmet.commons.tools.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
/**
* desc应用配置
* @author lyn
* @date 2020/7/22 14:08
*/
@Configuration
public class ApplicationConfig {
// 设置@Value注解取值不到忽略(不报错)
@Bean
public static PropertySourcesPlaceholderConfigurer placeholderConfigurer() {
PropertySourcesPlaceholderConfigurer c = new PropertySourcesPlaceholderConfigurer();
c.setIgnoreUnresolvablePlaceholders(true);
return c;
}
}

30
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/MqConfig.java

@ -0,0 +1,30 @@
/**
* Copyright (c) 2018 人人开源 All rights reserved.
* <p>
* https://www.renren.io
* <p>
* 版权所有侵权必究
*/
package com.epmet.commons.tools.config;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
/**
* 消息网关配置信息
*
* @author Mark sunlightcs@gmail.com
* @since 1.0.0
*/
@Data
@Configuration
public class MqConfig {
@Value("${elink.mq.appId}")
private String appId;
@Value("${elink.mq.token}")
private String token;
@Value("${elink.mq.host}")
private String host;
}

2
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/NumConstant.java

@ -50,5 +50,5 @@ public interface NumConstant {
String FOUR_STR = "4";
String FIVE_STR = "5";
String POSITIVE_EIGHT_STR = "+8";
String EMPTY_STR = "";
}

30
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/MqBaseMsgDTO.java

@ -0,0 +1,30 @@
package com.epmet.commons.tools.dto.form.mq;
import lombok.Data;
import org.springframework.stereotype.Component;
/**
* 消息网关基础信息
*
* @author jianjun liu
* @date 2020-07-21 14:33
**/
@Data
@Component
public class MqBaseMsgDTO extends MqConfigDTO {
private static final long serialVersionUID = 8176470786428432009L;
/**
* mq的事件类型
*/
private String eventClass;
/**
* 事件code
*/
private String eventTag;
/**
* 消息体
*/
private String msg;
}

18
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/MqConfigDTO.java

@ -0,0 +1,18 @@
package com.epmet.commons.tools.dto.form.mq;
import lombok.Data;
import java.io.Serializable;
/**
* 消息网关基础信息
*
* @author jianjun liu
* @date 2020-07-21 14:33
**/
@Data
public class MqConfigDTO implements Serializable {
private String appId;
private String token;
private String requestUrl;
}

19
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/MqReturnBaseResult.java

@ -0,0 +1,19 @@
package com.epmet.commons.tools.dto.form.mq;
import lombok.Data;
import java.io.Serializable;
/**
* desc消息网关返回结果
*
* @author lyn
* @date 2020/7/21 13:38
*/
@Data
public class MqReturnBaseResult implements Serializable {
private static final long serialVersionUID = -7763308686382363929L;
Integer errCode;
String errMsg;
String data;
}

36
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/MqSubscribeFormDTO.java

@ -0,0 +1,36 @@
package com.epmet.commons.tools.dto.form.mq;
import lombok.Data;
import java.io.Serializable;
/**
* desc: 订阅服务参数 实体类
*
* @date: 2020/6/29 9:06
* @author: jianjun liu
* email:liujianjun@git.elinkit.com.cn
*/
@Data
public class MqSubscribeFormDTO implements Serializable {
/**
* 消息接收者
*/
private String belongAppId;
/**
* 密钥
*/
private String eventClass;
/**
* 发送内容
*/
private String eventTag;
/**
* 是否at所有人
*/
private String callbackUrl;
}

21
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/ReceiveMqMsg.java

@ -0,0 +1,21 @@
package com.epmet.commons.tools.dto.form.mq;
import lombok.Data;
import java.io.Serializable;
/**
* 亿联云消息网关消息回调外层DTO
*
* @author jianjun liu
* @date 2020-07-20 8:58
**/
@Data
public class ReceiveMqMsg implements Serializable {
private static final long serialVersionUID = -2776439983884650701L;
/**
* 消息体 json串
*/
private String msg;
}

42
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/MqMethodPathEnum.java

@ -0,0 +1,42 @@
package com.epmet.commons.tools.enums;
/**
* 消息网关方法枚举类
* dev|test|prod
*
* @author jianjun liu
* @date 2020-07-03 11:14
**/
public enum MqMethodPathEnum {
SEND_MSG("producerService/producer/sendMsg", "发送消息"),
;
private String code;
private String name;
MqMethodPathEnum(String code, String name) {
this.code = code;
this.name = name;
}
public static MqMethodPathEnum getEnum(String code) {
MqMethodPathEnum[] values = MqMethodPathEnum.values();
for (MqMethodPathEnum value : values) {
if (code != null && value.getCode().equals(code)) {
return value;
}
}
return null;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
}

12
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java

@ -49,6 +49,12 @@ public enum EpmetErrorCode {
CANNOT_DELETE_PARTY_MEMBER(8111,"该用户已注册党员,不允许删除"),
GROUP_LEADER_CAN_EDIT_GROUP_INFO(8112,"只有组长才可以修改小组信息"),
INVITE_NEW_MEMBER(8113,"只有讨论中的小组才可以邀请新成员"),
ACT_TITLE_SCAN_FAILED(8114,"活动标题审核失败,请重新编辑"),
ACT_REQ_SCAN_FAILED(8115,"活动报名条件审核失败,请重新编辑"),
ACT_CONTENT_TEXT_SCAN_FAILED(8116,"活动详情内容审核失败,请重新编辑"),
ACT_CONTENT_IMG_SCAN_FAILED(8117,"活动详情图片失败,请重新编辑"),
ACT_COVER_PIC_SCAN_FAILED(8118,"活动封面图片审核失败,请重新编辑"),
CANNOT_AUDIT_WARM(8201, "请完善居民信息"),
NOT_DEL_AGENCY(8202, "该机关存在下级机关,不允许删除"),
NOT_DEL_AGENCY_PER(8205, "该机关存在工作人员,不允许删除"),
@ -85,7 +91,11 @@ public enum EpmetErrorCode {
CUSTOMER_VALIDATE_ERROR(8999, "内部数据校验异常"),
//公众号 865..开头的码
PUBLIC_NOT_EXISTS(8651,"手机号未注册,请先完成信息注册");
PUBLIC_NOT_EXISTS(8651,"手机号未注册,请先完成信息注册"),
SELECT_CUSTOMER_ERROR(8652,"未查询到注册客户信息"),
SELECT_AGENCY_ERROR(8653,"根据客户信息未查询到注册客户组织信息"),
SELECT_USER_ERROR(8654,"根据客户信息未查询到注册客户管理员信息"),
UPDATE_CUSTOMER_ERROR(8655,"更新注册客户信息为已完成初始化失败");
private int code;

9
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java

@ -254,4 +254,13 @@ public class RedisKeys {
return rootPrefix.concat("tags:grid:relationTag:").concat(gridId).concat(StrConstant.COLON).concat(tagId);
}
/**
* 获取生成的用户标识 缓存Key
* @param shortUserId
* @return
*/
public static String getShortUserIdKey(String shortUserId) {
return rootPrefix.concat("oper:user:shorId:").concat(shortUserId);
}
}

11
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisUtils.java

@ -10,8 +10,6 @@ package com.epmet.commons.tools.redis;
import com.epmet.commons.tools.constant.NumConstant;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.*;
import org.springframework.data.redis.support.atomic.RedisAtomicLong;
@ -316,4 +314,13 @@ public class RedisUtils {
return redisTemplate.opsForZSet().incrementScore(key, value, delta);
}
/**
* @Description 判断key是否存在
* @param key
* @return
*/
public Boolean hasKey(String key) {
return redisTemplate.hasKey(key);
}
}

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

147
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java

@ -4,12 +4,11 @@ import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.dto.form.DingTalkTextMsg;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.scan.param.TextScanParamDTO;
import com.epmet.commons.tools.scan.param.TextTaskDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.config.RequestConfig;
@ -19,19 +18,34 @@ import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
import org.apache.http.conn.socket.ConnectionSocketFactory;
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.entity.StringEntity;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.springframework.util.CollectionUtils;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ -51,6 +65,28 @@ public class HttpClientManager {
* HttpClient对象
*/
private static CloseableHttpClient httpclient = HttpClients.custom().disableAutomaticRetries().build();
private static CloseableHttpClient httpsClient;
static {
try {
// 采用绕过验证的方式处理https请求
SSLContext sslcontext = createIgnoreVerifySSL();
// 设置协议http和https对应的处理socket链接工厂的对象
Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create()
.register("http", PlainConnectionSocketFactory.INSTANCE)
.register("https", new SSLConnectionSocketFactory(sslcontext,
SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER))
.build();
PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager(
socketFactoryRegistry);
HttpClients.custom().setConnectionManager(connManager);
// 创建自定义的httpclient对象
httpsClient = HttpClients.custom().setConnectionManager(connManager).build();
} catch (Exception e) {
e.printStackTrace();
}
}
/*** 超时设置 ****/
private static RequestConfig requestConfig = RequestConfig.custom()
@ -74,7 +110,7 @@ public class HttpClientManager {
*
* @author: jianjun liu
*/
public Result<String> sendPost(String url, Map<String, String> paramsMap) {
public Result<String> sendPost(String url, Map<String, Object> paramsMap) {
try {
HttpPost httppost = new HttpPost(url);
@ -88,9 +124,8 @@ public class HttpClientManager {
UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(list, "utf-8");
httppost.setEntity(urlEncodedFormEntity);
return execute(httppost);
return execute(httppost, false);
} catch (Exception e) {
e.printStackTrace();
log.error("send exception", e);
return new Result<String>().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg());
}
@ -115,7 +150,7 @@ public class HttpClientManager {
StringEntity se = new StringEntity(jsonStrParam, "utf-8");
httppost.setEntity(se);
}
return execute(httppost);
return execute(httppost, false);
} catch (Exception e) {
log.error("send exception", e);
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg());
@ -123,6 +158,55 @@ public class HttpClientManager {
}
/**
* 上传临时素材
* @author zhaoqifeng
* @date 2020/7/17 14:33
* @param url
* @param file
* @return com.epmet.commons.tools.utils.Result<java.lang.String>
*/
public Result<String> uploadWxMedia(String url, File file) {
try {
HttpPost httppost = new HttpPost(url);
httppost.setConfig(requestConfig);
httppost.addHeader("Content-Type", "application/json; charset=utf-8");
FileBody fileBody = new FileBody(file);
HttpEntity reqEntity = MultipartEntityBuilder.create()
.addPart("media", fileBody).build();
httppost.setEntity(reqEntity);
return execute(httppost,false);
} catch (Exception e) {
log.error("send exception", e);
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg());
}
}
/**
* desc: https发送json post 请求
* param: url,jsonStrParam
* return: Result<String>
* date: 2019/2/21 9:12
*
* @author: jianjun liu
*/
public Result<String> sendPostByHttps(String url, String jsonStrParam) {
try {
HttpPost httppost = new HttpPost(url);
httppost.setConfig(requestConfig);
httppost.addHeader("Content-Type", "application/json");
if (StringUtils.isNotEmpty(jsonStrParam)) {
StringEntity se = new StringEntity(jsonStrParam, "utf-8");
httppost.setEntity(se);
}
return execute(httppost, true);
} catch (Exception e) {
log.error("sendPostByHttps exception", e);
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg());
}
}
/**
* desc: 发送钉钉群消息 简版
* param: url,jsonStrParam
@ -140,10 +224,10 @@ public class HttpClientManager {
Mac mac = Mac.getInstance("HmacSHA256");
mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256"));
byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));
String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)),"UTF-8");
String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8");
DingTalkTextMsg msg = new DingTalkTextMsg();
msg.setContent(content);
url = url.concat("&timestamp="+timestamp+"&sign="+sign);
url = url.concat("&timestamp=" + timestamp + "&sign=" + sign);
String jsonStrParam = msg.getMsgContent();
return sendPostByJSON(url, jsonStrParam);
} catch (Exception e) {
@ -172,25 +256,28 @@ public class HttpClientManager {
}
HttpGet httpGet = new HttpGet(builder.build());
httpGet.setConfig(requestConfig);
return execute(httpGet);
return execute(httpGet, false);
} catch (Exception e) {
log.error("sendGet exception", e);
return new Result<String>().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg());
}
}
private Result<String> execute(HttpRequestBase httpMethod) {
private Result<String> execute(HttpRequestBase httpMethod, boolean isHttps) {
CloseableHttpResponse response = null;
try {
response = httpclient.execute(httpMethod);
log.debug("http send response:{}", JSON.toJSONString(response));
if (isHttps) {
response = httpsClient.execute(httpMethod);
} else {
response = httpclient.execute(httpMethod);
}
if (response != null && response.getStatusLine() != null) {
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
String result = EntityUtils.toString(response.getEntity());
return new Result<String>().ok(result);
} else {
log.warn("execute http method fail,httpStatus:{}", response.getStatusLine().getStatusCode());
return new Result<String>().error(EpmetErrorCode.SERVER_ERROR.getCode(),"请求失败httpStatus:"+response.getStatusLine().getStatusCode());
return new Result<String>().error(EpmetErrorCode.SERVER_ERROR.getCode(), "请求失败httpStatus:" + response.getStatusLine().getStatusCode());
}
}
} catch (Exception e) {
@ -269,17 +356,29 @@ public class HttpClientManager {
return new Result<Byte[]>().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg());
}
public static void main(String[] args) {
String url = "http://localhost:8107/epmetscan/api/textSyncScan";
TextTaskDTO p = new TextTaskDTO();
p.setDataId("1");
p.setContent("neirong1");
List<TextTaskDTO> list = new ArrayList<>();
list.add(p);
TextScanParamDTO param = new TextScanParamDTO();
param.setTasks(list);
Result<String> result = HttpClientManager.getInstance().sendPostByJSON(url, JSON.toJSONString(param));
System.out.println(JSON.toJSONString(result));
private static SSLContext createIgnoreVerifySSL() throws NoSuchAlgorithmException, KeyManagementException {
SSLContext sc = SSLContext.getInstance("SSLv3");
// 实现一个X509TrustManager接口,用于绕过验证,不用修改里面的方法
X509TrustManager trustManager = new X509TrustManager() {
@Override
public void checkClientTrusted(java.security.cert.X509Certificate[] paramArrayOfX509Certificate,
String paramString) throws CertificateException {
}
@Override
public void checkServerTrusted(java.security.cert.X509Certificate[] paramArrayOfX509Certificate,
String paramString) throws CertificateException {
}
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
};
sc.init(null, new TrustManager[]{trustManager}, null);
return sc;
}
}

149
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/Md5Util.java

@ -0,0 +1,149 @@
package com.epmet.commons.tools.utils;
import lombok.extern.slf4j.Slf4j;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
@Slf4j
public class Md5Util {
/**
* 加密盐
*/
public static final String SALT = "EPMET_UMD_SALT";
public static String md5(String string) {
if (string == null || string.trim().length() == 0) {
return null;
}
try {
return getMD5(string.getBytes("GBK"));
} catch (UnsupportedEncodingException e) {
log.error( "md5 is error,msg={0}", e);
return null;
}
}
private static final char hexDigits[] = { // 用来将字节转换成 16 进制表示的字符
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
private static String getMD5(byte[] source) {
String s = null;
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(source);
byte tmp[] = md.digest(); // MD5 的计算结果是一个 128 位的长整数,
// 用字节表示就是 16 个字节
char str[] = new char[16 * 2]; // 每个字节用 16 进制表示的话,使用两个字符,
// 所以表示成 16 进制需要 32 个字符
int k = 0; // 表示转换结果中对应的字符位置
for (int i = 0; i < 16; i++) { // 从第一个字节开始,对 MD5 的每一个字节
// 转换成 16 进制字符的转换
byte byte0 = tmp[i]; // 取第 i 个字节
str[k++] = hexDigits[byte0 >>> 4 & 0xf]; // 取字节中高 4 位的数字转换,
// >>> 为逻辑右移,将符号位一起右移
str[k++] = hexDigits[byte0 & 0xf]; // 取字节中低 4 位的数字转换
}
s = new String(str); // 换后的结果转换为字符串
} catch (Exception e) {
log.error("getMD5 is error,msg={0}", e);
}
return s;
}
private static String byteArrayToHexString(byte b[]) {
StringBuffer resultSb = new StringBuffer();
for (int i = 0; i < b.length; i++)
resultSb.append(byteToHexString(b[i]));
return resultSb.toString();
}
private static String byteToHexString(byte b) {
int n = b;
if (n < 0)
n += 256;
int d1 = n / 16;
int d2 = n % 16;
return hexDigits[d1] + "" + hexDigits[d2];
}
public static String MD5Encode(String origin, String charsetname) {
String resultString = null;
try {
resultString = new String(origin);
MessageDigest md = MessageDigest.getInstance("MD5");
if (charsetname == null || "".equals(charsetname))
resultString = byteArrayToHexString(md.digest(resultString
.getBytes()));
else
resultString = byteArrayToHexString(md.digest(resultString
.getBytes(charsetname)));
} catch (Exception e) {
log.error("MD5Encode is error,msg={0}", e);
}
return resultString;
}
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
String uuid = "03a1dcd8cb1811eabac1c03fd56f7847";
System.out.println(get12Char(uuid));
}
}
/**
* 获取短字符
*
* @param str
* @return 大写
*/
public static String get12Char(String str) {
String arr[] = ShortText(str);
String rst = (arr[0] + arr[1]).toUpperCase();
return rst.substring(0, 4) + rst.substring(4, 8) + rst.substring(8, 12);
}
private static String[] ShortText(String string) {
String[] chars = new String[]{ // 要使用生成URL的字符
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n",
"o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B",
"C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N",
"O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
String hex = "";
MessageDigest md = null;
try {
md = MessageDigest.getInstance("MD5");
hex = byteArrayToHexString(md.digest(SALT.concat(string)
.getBytes("utf-8")));
} catch (Exception e) {
e.printStackTrace();
}
int hexLen = hex.length();
int subHexLen = hexLen / 8;
String[] ShortStr = new String[4];
for (int i = 0; i < subHexLen; i++) {
String outChars = "";
int j = i + 1;
String subHex = hex.substring(i * 8, j * 8);
long idx = Long.valueOf("3FFFFFFF", 16) & Long.valueOf(subHex, 16);
for (int k = 0; k < 6; k++) {
int index = (int) (Long.valueOf("0000003D", 16) & idx);
outChars += chars[index];
idx = idx >> 5;
}
ShortStr[i] = outChars;
}
return ShortStr;
}
}

53
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/MultipartFileToFileUtils.java

@ -0,0 +1,53 @@
package com.epmet.commons.tools.utils;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
/**
* @author zhaoqifeng
* @dscription
* @date 2020/7/17 14:01
*/
public class MultipartFileToFileUtils {
/**
* MultipartFile File
*
* @param file
* @throws Exception
*/
public static File multipartFileToFile(MultipartFile file) throws Exception {
File toFile = null;
if (("").equals(file) || file.getSize() <= 0) {
file = null;
} else {
InputStream ins = null;
ins = file.getInputStream();
toFile = new File(file.getOriginalFilename());
toFile = inputStreamToFile(ins, toFile);
ins.close();
}
return toFile;
}
private static File inputStreamToFile(InputStream ins, File file) {
try {
OutputStream os = new FileOutputStream(file);
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead);
}
os.close();
ins.close();
return file;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}

1
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/ScanContentUtils.java

@ -18,7 +18,6 @@ import java.util.List;
* 扫描内容工具类
*
* @author jianjun liu
* @email liujianjun@yunzongnet.com
* @date 2020-06-08 8:28
**/
@Slf4j

69
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/SendMqMsgUtils.java

@ -0,0 +1,69 @@
package com.epmet.commons.tools.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.epmet.commons.tools.config.MqConfig;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.dto.form.mq.MqBaseMsgDTO;
import com.epmet.commons.tools.dto.form.mq.MqReturnBaseResult;
import com.epmet.commons.tools.enums.MqMethodPathEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.ValidateException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
* 发送亿联云消息工具类
*
* @author jianjun liu
* @date 2020-06-08 8:28
**/
@Slf4j
@Component
public class SendMqMsgUtils {
private static MqConfig mqStaticConfig;
/**
* desc:发送mq消息
*
* @return
*/
public static Result<String> sendMsg(MqBaseMsgDTO msg) {
if (mqStaticConfig == null) {
mqStaticConfig = SpringContextUtils.getBean(MqConfig.class);
}
log.debug("sendMsg param:{}", JSON.toJSONString(msg));
try {
// TODO
//ValidatorUtils.validateEntity(msg, null);
} catch (ValidateException e) {
return new Result<String>().error(e.getMsg());
}
msg.setAppId(mqStaticConfig.getAppId());
msg.setRequestUrl(mqStaticConfig.getHost().concat(MqMethodPathEnum.SEND_MSG.getCode()));
msg.setToken(mqStaticConfig.getToken());
try {
Result<String> result = HttpClientManager.getInstance().sendPostByHttps(msg.getRequestUrl(), JSON.toJSONString(msg));
log.debug("sendMsg result:{}", JSON.toJSONString(result));
if (result.success()) {
MqReturnBaseResult resultResult = JSON.parseObject(result.getData(), MqReturnBaseResult.class);
if (resultResult.getErrCode().equals(NumConstant.ZERO)) {
JSONObject jsonObject = JSON.parseObject(resultResult.getData());
return new Result<String>().ok(jsonObject.getString("msgId"));
} else {
log.error("sendMsg fail,resultData:{}", JSON.toJSONString(resultResult));
return new Result<String>().error(EpmetErrorCode.SERVER_ERROR.getCode(), resultResult.getErrMsg());
}
}
Result<String> resultResult = new Result<>();
resultResult.error(result.getCode(), result.getMsg());
resultResult.setInternalMsg(result.getInternalMsg());
return resultResult;
} catch (Exception e) {
log.debug("sendMsg exception", e);
return new Result<String>().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg());
}
}
}

2
epmet-gateway/deploy/docker-compose-dev.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
epmet-gateway-server:
container_name: epmet-gateway-server-dev
image: 192.168.1.130:10080/epmet-cloud-dev/epmet-gateway:0.3.26
image: 192.168.1.130:10080/epmet-cloud-dev/epmet-gateway:0.3.27
ports:
- "8080:8080"
network_mode: host # 使用现有网络

2
epmet-gateway/deploy/docker-compose-test.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
epmet-gateway-server:
container_name: epmet-gateway-server-test
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-release/epmet-gateway:0.3.25
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-release/epmet-gateway:0.3.26
ports:
- "8080:8080"
network_mode: host # 使用现有网络

2
epmet-gateway/pom.xml

@ -2,7 +2,7 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<version>0.3.26</version>
<version>0.3.27</version>
<parent>
<groupId>com.epmet</groupId>
<artifactId>epmet-cloud</artifactId>

6
epmet-gateway/src/main/java/com/epmet/filter/CpAuthGatewayFilterFactory.java

@ -134,8 +134,10 @@ public class CpAuthGatewayFilterFactory extends AbstractGatewayFilterFactory<CpA
.header(AppClientConstant.CLIENT,baseTokenDto.getClient())
.header(AppClientConstant.USER_ID,baseTokenDto.getUserId())
;
if(StringUtils.equals(baseTokenDto.getApp(),"gov")){
exchange.getRequest().mutate().header(AppClientConstant.CUSTOMER_ID,customerId);
if (StringUtils.equals(baseTokenDto.getApp(), "gov")) {//工作端
exchange.getRequest().mutate().header(AppClientConstant.CUSTOMER_ID, customerId);
} else if (StringUtils.equals(baseTokenDto.getApp(), "public")) {//公众号端
exchange.getRequest().mutate().header(AppClientConstant.CUSTOMER_ID, customerId);
}
ServerHttpRequest build = exchange.getRequest().mutate().build();
return chain.filter(exchange.mutate().request(build).build());

2
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/ActInfoDTO.java

@ -215,7 +215,7 @@ public class ActInfoDTO implements Serializable {
/**
* 1已经总结0未总结
*/
private Integer summaryFlag;
private Boolean summaryFlag;
/**
* 乐观锁

5
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/ActOperationRecDTO.java

@ -17,9 +17,10 @@
package com.epmet.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
@ -54,7 +55,7 @@ public class ActOperationRecDTO implements Serializable {
/**
* 1通知用户0不通知
*/
private Integer noticeUser;
private Boolean noticeUser;
/**
* 删除标记

5
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/HeartUserInfoDTO.java

@ -17,9 +17,10 @@
package com.epmet.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
@ -51,7 +52,7 @@ public class HeartUserInfoDTO implements Serializable {
/**
* 1是志愿者0不是志愿者志愿者注册成功后需要来更新值
*/
private Integer volunteerFlag;
private Boolean volunteerFlag;
/**
* 爱心时长(单位分钟)参与并签到了的活动实际结束-实际开始签到的未签到但是有积分的

81
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/ActUserClockLogFormDTO.java

@ -0,0 +1,81 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto.form.resi;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
/**
* 用户活动打卡参数
*
* @author zhangyong
* @since v1.0.0 2020-07-14
*/
@Data
public class ActUserClockLogFormDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 用户ID
*/
private String userId;
/**
* 活动ID
*/
@NotBlank(message = "活动ID不能为空")
private String actId;
/**
* 打卡类型0-打卡1-更新打卡
*/
@NotBlank(message = "打卡类型不能为空")
private String clockType;
/**
* 打卡位置经度
*/
@NotBlank(message = "打卡位置经度不能为空")
private BigDecimal clockLongitude;
/**
* 打卡位置纬度
*/
@NotBlank(message = "打卡位置纬度不能为空")
private BigDecimal clockLatitude;
/**
* 打卡地址
*/
@NotBlank(message = "打卡地址不能为空")
private String clockAddress;
/**
* 打卡描述
*/
@NotBlank(message = "打卡描述不能为空")
private String clockDesc;
/**
* 打卡是否有效0-1-
*/
@NotBlank(message = "打卡是否有效不能为空")
private String effectiveFlag;
/**
* 打卡图片
*/
private ArrayList<String> images;
}

68
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/ResiActBaseFormDTO.java

@ -0,0 +1,68 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto.form.resi;
import lombok.Data;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 活动列表(标准) 入参
*
* @author zhangyong
* @since v1.0.0 2020-07-20
*/
@Data
public class ResiActBaseFormDTO implements Serializable {
private static final long serialVersionUID = 1L;
//>>>>>>>>>>>>>>>>>校验分组开始>>>>>>>>>>>>>>>>>>>>>
/**
* 添加用户操作的内部异常分组
* 出现错误会提示给前端7000错误码返回信息为服务器开小差...
*/
public interface AddUserInternalGroup {}
// <<<<<<<<<<<<<<<<<<<校验分组结束<<<<<<<<<<<<<<<<<<<<<<<<
/**
* 客户Id
*/
@NotBlank(message = "客户Id不能为空", groups = { AddUserInternalGroup.class })
private String customerId;
/**
* 页码从1开始
*/
@Min(value = 1, message = "页码必须大于0", groups = { AddUserInternalGroup.class })
private Integer pageNo;
/**
* 页容量默认20页
*/
@Min(value = 1, message = "每页条数必须大于必须大于0", groups = { AddUserInternalGroup.class })
private Integer pageSize;
/**
* 用户id
*/
private String userId;
}

45
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/ResiActCaculateDistanceFormDTO.java

@ -0,0 +1,45 @@
package com.epmet.dto.form.resi;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 重新定位 入参
*
* @author zhangyong
* @since v1.0.0 2020-07-20
*/
@Data
public class ResiActCaculateDistanceFormDTO implements Serializable {
private static final long serialVersionUID = 1L;
//>>>>>>>>>>>>>>>>>校验分组开始>>>>>>>>>>>>>>>>>>>>>
/**
* 添加用户操作的内部异常分组
* 出现错误会提示给前端7000错误码返回信息为服务器开小差...
*/
public interface AddUserInternalGroup {}
// <<<<<<<<<<<<<<<<<<<校验分组结束<<<<<<<<<<<<<<<<<<<<<<<<
/**
* 经度
*/
@NotBlank(message = "经度不能为空", groups = { ResiActBaseFormDTO.AddUserInternalGroup.class })
private Double longitude;
/**
* 纬度
*/
@NotBlank(message = "纬度不能为空", groups = { ResiActBaseFormDTO.AddUserInternalGroup.class })
private Double latitude;
/**
* 用户id
*/
@NotBlank(message = "活动ID不能为空", groups = { ResiActBaseFormDTO.AddUserInternalGroup.class })
private String actId;
}

71
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/ResiActUserCancelSignUpFormDTO.java

@ -0,0 +1,71 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto.form.resi;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 取消报名参数
*
* @author zhangyong
* @since v1.0.0 2020-07-20
*/
@Data
public class ResiActUserCancelSignUpFormDTO implements Serializable {
private static final long serialVersionUID = 1L;
//>>>>>>>>>>>>>>>>>校验分组开始>>>>>>>>>>>>>>>>>>>>>
/**
* 添加用户操作的内部异常分组
* 出现错误会提示给前端7000错误码返回信息为服务器开小差...
*/
public interface AddUserInternalGroup {}
/**
* 添加用户操作的用户可见异常分组
* 该分组用于校验需要返回给前端错误信息提示的列需要继承CustomerClientShowGroup
* 返回错误码为8999提示信息为DTO中具体的列的校验注解message的内容
*/
public interface AddUserShowGroup extends CustomerClientShowGroup {}
// <<<<<<<<<<<<<<<<<<<校验分组结束<<<<<<<<<<<<<<<<<<<<<<<<
/**
* 用户Id
*/
private String userId;
/**
* 活动ID
*/
@NotBlank(message = "活动ID不能为空", groups = { AddUserInternalGroup.class })
private String actId;
/**
* 取消报名原因
*/
@NotBlank(message = "请输入取消报名原因", groups = { AddUserInternalGroup.class, AddUserShowGroup.class })
@Length(max = 150, message = "取消报名原因不能超过150字", groups = { AddUserInternalGroup.class, AddUserShowGroup.class })
private String failureReason;
}

57
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/ResiLatestActFormDTO.java

@ -0,0 +1,57 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto.form.resi;
import lombok.Data;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 最新活动列表 入参
*
* @author zhangyong
* @since v1.0.0 2020-07-21
*/
@Data
public class ResiLatestActFormDTO implements Serializable {
private static final long serialVersionUID = 1L;
//>>>>>>>>>>>>>>>>>校验分组开始>>>>>>>>>>>>>>>>>>>>>
/**
* 添加用户操作的内部异常分组
* 出现错误会提示给前端7000错误码返回信息为服务器开小差...
*/
public interface AddUserInternalGroup {}
// <<<<<<<<<<<<<<<<<<<校验分组结束<<<<<<<<<<<<<<<<<<<<<<<<
/**
* 客户Id
*/
@NotBlank(message = "客户Id不能为空", groups = { AddUserInternalGroup.class })
private String customerId;
/**
* 页容量默认20页
*/
@Min(value = 1, message = "每页条数必须大于必须大于0", groups = { AddUserInternalGroup.class })
private Integer num;
}

62
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/ResiMyActFormDTO.java

@ -0,0 +1,62 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto.form.resi;
import lombok.Data;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 我的活动列表 入参
*
* @author zhangyong
* @since v1.0.0 2020-07-20
*/
@Data
public class ResiMyActFormDTO implements Serializable {
private static final long serialVersionUID = 1L;
//>>>>>>>>>>>>>>>>>校验分组开始>>>>>>>>>>>>>>>>>>>>>
/**
* 添加用户操作的内部异常分组
* 出现错误会提示给前端7000错误码返回信息为服务器开小差...
*/
public interface AddUserInternalGroup {}
// <<<<<<<<<<<<<<<<<<<校验分组结束<<<<<<<<<<<<<<<<<<<<<<<<
/**
* 页码从1开始
*/
@Min(value = 1, message = "页码必须大于0", groups = { AddUserInternalGroup.class })
private Integer pageNo;
/**
* 页容量默认20页
*/
@Min(value = 1, message = "每页条数必须大于必须大于0", groups = { AddUserInternalGroup.class })
private Integer pageSize;
/**
* 用户id
*/
private String userId;
}

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

23
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/AuditingActUserFormDTO.java

@ -0,0 +1,23 @@
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 22:12
*/
@Data
public class AuditingActUserFormDTO implements Serializable {
private static final long serialVersionUID = 3811387419859675753L;
public interface AddUserInternalGroup {}
/**
* 活动id
*/
@NotBlank(message = "活动id不能为空", groups = { AddUserInternalGroup.class })
private String actId;
}

36
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/DraftActContentFormDTO.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 13:18
*/
@Data
public class DraftActContentFormDTO implements Serializable {
private static final long serialVersionUID = 5236509944250440348L;
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;
}

168
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/DraftActInfoFormDTO.java

@ -0,0 +1,168 @@
package com.epmet.dto.form.work;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
/**
* 预览-保存活动草稿入参DTO
*
* @author yinzuomei@elink-cn.com
* @date 2020/7/21 13:17
*/
@Data
public class DraftActInfoFormDTO implements Serializable {
private static final long serialVersionUID = -4967079570884814526L;
public interface AddUserInternalGroup {
}
public interface AddDraftUserShowGroup extends CustomerClientShowGroup {
}
@Valid
private List<DraftActContentFormDTO> actContent;
/**
* 活动草稿id,如果是编辑之前的活动草稿此列是有值的
*/
private String actDraftId;
/**
* 如果是重新发布活动此列是有值的
*/
private String actId;
/**
* 客户id
*/
@NotBlank(message = "客户id不能为空", groups = {AddUserInternalGroup.class})
private String customerId;
/**
* 活动标题
*/
private String title;
/**
* 封面图
*/
private String coverPic;
/**
* 活动地点
*/
private String actAddress;
/**
* 活动地点-经度
*/
private BigDecimal actLongitude;
/**
* 活动地点-纬度
*/
private BigDecimal actLatitude;
/**
* 活动预计开始时间yyyy-MM-dd HH:mm
*/
private String actStartTime;
/**
* 活动预计结束时间yyyy-MM-dd HH:mm
*/
private String actEndTime;
/**
* 活动人数
*/
private Integer actQuota;
/**
* 活动积分
*/
private Integer reward;
/**
* 报名审核true只有志愿者才可以参加活动false: 只要是居民就可以参加活动
*/
private Boolean volunteerLimit;
/**
* 报名审核 true: 需人工审核 false: 无需审核
*/
private Boolean auditSwitch;
/**
* 报名截止时间yyyy-MM-dd HH:mm
*/
private String signUpEndTime;
/**
* 报名条件
*/
private String requirement;
/**
* 签到开始时间yyyy-MM-dd HH:mm
*/
private String signInStartTime;
/**
* 签到结束时间: yyyy-MM-dd HH:mm
*/
private String signInEndTime;
/**
* 签到地址
*/
private String signInAddress;
/**
* 签到地址-纬度
*/
private BigDecimal signInLatitude;
/**
* 签到地址-经度
*/
private BigDecimal signInLongitude;
/**
* 签到有效范围()
*/
private Integer signInRadius;
/**
* 主办方id
*/
private String sponsorId;
/**
* 主办方类型以网格名义grid , 以机关名义 agency
*/
private String sponsorType;
/**
* 主办方名称
*/
private String sponsorName;
/**
* 联系人
*/
private String sponsorContacts;
/**
* 联系电话
*/
private String sponsorTel;
}

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

193
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/PublishActInfoFormDTO.java

@ -0,0 +1,193 @@
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;
/**
* 发布活动-入参
*
* @author yinzuomei@elink-cn.com
* @date 2020/7/21 16:15
*/
@Data
public class PublishActInfoFormDTO implements Serializable {
private static final long serialVersionUID = -2066903357493362692L;
public interface AddUserInternalGroup {
}
public interface AddUserShowGroup extends CustomerClientShowGroup {
}
@Valid
@Size(min=1,message = "活动详情不能为空",groups = {AddUserShowGroup.class})
private List<PublishActContentFormDTO> actContent;
/**
* 活动草稿id,如果是编辑之前的活动草稿此列是有值的
*/
private String actDraftId;
/**
* 客户id
*/
@NotBlank(message = "客户id不能为空", groups = {AddUserInternalGroup.class})
private String customerId;
/**
* 活动标题
*/
@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;
}

48
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ActClockListResultDTO.java

@ -0,0 +1,48 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto.result.resi;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 打卡列表
*
* @author zhangyong
* @since v1.0.0 2020-07-14
*/
@Data
public class ActClockListResultDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 活动打卡人次
*/
private Integer clockNum;
/**
* 打卡列表
*/
private List<Object> clocks;
}

90
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiActInfoResultDTO.java

@ -0,0 +1,90 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto.result.resi;
import lombok.Data;
import java.io.Serializable;
/**
* 活动列表(标准) 返回值
*
* @author zhangyong
* @since v1.0.0 2020-07-20
*/
@Data
public class ResiActInfoResultDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 活动ID
*/
private String actId;
/**
* 标题
*/
private String title;
/**
* 活动封面
*/
private String coverPic;
/**
* 活动开始时间
*/
private String actStartTime;
/**
* 活动结束时间
*/
private String actEndTime;
/**
* 活动地点
*/
private String actAddress;
/**
* 活动名额类型true:固定名额(1) false 不限制名额(0)
*/
private Boolean actQuotaCategory;
/**
* 活动名额
*/
private Integer actQuota;
/**
* 已报名人数
*/
private Integer signupNum;
/**
* 活动状态(报名中signing_up已报满enough截止报名: end_sign_up; 已开始 in_progress; 已结束finished取消报名canceld)
*/
private String actCurrentState;
/**
*用户报名状态no_signed_up: 未报名signed_up: 已报名
*/
private String signupFlag;
}

33
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/CustomerCodeOperationHistoryDao.java → epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiInProgressActResultDTO.java

@ -15,19 +15,30 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dao;
package com.epmet.dto.result.resi;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.entity.CustomerCodeOperationHistoryEntity;
import org.apache.ibatis.annotations.Mapper;
import lombok.Data;
import java.io.Serializable;
/**
* 客户代码操作历史
* 即将进行/正在进行中的活动 返回值
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-07-09
* @author zhangyong
* @since v1.0.0 2020-07-21
*/
@Mapper
public interface CustomerCodeOperationHistoryDao extends BaseDao<CustomerCodeOperationHistoryEntity> {
}
@Data
public class ResiInProgressActResultDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String actId;
/**
* 标题
*/
private String title;
}

85
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiLatestActResultDTO.java

@ -0,0 +1,85 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto.result.resi;
import lombok.Data;
import java.io.Serializable;
/**
* 最新活动列表 返回值
*
* @author zhangyong
* @since v1.0.0 2020-07-20
*/
@Data
public class ResiLatestActResultDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String actId;
/**
* 标题
*/
private String title;
/**
* 活动封面
*/
private String coverPic;
/**
* 活动开始时间
*/
private String actStartTime;
/**
* 活动结束时间
*/
private String actEndTime;
/**
* 活动地点
*/
private String actAddress;
/**
* 活动名额类型true:固定名额(1) false 不限制名额(0)
*/
private Boolean actQuotaCategory;
/**
* 活动名额
*/
private Integer actQuota;
/**
* 已报名人数
*/
private Integer signupNum;
/**
* 活动状态(报名中signing_up已报满enough截止报名: end_sign_up; 已开始 in_progress;
*/
private String actCurrentState;
}

69
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiLookBackActResultDTO.java

@ -0,0 +1,69 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto.result.resi;
import lombok.Data;
import java.io.Serializable;
/**
* 活动回顾列表 返回值
*
* @author zhangyong
* @since v1.0.0 2020-07-20
*/
@Data
public class ResiLookBackActResultDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String actId;
/**
* 标题
*/
private String title;
/**
* 活动封面
*/
private String coverPic;
/**
* 活动开始时间
*/
private String actStartTime;
/**
* 活动结束时间
*/
private String actEndTime;
/**
* 活动地点
*/
private String actAddress;
/**
* 活动状态(已结束finished)
*/
private String actCurrentState;
}

85
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiMyActResultDTO.java

@ -0,0 +1,85 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto.result.resi;
import lombok.Data;
import java.io.Serializable;
/**
* 我的活动列表 返回值
*
* @author zhangyong
* @since v1.0.0 2020-07-20
*/
@Data
public class ResiMyActResultDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String actId;
/**
* 标题
*/
private String title;
/**
* 活动封面
*/
private String coverPic;
/**
* 活动开始时间
*/
private String actStartTime;
/**
* 活动结束时间
*/
private String actEndTime;
/**
* 活动地点
*/
private String actAddress;
/**
* 活动名额类型true:固定名额(1) false 不限制名额(0)
*/
private Boolean actQuotaCategory;
/**
* 活动名额
*/
private Integer actQuota;
/**
* 已报名人数
*/
private Integer signupNum;
/**
* 活动当前状态(审核中auditing审核通过passed审核不通过refused已结束canceld)
*/
private String actCurrentState;
}

25
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/ActPreviewContentResultDTO.java

@ -0,0 +1,25 @@
package com.epmet.dto.result.work;
import lombok.Data;
import java.io.Serializable;
/**
* 活动预览详情页-活动内容详情
*
* @author yinzuomei@elink-cn.com
* @date 2020/7/21 17:39
*/
@Data
public class ActPreviewContentResultDTO implements Serializable {
private static final long serialVersionUID = -3351984717336783565L;
/**
* 内容
*/
private String content;
/**
* 内容类型 图片img文字text
*/
private String contentType;
}

92
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/ActPreviewResultDTO.java

@ -0,0 +1,92 @@
package com.epmet.dto.result.work;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* 活动预览-查看活动详情返参修改
*
* @author yinzuomei@elink-cn.com
* @date 2020/7/21 17:23
*/
@Data
public class ActPreviewResultDTO implements Serializable {
private static final long serialVersionUID = 8655407962470027973L;
/**
* 活动草稿id
*/
private String actDraftId;
/**
* 活动标题
*/
private String title;
/**
* 活动人数
*/
private Integer actQuota;
/**
* true:固定名额 false 不限制名额
*/
private Boolean actQuotaCategory;
/**
* 活动积分
*/
private Integer reward;
/**
* 活动开始时间yyyy-MM-dd HH:mm
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private Date actStartTime;
/**
* 活动结束时间yyyy-MM-dd HH:mm
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private Date actEndTime;
/**
* 活动地点
*/
private String actAddress;
/**
* 报名截止时间yyyy-MM-dd HH:mm
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private Date signUpEndTime;
/**
* 报名条件
*/
private String requirement;
/**
* 主办方名称
*/
private String sponsorName;
/**
* 联系人
*/
private String sponsorContacts;
/**
* 联系电话
*/
private String sponsorTel;
/**
* 活动详情
*/
private List<ActPreviewContentResultDTO> actContent;
}

55
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/AuditingActUserResultDTO.java

@ -0,0 +1,55 @@
package com.epmet.dto.result.work;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 报名审核-待审核列表返参
*
* @author yinzuomei@elink-cn.com
* @date 2020/7/21 22:14
*/
@Data
public class AuditingActUserResultDTO implements Serializable {
private static final long serialVersionUID = 5567556309702585031L;
/**
* 活动id
*/
private String actId;
/**
* 用户id
*/
private String userId;
/**
* 姓名
*/
private String realName;
/**
* 微信昵称
*/
private String nickName;
/**
* 头像
*/
private String headImgUrl;
/**
* 报名时间yyyy-MM-dd HH:mm:ss
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date signUpTime;
/**
* true: 是志愿者 false : 不是志愿者
*/
private Boolean volunteerFlag;
}

51
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/CustomerHeartConfigsResultDTO.java

@ -0,0 +1,51 @@
package com.epmet.dto.result.work;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serializable;
/**
* 居民端根据客户id获取爱心互助自定义配置-返参DTO
*
* @author yinzuomei@elink-cn.com
* @date 2020/7/21 12:45
*/
@Data
public class CustomerHeartConfigsResultDTO implements Serializable {
/**
* act_customized主键
*/
@JsonIgnore
private String actCustomizedId;
/**
* 标题志愿者去哪儿
*/
private String titleName;
/**
* 咨询热线
*/
private String hotLine;
/**
* 活动列表
*/
private String actListName;
/**
* 爱心榜
*/
private String heartRankName;
/**
* 活动回顾
*/
private String actReviewName;
/**
* 我的活动
*/
private String myActName;
}

15
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/LatestDraftActInfoResultDTO.java

@ -17,6 +17,9 @@ import java.util.List;
@Data
public class LatestDraftActInfoResultDTO implements Serializable {
private static final long serialVersionUID = 4104775168048712734L;
/**
* 活动草稿id
*/
private String actDraftId;
/**
* 客户id
@ -36,13 +39,13 @@ public class LatestDraftActInfoResultDTO implements Serializable {
/**
* 报名开始时间
*/
@JsonFormat(pattern="yyyy-MM-dd HH:mm")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private Date signUpStartTime;
/**
* 报名截止时间
*/
@JsonFormat(pattern="yyyy-MM-dd HH:mm")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private Date signUpEndTime;
/**
@ -53,13 +56,13 @@ public class LatestDraftActInfoResultDTO implements Serializable {
/**
* 活动预计开始时间
*/
@JsonFormat(pattern="yyyy-MM-dd HH:mm")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private Date actStartTime;
/**
* 活动预计结束时间
*/
@JsonFormat(pattern="yyyy-MM-dd HH:mm")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private Date actEndTime;
/**
@ -80,13 +83,13 @@ public class LatestDraftActInfoResultDTO implements Serializable {
/**
* 签到开始时间
*/
@JsonFormat(pattern="yyyy-MM-dd HH:mm")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private Date signInStartTime;
/**
* 签到截止时间
*/
@JsonFormat(pattern="yyyy-MM-dd HH:mm")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private Date signInEndTime;
/**

2
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/PublishActInitResultDTO.java → epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/PublishActInitResultDTO.java

@ -1,4 +1,4 @@
package com.epmet.dto.form.work;
package com.epmet.dto.result.work;
import lombok.Data;

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

@ -0,0 +1,17 @@
package com.epmet.dto.result.work;
import lombok.Data;
import java.io.Serializable;
/**
* 发布活动-返参
*
* @author yinzuomei@elink-cn.com
* @date 2020/7/21 18:29
*/
@Data
public class PublishActResultDTO implements Serializable {
private static final long serialVersionUID = 4699176252192192495L;
private String actId;
}

21
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/SaveActDraftResultDTO.java

@ -0,0 +1,21 @@
package com.epmet.dto.result.work;
import lombok.Data;
import java.io.Serializable;
/**
* 预览-保存活动草稿返参DTO
*
* @author yinzuomei@elink-cn.com
* @date 2020/7/21 12:53
*/
@Data
public class SaveActDraftResultDTO implements Serializable {
private static final long serialVersionUID = -111427814347693729L;
/**
* 活动草稿id
*/
private String actDraftId;
}

30
epmet-module/epmet-heart/epmet-heart-server/pom.xml

@ -64,6 +64,18 @@
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>gov-org-client</artifactId>
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-user-client</artifactId>
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
@ -120,6 +132,12 @@
<nacos.ip/>
<spring.flyway.enabled>false</spring.flyway.enabled>
<openapi.scan.server.url>https://epmet-dev.elinkservice.cn/api/epmetscan/api</openapi.scan.server.url>
<!--亿联云消息网关配置-->
<elink.mq.host>https://epmet-dev.elinkservice.cn/estos/</elink.mq.host>
<elink.mq.sendMsgPath>producerService/producer/sendMsg</elink.mq.sendMsgPath>
<elink.mq.appId>202007161443499985fa2d397436d10356542134c8f008c48</elink.mq.appId>
<elink.mq.token>52d9d9b0e7d0eb5b8b81c205b579e07c</elink.mq.token>
</properties>
</profile>
<profile>
@ -152,6 +170,12 @@
<nacos.ip/>
<spring.flyway.enabled>true</spring.flyway.enabled>
<openapi.scan.server.url>https://epmet-dev.elinkservice.cn/api/epmetscan/api</openapi.scan.server.url>
<!--亿联云消息网关配置-->
<elink.mq.host>https://epmet-dev.elinkservice.cn/estos/</elink.mq.host>
<elink.mq.sendMsgPath>producerService/producer/sendMsg</elink.mq.sendMsgPath>
<elink.mq.appId>202007161443499985fa2d397436d10356542134c8f008c48</elink.mq.appId>
<elink.mq.token>52d9d9b0e7d0eb5b8b81c205b579e07c</elink.mq.token>
</properties>
</profile>
<profile>
@ -184,6 +208,12 @@
<nacos.ip/>
<spring.flyway.enabled>true</spring.flyway.enabled>
<openapi.scan.server.url>https://epmet-open.elinkservice.cn/api/epmetscan/api</openapi.scan.server.url>
<!--亿联云消息网关配置-->
<elink.mq.host>https://epmet-dev.elinkservice.cn/estos/</elink.mq.host>
<elink.mq.sendMsgPath>producerService/producer/sendMsg</elink.mq.sendMsgPath>
<elink.mq.appId>202007161443499985fa2d397436d10356542134c8f008c48</elink.mq.appId>
<elink.mq.token>52d9d9b0e7d0eb5b8b81c205b579e07c</elink.mq.token>
</properties>
</profile>
</profiles>

70
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/constant/ActConstant.java

@ -0,0 +1,70 @@
package com.epmet.constant;
/**
* 描述一下
*
* @author yinzuomei@elink-cn.com
* @date 2020/7/21 20:21
*/
public interface ActConstant {
/**
* 文本
*/
String ACT_CONTENT_TYPE_TEXT = "text";
/**
* 图片
*/
String ACT_CONTENT_TYPE_IMG="img";
/**
* 1活动状态
* act_info表中的status,已发布/报名中
* 发布成功后自动赋值
*/
String ACT_STATUS_PUBLISHED="published";
/**
* 2活动状态
* 活动已取消
* 成功取消活动后写入act_info表中的status,
*/
String ACT_STATUS_CANCELED="canceled";
/**
* 3活动状态
* 活动已结束
* 活动后写入act_info表中的status,
*/
String ACT_STATUS_FINISHED="finished";
/**
* 发布活动时选择的主办方名义已组织名义发布
*/
String SPONSOR_AGENCY="agency";
/**
* 发布活动时选择的主办方名义已网格名义发布
*/
String SPONSOR_GRID="grid";
/**
* 活动操作日志取消活动
*/
String ACT_OPER_TYPE_CANCEL="cancel";
/**
* 活动操作日志发布活动
*/
String ACT_OPER_TYPE_PUBLISH="publish";
/**
* 活动操作日志结束活动
*/
String ACT_OPER_TYPE_FINISH="finish";
/**
* 活动操作日志重新发布活动
*/
String ACT_OPER_TYPE_UPDATE="update";
}

15
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ActCustomizedController.java

@ -22,6 +22,7 @@ import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.work.ActCustomizedFormDTO;
import com.epmet.dto.form.work.SaveActCustomizedFormDTO;
import com.epmet.dto.result.work.ActCustomizedResultDTO;
import com.epmet.dto.result.work.CustomerHeartConfigsResultDTO;
import com.epmet.service.ActCustomizedService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
@ -70,4 +71,18 @@ public class ActCustomizedController {
actCustomizedService.saveConfigs(formDTO);
return new Result();
}
/**
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.work.CustomerHeartConfigsResultDTO>
* @author yinzuomei
* @description 居民端根据客户id获取爱心互助自定义配置
* @Date 2020/7/21 12:47
**/
@PostMapping("/resi/getconfigs")
public Result<CustomerHeartConfigsResultDTO> getCustomerHeartConfigs(@RequestBody ActCustomizedFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, ActCustomizedFormDTO.AddUserInternalGroup.class);
CustomerHeartConfigsResultDTO resultDTO = actCustomizedService.getCustomerHeartConfigs(formDTO);
return new Result<CustomerHeartConfigsResultDTO>().ok(resultDTO);
}
}

168
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ResiActListController.java

@ -0,0 +1,168 @@
package com.epmet.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.resi.*;
import com.epmet.dto.result.resi.*;
import com.epmet.service.ActInfoService;
import com.epmet.commons.tools.utils.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 居民端-活动列表相关api
*
* @author yinzuomei@elink-cn.com
* @date 2020/7/19 23:17
*/
@RestController
@RequestMapping("/resi/act")
public class ResiActListController {
@Autowired
private ActInfoService actInfoService;
/**
* 活动列表(包含状态报名中signing_up已报满enough截止报名: end_sign_up; 已开始 in_progress; 已结束finished)
*
* @param tokenDto
* @param formDto
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.dto.result.resi.ResiActInfoResultDTO>>
* @Author zhangyong
* @Date 13:39 2020-07-21
**/
@PostMapping("list")
public Result<List<ResiActInfoResultDTO>> listAct(@LoginUser TokenDto tokenDto, @RequestBody ResiActBaseFormDTO formDto) {
return actInfoService.listAct(tokenDto, formDto);
}
/**
* 我的活动-审核中
*
* @param tokenDto
* @param formDto
* @return java.util.List<com.epmet.dto.result.resi.ResiMyActResultDTO>
* @Author zhangyong
* @Date 13:53 2020-07-21
**/
@PostMapping("list/auditing")
public Result<List<ResiMyActResultDTO>> listAuditing(@LoginUser TokenDto tokenDto, @RequestBody ResiMyActFormDTO formDto) {
return actInfoService.myActListAuditing(tokenDto, formDto);
}
/**
* 我的活动-未通过
*
* @param tokenDto
* @param formDto
* @return java.util.List<com.epmet.dto.result.resi.ResiMyActResultDTO>
* @Author zhangyong
* @Date 13:53 2020-07-21
**/
@PostMapping("list/refused")
public Result<List<ResiMyActResultDTO>> listRefused(@LoginUser TokenDto tokenDto, @RequestBody ResiMyActFormDTO formDto) {
return actInfoService.myActListRefused(tokenDto, formDto);
}
/**
* 我的活动-已通过
*
* @param tokenDto
* @param formDto
* @return java.util.List<com.epmet.dto.result.resi.ResiMyActResultDTO>
* @Author zhangyong
* @Date 13:53 2020-07-21
**/
@PostMapping("list/passed")
public Result<List<ResiMyActResultDTO>> listPassed(@LoginUser TokenDto tokenDto, @RequestBody ResiMyActFormDTO formDto) {
return actInfoService.myActListPassed(tokenDto, formDto);
}
/**
* 我的活动-已结束
*
* @param tokenDto
* @param formDto
* @return java.util.List<com.epmet.dto.result.resi.ResiMyActResultDTO>
* @Author zhangyong
* @Date 13:53 2020-07-21
**/
@PostMapping("list/canceld")
public Result<List<ResiMyActResultDTO>> listcanceld(@LoginUser TokenDto tokenDto, @RequestBody ResiMyActFormDTO formDto) {
return actInfoService.myActListCanceld(tokenDto, formDto);
}
/**
* 最新活动列表
*
* @param formDto
* @return java.util.List<com.epmet.dto.result.resi.ResiLatestActResultDTO>
* @Author zhangyong
* @Date 13:53 2020-07-21
**/
@PostMapping("list/latestact")
public Result<List<ResiLatestActResultDTO>> latestAct(@RequestBody ResiLatestActFormDTO formDto) {
return actInfoService.latestAct(formDto);
}
/*
* 正在进行中的活动
* 进入活动的快捷入口, 前端只取第一条
*
* @param tokenDto
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.dto.result.resi.ResiInProgressActResultDTO>>
* @Author zhangyong
* @Date 14:56 2020-07-21
**/
@PostMapping("inprogress")
public Result<List<ResiInProgressActResultDTO>> inProgressAct(@LoginUser TokenDto tokenDto) {
return actInfoService.inProgressAct(tokenDto);
}
/**
* 活动回顾列表(包含状态已结束finished)
* @param formDto
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.dto.result.resi.ResiLookBackActResultDTO>>
* @Author zhangyong
* @Date 13:39 2020-07-21
**/
@PostMapping("actlookback")
public Result<List<ResiLookBackActResultDTO>> actLookBack(@RequestBody ResiActBaseFormDTO formDto) {
return actInfoService.actLookBack(formDto);
}
/**
* 取消活动报名
*
* @param tokenDto
* @param formDTO
* @return com.epmet.commons.tools.utils.Result
* @Author zhangyong
* @Date 09:29 2020-07-20
**/
@PostMapping("cancelsignup")
public Result cancelSignUp(@LoginUser TokenDto tokenDto, @RequestBody ResiActUserCancelSignUpFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return actInfoService.cancelSignUp(tokenDto, formDTO);
}
/**
* 重新定位
* 根据活动id前端传的实时经纬度与活动设置的经纬度相比较判断用户是否已到达打卡地点
*
* @param formDTO
* @return javax.xml.transform.Result
* @Author zhangyong
* @Date 16:48 2020-07-20
**/
@PostMapping("checksigninaddress")
public Result cancelSignUp(@RequestBody ResiActCaculateDistanceFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return actInfoService.checkSignInAddress(formDTO);
}
}

53
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/TestController.java

@ -1,15 +1,17 @@
package com.epmet.controller;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.dto.form.mq.MqBaseMsgDTO;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.HttpClientManager;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.SendMqMsgUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.Map;
@ -23,15 +25,38 @@ import java.util.Map;
@RestController
@RequestMapping("demo")
public class TestController {
private Logger logger = LogManager.getLogger(TestController.class);
@Autowired
private LoginUserUtil loginUserUtil;
@GetMapping("test")
public Result test(@LoginUser TokenDto tokenDto){
Map map=new HashMap<>();
String userId=loginUserUtil.getLoginUserId();
map.put("TokenDto", tokenDto);
map.put("userId",userId);
return new Result().ok(map);
}
private Logger logger = LogManager.getLogger(TestController.class);
@Autowired
private LoginUserUtil loginUserUtil;
@GetMapping("test")
public Result test(@LoginUser TokenDto tokenDto) {
Map map = new HashMap<>();
String userId = loginUserUtil.getLoginUserId();
map.put("TokenDto", tokenDto);
map.put("userId", userId);
return new Result().ok(map);
}
@PostMapping("sendPointMsg")
public Result sendPointEvent(@RequestBody MqBaseMsgDTO mqBaseMsgDTO) {
Result<String> result = SendMqMsgUtils.sendMsg(mqBaseMsgDTO);
logger.info("param:{},reult:{}", mqBaseMsgDTO, result);
return result;
}
public static void main(String[] args) {
String url = "https://epmet-dev.elinkservice.cn/estos/producerService/producer/sendMsg";
Map<String, String> msgInfo = new HashMap<String, String>(6);
msgInfo.put("appId", "202007161443499985fa2d397436d10356542134c8f008c48");
//msgInfo.put("appName", "党群e事通开发测试");
msgInfo.put("eventClass", "epmet_heart");
msgInfo.put("eventTag", "active_send_point");
msgInfo.put("msg", "我是消息体");
//msgInfo.put("msgId", "123456");
msgInfo.put("token", "52d9d9b0e7d0eb5b8b81c205b579e07c");
String jsonStrParam = JSON.toJSONString(msgInfo);
Result<String> result = HttpClientManager.getInstance().sendPostByHttps(url, jsonStrParam);
System.out.println("result:" + result + "param:" + jsonStrParam);
}
}

67
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/WorkActDraftController.java

@ -1,11 +1,13 @@
package com.epmet.controller;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.work.PublishActInitResultDTO;
import com.epmet.dto.result.work.LatestDraftActInfoResultDTO;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.work.*;
import com.epmet.dto.result.work.*;
import com.epmet.service.WorkActDraftService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@ -60,4 +62,65 @@ public class WorkActDraftController {
LatestDraftActInfoResultDTO resultDTO=workActDraftService.getLatestDraft();
return new Result<LatestDraftActInfoResultDTO>().ok(resultDTO);
}
/**
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.work.SaveActDraftResultDTO>
* @param formDTO
* @author yinzuomei
* @description 预览按下-调用此接口保存活动信息活动内容
* @Date 2020/7/21 14:00
**/
@PostMapping("saveact")
public Result<SaveActDraftResultDTO> 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<SaveActDraftResultDTO>().ok(resultDTO);
}
/**
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.work.ActPreviewResultDTO>
* @param formDTO
* @author yinzuomei
* @description 预览-查看活动详情
* @Date 2020/7/21 17:24
**/
@PostMapping("preview")
public Result<ActPreviewResultDTO> previewActDetail(@RequestBody ActPreviewFormDTO formDTO){
ValidatorUtils.validateEntity(formDTO,ActPreviewFormDTO.UserInternalGroup.class);
ActPreviewResultDTO resultDTO=workActDraftService.previewActDetail(formDTO);
return new Result<ActPreviewResultDTO>().ok(resultDTO);
}
/**
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.work.PublishActResultDTO>
* @author yinzuomei
* @description 发布活动
* @Date 2020/7/21 18:32
**/
@PostMapping("publish")
public Result<PublishActResultDTO> publishAct(@RequestBody PublishActInfoFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, PublishActInfoFormDTO.AddUserShowGroup.class, PublishActInfoFormDTO.AddUserInternalGroup.class);
for (PublishActContentFormDTO actContentFormDTO : formDTO.getActContent()) {
ValidatorUtils.validateEntity(actContentFormDTO,
PublishActContentFormDTO.UserShowGroup.class,
PublishActContentFormDTO.UserInternalGroup.class
);
}
PublishActResultDTO resultDTO = workActDraftService.publishAct(formDTO);
return new Result<PublishActResultDTO>().ok(resultDTO);
}
}

27
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/WorkActUserController.java

@ -1,8 +1,18 @@
package com.epmet.controller;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.work.AuditingActUserFormDTO;
import com.epmet.dto.result.work.AuditingActUserResultDTO;
import com.epmet.service.WorkActUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* 工作端活动人员相关api
*
@ -12,4 +22,21 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/work/actuser")
public class WorkActUserController {
@Autowired
private WorkActUserService workActUserService;
/**
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.dto.result.work.AuditingActUserResultDTO>>
* @param formDTO
* @author yinzuomei
* @description 报名审核-待审核列表
* @Date 2020/7/21 22:24
**/
@PostMapping("auditinglist")
public Result<List<AuditingActUserResultDTO>> getAuditingList(@RequestBody AuditingActUserFormDTO formDTO){
ValidatorUtils.validateEntity(formDTO, AuditingActUserFormDTO.AddUserInternalGroup.class);
List<AuditingActUserResultDTO> list=workActUserService.getAuditingList(formDTO);
return new Result<List<AuditingActUserResultDTO>>().ok(list);
}
}

10
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/ActCustomizedDao.java

@ -19,6 +19,7 @@ package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.result.work.ActCustomizedResultDTO;
import com.epmet.dto.result.work.CustomerHeartConfigsResultDTO;
import com.epmet.entity.ActCustomizedEntity;
import org.apache.ibatis.annotations.Mapper;
@ -39,4 +40,13 @@ public interface ActCustomizedDao extends BaseDao<ActCustomizedEntity> {
* @Date 2020/7/20 17:04
**/
ActCustomizedResultDTO selectConfigsByCustomerId(String customerId);
/**
* @return com.epmet.dto.result.work.CustomerHeartConfigsResultDTO
* @param customerId
* @author yinzuomei
* @description 居民端根据客户id获取爱心互助自定义配置
* @Date 2020/7/21 12:48
**/
CustomerHeartConfigsResultDTO selectCustomerHeartConfigs(String customerId);
}

148
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/ActInfoDao.java

@ -18,8 +18,16 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.ActInfoDTO;
import com.epmet.dto.form.resi.ResiActBaseFormDTO;
import com.epmet.dto.form.resi.ResiLatestActFormDTO;
import com.epmet.dto.form.resi.ResiMyActFormDTO;
import com.epmet.dto.result.resi.*;
import com.epmet.entity.ActInfoEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 活动信息
@ -29,5 +37,141 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface ActInfoDao extends BaseDao<ActInfoEntity> {
}
/**
* 活动列表 - 报名中(未报满) - signing_up
* 列表排序第一组 无分页
* @param formDTO
* @return java.util.List<com.epmet.dto.result.resi.ResiActInfoResultDTO>
* @Author zhangyong
* @Date 11:00 2020-07-20
**/
List<ResiActInfoResultDTO> selectListActSigningUp(ResiActBaseFormDTO formDTO);
/**
* 活动列表 - (报名中)已报满 - enough
* 列表排序第二组 无分页
* @param formDTO
* @return java.util.List<com.epmet.dto.result.resi.ResiActInfoResultDTO>
* @Author zhangyong
* @Date 11:00 2020-07-20
**/
List<ResiActInfoResultDTO> selectListActQuotaIsEnough(ResiActBaseFormDTO formDTO);
/**
* 活动列表 - 截止报名 - end_sign_up
* 列表排序第三组 无分页
* @param formDTO
* @return java.util.List<com.epmet.dto.result.resi.ResiActInfoResultDTO>
* @Author zhangyong
* @Date 11:00 2020-07-20
**/
List<ResiActInfoResultDTO> selectListActEndSignUp(ResiActBaseFormDTO formDTO);
/**
* 活动列表 - 已开始 - in_progress
* 列表排序第四组 无分页
* @param formDTO
* @return java.util.List<com.epmet.dto.result.resi.ResiActInfoResultDTO>
* @Author zhangyong
* @Date 11:00 2020-07-20
**/
List<ResiActInfoResultDTO> selectListActInProgress(ResiActBaseFormDTO formDTO);
/**
* 活动列表 - 已结束 - finished
* 列表排序第四无组 分页
* @param formDTO
* @return java.util.List<com.epmet.dto.result.resi.ResiActInfoResultDTO>
* @Author zhangyong
* @Date 11:00 2020-07-20
**/
List<ResiActInfoResultDTO> selectListActFinished(ResiActBaseFormDTO formDTO);
// 活动列表End
/**
* 我的活动-审核中
*
* @param formDTO
* @return java.util.List<com.epmet.dto.result.resi.ResiMyActResultDTO>
* @Author zhangyong
* @Date 13:53 2020-07-20
**/
List<ResiMyActResultDTO> selectListMyActAuditing(ResiMyActFormDTO formDTO);
/**
* 我的活动-审核不通过
*
* @param formDTO
* @return java.util.List<com.epmet.dto.result.resi.ResiMyActResultDTO>
* @Author zhangyong
* @Date 13:53 2020-07-20
**/
List<ResiMyActResultDTO> selectListActRefused(ResiMyActFormDTO formDTO);
/**
* 我的活动-已通过
*
* @param formDTO
* @return java.util.List<com.epmet.dto.result.resi.ResiMyActResultDTO>
* @Author zhangyong
* @Date 13:53 2020-07-20
**/
List<ResiMyActResultDTO> selectListActMyHavePassed(ResiMyActFormDTO formDTO);
/**
* 我的活动-已结束
*
* @param formDTO
* @return java.util.List<com.epmet.dto.result.resi.ResiMyActResultDTO>
* @Author zhangyong
* @Date 13:53 2020-07-20
**/
List<ResiMyActResultDTO> selectListMyActCanceld(ResiMyActFormDTO formDTO);
// 我的活动End
/**
* 最新活动列表(未结束的未取消的活动
* @param formDTO
* @return java.util.List<com.epmet.dto.result.resi.ResiLatestActResultDTO>
* @Author zhangyong
* @Date 11:00 2020-07-20
**/
List<ResiLatestActResultDTO> selectListLatestAct(ResiLatestActFormDTO formDTO);
/**
* 即将进行/正在进行中的活动
* 进入活动的快捷入口滚动显示 当前用户正在(或将要)进行的一条活动
* 活动开始前1小时此处展示您报名的情暖夕阳爱在锦水的活动还有xx分钟开始
* 活动开始后显示正在进行中的活动情暖夕阳
*
* @param userId
* @return java.util.List<com.epmet.dto.result.resi.ResiInProgressActResultDTO>
* @Author zhangyong
* @Date 11:00 2020-07-20
**/
List<ResiInProgressActResultDTO> selectListInProgress(@Param("userId") String userId);
/**
* 活动回顾列表
* 已结束的活动并且有实况或有回顾
* 按照时间顺序排序
*
* @param formDTO
* @return java.util.List<com.epmet.dto.result.resi.ResiLookBackActResultDTO>
* @Author zhangyong
* @Date 11:00 2020-07-20
**/
List<ResiLookBackActResultDTO> selectListLookBackAct(ResiActBaseFormDTO formDTO);
/**
* 根据活动id用户id 查询用户报名的活动信息
*
* @param actId
* @param userId
* @return com.epmet.dto.ActInfoDTO
* @Author zhangyong
* @Date 17:39 2020-07-20
**/
ActInfoDTO queryActAccordingToActIdAndUserId(@Param("actId") String actId, @Param("userId") String userId);
}

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

@ -18,9 +18,12 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.ActUserRelationDTO;
import com.epmet.entity.ActUserRelationEntity;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 用户活动关系表
*
@ -29,5 +32,22 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface ActUserRelationDao extends BaseDao<ActUserRelationEntity> {
/**
* @return java.util.List<com.epmet.dto.ActUserRelationDTO>
* @param actId 活动id
* @author yinzuomei
* @description 根据活动id查询待审核人员关系记录
* @Date 2020/7/21 22:41
**/
List<ActUserRelationDTO> selectAuditingUserList(String actId);
/**
* @return java.util.List<java.lang.String>
* @param actId 活动id
* @author yinzuomei
* @description 根据活动id查询待审核人员,返回用户id集合
* @Date 2020/7/21 22:45
**/
List<String> selectAuditingUserIds(String actId);
}

11
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/HeartUserInfoDao.java

@ -18,6 +18,7 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.HeartUserInfoDTO;
import com.epmet.entity.HeartUserInfoEntity;
import org.apache.ibatis.annotations.Mapper;
@ -29,5 +30,13 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface HeartUserInfoDao extends BaseDao<HeartUserInfoEntity> {
/**
* @return com.epmet.dto.HeartUserInfoDTO
* @param userId
* @author yinzuomei
* @description 根据用户id查询爱心用户记录
* @Date 2020/7/21 22:48
**/
HeartUserInfoDTO selectByUserId(String userId);
}

10
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/LatestActContentDao.java

@ -19,6 +19,7 @@ package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.result.work.ActDraftContentDTOResultDTO;
import com.epmet.dto.result.work.ActPreviewContentResultDTO;
import com.epmet.entity.LatestActContentEntity;
import org.apache.ibatis.annotations.Mapper;
@ -50,4 +51,13 @@ public interface LatestActContentDao extends BaseDao<LatestActContentEntity> {
* @Date 2020/7/20 23:01
**/
List<ActDraftContentDTOResultDTO> selectActContentList(String actId);
/**
* @return java.util.List<com.epmet.dto.result.work.ActPreviewContentResultDTO>
* @param actId
* @author yinzuomei
* @description 预览-查看活动详情
* @Date 2020/7/21 18:07
**/
List<ActPreviewContentResultDTO> previewActContent(String actId);
}

10
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/LatestActInfoDao.java

@ -18,6 +18,7 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.result.work.ActPreviewResultDTO;
import com.epmet.dto.result.work.LatestDraftActInfoResultDTO;
import com.epmet.entity.LatestActInfoEntity;
import org.apache.ibatis.annotations.Mapper;
@ -48,4 +49,13 @@ public interface LatestActInfoDao extends BaseDao<LatestActInfoEntity> {
* @Date 2020/7/20 23:05
**/
LatestDraftActInfoResultDTO selectLatestActDraft(String userId);
/**
* @return com.epmet.dto.result.work.ActPreviewResultDTO
* @param actDraftId
* @author yinzuomei
* @description 预览-查看活动详情
* @Date 2020/7/21 17:56
**/
ActPreviewResultDTO previewActInfo(String actDraftId);
}

2
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/ActInfoEntity.java

@ -127,7 +127,7 @@ public class ActInfoEntity extends BaseEpmetEntity {
/**
* 活动名额类型(0-不限名额1-固定名额)
*/
private Integer actQuotaCategory;
private Boolean actQuotaCategory;
/**
* 活动名额

5
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/ActOperationRecEntity.java

@ -18,13 +18,10 @@
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 活动操作日志表
*
@ -54,6 +51,6 @@ public class ActOperationRecEntity extends BaseEpmetEntity {
/**
* 1通知用户0不通知
*/
private Integer noticeUser;
private Boolean noticeUser;
}

5
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/HeartUserInfoEntity.java

@ -18,13 +18,10 @@
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 用户信息
*
@ -51,7 +48,7 @@ public class HeartUserInfoEntity extends BaseEpmetEntity {
/**
* 1是志愿者0不是志愿者志愿者注册成功后需要来更新值
*/
private Integer volunteerFlag;
private Boolean volunteerFlag;
/**
* 爱心时长(单位分钟)参与并签到了的活动实际结束-实际开始签到的未签到但是有积分的

10
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/ActCustomizedService.java

@ -23,6 +23,7 @@ import com.epmet.dto.ActCustomizedDTO;
import com.epmet.dto.form.work.ActCustomizedFormDTO;
import com.epmet.dto.form.work.SaveActCustomizedFormDTO;
import com.epmet.dto.result.work.ActCustomizedResultDTO;
import com.epmet.dto.result.work.CustomerHeartConfigsResultDTO;
import com.epmet.entity.ActCustomizedEntity;
import java.util.List;
@ -113,4 +114,13 @@ public interface ActCustomizedService extends BaseService<ActCustomizedEntity> {
* @Date 2020/7/20 17:26
**/
void saveConfigs(SaveActCustomizedFormDTO formDTO);
/**
* @return com.epmet.dto.result.work.CustomerHeartConfigsResultDTO
* @param formDTO
* @author yinzuomei
* @description 居民端根据客户id获取爱心互助自定义配置
* @Date 2020/7/21 12:47
**/
CustomerHeartConfigsResultDTO getCustomerHeartConfigs(ActCustomizedFormDTO formDTO);
}

111
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/ActInfoService.java

@ -19,9 +19,13 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.ActInfoDTO;
import com.epmet.dto.form.resi.*;
import com.epmet.dto.result.resi.*;
import com.epmet.entity.ActInfoEntity;
import com.epmet.commons.tools.utils.Result;
import java.util.List;
import java.util.Map;
@ -92,4 +96,109 @@ public interface ActInfoService extends BaseService<ActInfoEntity> {
* @date 2020-07-19
*/
void delete(String[] ids);
}
/**
* 根据活动id前端传的实时经纬度与活动设置的经纬度相比较判断用户是否已到达打卡地点
* @param fromDTO
* @return javax.xml.transform.Result
* @Author zhangyong
* @Date 16:48 2020-07-20
**/
Result checkSignInAddress(ResiActCaculateDistanceFormDTO fromDTO);
/**
* 活动列表(包含状态报名中signing_up已报满enough截止报名: end_sign_up; 已开始 in_progress; 已结束finished)
*
* @param tokenDto
* @param formDto
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.dto.result.resi.ResiActInfoResultDTO>>
* @Author zhangyong
* @Date 13:39 2020-07-21
**/
Result<List<ResiActInfoResultDTO>> listAct(TokenDto tokenDto, ResiActBaseFormDTO formDto);
/*
* 我的活动-审核中
*
* @param tokenDto
* @param formDto
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.dto.result.resi.ResiMyActResultDTO>>
* @Author zhangyong
* @Date 14:15 2020-07-21
**/
Result<List<ResiMyActResultDTO>> myActListAuditing(TokenDto tokenDto, ResiMyActFormDTO formDto);
/*
* 我的活动-未通过
*
* @param tokenDto
* @param formDto
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.dto.result.resi.ResiMyActResultDTO>>
* @Author zhangyong
* @Date 14:15 2020-07-21
**/
Result<List<ResiMyActResultDTO>> myActListRefused(TokenDto tokenDto, ResiMyActFormDTO formDto);
/*
* 我的活动-已通过
*
* @param tokenDto
* @param formDto
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.dto.result.resi.ResiMyActResultDTO>>
* @Author zhangyong
* @Date 14:15 2020-07-21
**/
Result<List<ResiMyActResultDTO>> myActListPassed(TokenDto tokenDto, ResiMyActFormDTO formDto);
/*
* 我的活动-已结束
*
* @param tokenDto
* @param formDto
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.dto.result.resi.ResiMyActResultDTO>>
* @Author zhangyong
* @Date 14:15 2020-07-21
**/
Result<List<ResiMyActResultDTO>> myActListCanceld(TokenDto tokenDto, ResiMyActFormDTO formDto);
/**
* 最新活动列表
*
* @param formDto
* @return java.util.List<com.epmet.dto.result.resi.ResiLatestActResultDTO>
* @Author zhangyong
* @Date 13:53 2020-07-21
**/
Result<List<ResiLatestActResultDTO>> latestAct(ResiLatestActFormDTO formDto);
/**
* 正在进行中的活动
* 进入活动的快捷入口, 前端只取第一条
*
* @param tokenDto
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.dto.result.resi.ResiInProgressActResultDTO>>
* @Author zhangyong
* @Date 15:00 2020-07-21
**/
Result<List<ResiInProgressActResultDTO>> inProgressAct(TokenDto tokenDto);
/**
* 活动回顾列表(包含状态已结束finished)
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.dto.result.resi.ResiLookBackActResultDTO>>
* @Author zhangyong
* @Date 13:39 2020-07-21
**/
Result<List<ResiLookBackActResultDTO>> actLookBack(ResiActBaseFormDTO formDTO);
/**
* 取消活动报名
*
* @param tokenDto
* @param formDTO
* @return com.epmet.commons.tools.utils.Result
* @Author zhangyong
* @Date 09:29 2020-07-20
**/
Result cancelSignUp(TokenDto tokenDto, ResiActUserCancelSignUpFormDTO formDTO);
}

18
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/ActUserRelationService.java

@ -92,4 +92,22 @@ public interface ActUserRelationService extends BaseService<ActUserRelationEntit
* @date 2020-07-19
*/
void delete(String[] ids);
/**
* @return java.util.List<com.epmet.dto.ActUserRelationDTO>
* @param actId
* @author yinzuomei
* @description 根据活动id查询待审核人员关系记录
* @Date 2020/7/21 22:40
**/
List<ActUserRelationDTO> getAuditingUserList(String actId);
/**
* @return java.util.List<java.lang.String>
* @param actId
* @author yinzuomei
* @description 根据活动id查询待审核人员,返回用户id集合
* @Date 2020/7/21 22:44
**/
List<String> getAuditingUserIds(String actId);
}

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

@ -92,4 +92,13 @@ public interface HeartUserInfoService extends BaseService<HeartUserInfoEntity> {
* @date 2020-07-19
*/
void delete(String[] ids);
/**
* @return com.epmet.dto.HeartUserInfoDTO
* @param userId
* @author yinzuomei
* @description 根据用户id查询爱心用户记录
* @Date 2020/7/21 22:48
**/
HeartUserInfoDTO getByUserId(String userId);
}

20
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActContentService.java

@ -21,6 +21,7 @@ import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.LatestActContentDTO;
import com.epmet.dto.result.work.ActDraftContentDTOResultDTO;
import com.epmet.dto.result.work.ActPreviewContentResultDTO;
import com.epmet.entity.LatestActContentEntity;
import java.util.List;
@ -74,6 +75,16 @@ public interface LatestActContentService extends BaseService<LatestActContentEnt
*/
void save(LatestActContentDTO dto);
/**
* 默认保存
*
* @param dtoList
* @return void
* @author generator
* @date 2020-07-19
*/
void saveLatestActContentDTOList(List<LatestActContentDTO> dtoList);
/**
* 默认更新
*
@ -111,4 +122,13 @@ public interface LatestActContentService extends BaseService<LatestActContentEnt
* @Date 2020/7/20 22:59
**/
List<ActDraftContentDTOResultDTO> selectActContentList(String actId);
/**
* @return java.util.List<com.epmet.dto.result.work.ActPreviewContentResultDTO>
* @param actDraftId latest_act_info主键
* @author yinzuomei
* @description 预览-查看活动详情
* @Date 2020/7/21 17:47
**/
List<ActPreviewContentResultDTO> previewActContent(String actDraftId);
}

20
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActInfoService.java

@ -20,6 +20,7 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.LatestActInfoDTO;
import com.epmet.dto.result.work.ActPreviewResultDTO;
import com.epmet.dto.result.work.LatestDraftActInfoResultDTO;
import com.epmet.entity.LatestActInfoEntity;
@ -74,6 +75,16 @@ public interface LatestActInfoService extends BaseService<LatestActInfoEntity> {
*/
void save(LatestActInfoDTO dto);
/**
* 默认保存,返回主键
*
* @param dto
* @return void
* @author generator
* @date 2020-07-19
*/
String saveOrUpdateLatestActInfoDTO(LatestActInfoDTO dto);
/**
* 默认更新
*
@ -120,4 +131,13 @@ public interface LatestActInfoService extends BaseService<LatestActInfoEntity> {
* @Date 2020/7/20 22:59
**/
LatestDraftActInfoResultDTO getLatestActDraft(String userId);
/**
* @return com.epmet.dto.result.work.ActPreviewResultDTO
* @param actDraftId latest_act_info主键
* @author yinzuomei
* @description 预览-查看活动详情
* @Date 2020/7/21 17:45
**/
ActPreviewResultDTO previewActInfo(String actDraftId);
}

33
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/WorkActDraftService.java

@ -1,7 +1,9 @@
package com.epmet.service;
import com.epmet.dto.form.work.PublishActInitResultDTO;
import com.epmet.dto.result.work.LatestDraftActInfoResultDTO;
import com.epmet.dto.form.work.ActPreviewFormDTO;
import com.epmet.dto.form.work.DraftActInfoFormDTO;
import com.epmet.dto.form.work.PublishActInfoFormDTO;
import com.epmet.dto.result.work.*;
/**
* 工作端活动草稿
@ -37,4 +39,31 @@ public interface WorkActDraftService {
* @Date 2020/7/20 22:29
**/
LatestDraftActInfoResultDTO getLatestDraft();
/**
* @return com.epmet.dto.result.work.SaveActDraftResultDTO
* @param formDTO
* @author yinzuomei
* @description 预览按下-调用此接口保存活动信息活动内容
* @Date 2020/7/21 14:00
**/
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);
/**
* @return com.epmet.dto.result.work.PublishActResultDTO
* @param formDTO
* @author yinzuomei
* @description 发布活动
* @Date 2020/7/21 18:33
**/
PublishActResultDTO publishAct(PublishActInfoFormDTO formDTO);
}

23
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/WorkActUserService.java

@ -0,0 +1,23 @@
package com.epmet.service;
import com.epmet.dto.form.work.AuditingActUserFormDTO;
import com.epmet.dto.result.work.AuditingActUserResultDTO;
import java.util.List;
/**
* 工作端活动人员相关api
*
* @author yinzuomei@elink-cn.com
* @date 2020/7/21 22:23
*/
public interface WorkActUserService {
/**
* @return java.util.List<com.epmet.dto.result.work.AuditingActUserResultDTO>
* @param formDTO
* @author yinzuomei
* @description 报名审核-待审核列表
* @Date 2020/7/21 22:25
**/
List<AuditingActUserResultDTO> getAuditingList(AuditingActUserFormDTO formDTO);
}

15
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActCustomizedServiceImpl.java

@ -29,6 +29,7 @@ import com.epmet.dto.ActCustomizedDTO;
import com.epmet.dto.form.work.ActCustomizedFormDTO;
import com.epmet.dto.form.work.SaveActCustomizedFormDTO;
import com.epmet.dto.result.work.ActCustomizedResultDTO;
import com.epmet.dto.result.work.CustomerHeartConfigsResultDTO;
import com.epmet.entity.ActCustomizedEntity;
import com.epmet.redis.ActCustomizedRedis;
import com.epmet.service.ActCustomizedService;
@ -130,6 +131,7 @@ public class ActCustomizedServiceImpl extends BaseServiceImpl<ActCustomizedDao,
insert(actCustomizedEntity);
actCustomizedResultDTO = ConvertUtils.sourceToTarget(actCustomizedEntity, ActCustomizedResultDTO.class);
actCustomizedResultDTO.setActCustomizedId(actCustomizedEntity.getId());
actCustomizedResultDTO.setHotLine(ActCustomizedConstant.HOT_LINE);
}
return actCustomizedResultDTO;
}
@ -158,4 +160,17 @@ public class ActCustomizedServiceImpl extends BaseServiceImpl<ActCustomizedDao,
}
}
/**
* @param formDTO
* @return com.epmet.dto.result.work.CustomerHeartConfigsResultDTO
* @author yinzuomei
* @description 居民端根据客户id获取爱心互助自定义配置
* @Date 2020/7/21 12:47
**/
@Override
public CustomerHeartConfigsResultDTO getCustomerHeartConfigs(ActCustomizedFormDTO formDTO) {
CustomerHeartConfigsResultDTO resultDTO = baseDao.selectCustomerHeartConfigs(formDTO.getCustomerId());
return resultDTO;
}
}

115
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActInfoServiceImpl.java

@ -20,19 +20,29 @@ package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
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.RenException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dao.ActInfoDao;
import com.epmet.dto.ActInfoDTO;
import com.epmet.dto.form.resi.*;
import com.epmet.dto.result.resi.*;
import com.epmet.entity.ActInfoEntity;
import com.epmet.redis.ActInfoRedis;
import com.epmet.service.ActInfoService;
import com.epmet.service.ActUserRelationService;
import com.epmet.utils.CaculateDistance;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@ -49,6 +59,9 @@ public class ActInfoServiceImpl extends BaseServiceImpl<ActInfoDao, ActInfoEntit
@Autowired
private ActInfoRedis actInfoRedis;
@Autowired
private ActUserRelationService relationService;
@Override
public PageData<ActInfoDTO> page(Map<String, Object> params) {
IPage<ActInfoEntity> page = baseDao.selectPage(
@ -101,4 +114,104 @@ public class ActInfoServiceImpl extends BaseServiceImpl<ActInfoDao, ActInfoEntit
baseDao.deleteBatchIds(Arrays.asList(ids));
}
}
@Override
public Result<List<ResiActInfoResultDTO>> listAct(TokenDto tokenDto, ResiActBaseFormDTO formDto) {
List<ResiActInfoResultDTO> list = new ArrayList<>();
formDto.setUserId(tokenDto.getUserId());
// 查询活动状态是:报名中 signing_up
List<ResiActInfoResultDTO> signingUp = baseDao.selectListActSigningUp(formDto);
list.addAll(signingUp);
// 查询活动状态是:已报满 enough
List<ResiActInfoResultDTO> enough = baseDao.selectListActQuotaIsEnough(formDto);
list.addAll(enough);
// 查询活动状态是:截止报名 end_sign_up
List<ResiActInfoResultDTO> endSignUp = baseDao.selectListActEndSignUp(formDto);
list.addAll(endSignUp);
// 查询活动状态是:已开始 in_progress
List<ResiActInfoResultDTO> inProgress = baseDao.selectListActInProgress(formDto);
list.addAll(inProgress);
// 查询活动状态是:已结束 finished
int pageIndex = (formDto.getPageNo() - NumConstant.ONE) * formDto.getPageSize();
formDto.setPageNo(pageIndex);
List<ResiActInfoResultDTO> finished = baseDao.selectListActFinished(formDto);
list.addAll(finished);
return new Result<List<ResiActInfoResultDTO>>().ok(list);
}
@Override
public Result<List<ResiMyActResultDTO>> myActListAuditing(TokenDto tokenDto, ResiMyActFormDTO formDto) {
formDto.setUserId(tokenDto.getUserId());
List<ResiMyActResultDTO> myAct = baseDao.selectListMyActAuditing(formDto);
return new Result<List<ResiMyActResultDTO>>().ok(myAct);
}
@Override
public Result<List<ResiMyActResultDTO>> myActListRefused(TokenDto tokenDto, ResiMyActFormDTO formDto) {
formDto.setUserId(tokenDto.getUserId());
List<ResiMyActResultDTO> myAct = baseDao.selectListActRefused(formDto);
return new Result<List<ResiMyActResultDTO>>().ok(myAct);
}
@Override
public Result<List<ResiMyActResultDTO>> myActListPassed(TokenDto tokenDto, ResiMyActFormDTO formDto) {
formDto.setUserId(tokenDto.getUserId());
List<ResiMyActResultDTO> myAct = baseDao.selectListActMyHavePassed(formDto);
return new Result<List<ResiMyActResultDTO>>().ok(myAct);
}
@Override
public Result<List<ResiMyActResultDTO>> myActListCanceld(TokenDto tokenDto, ResiMyActFormDTO formDto) {
formDto.setUserId(tokenDto.getUserId());
List<ResiMyActResultDTO> myAct = baseDao.selectListMyActCanceld(formDto);
return new Result<List<ResiMyActResultDTO>>().ok(myAct);
}
@Override
public Result<List<ResiLatestActResultDTO>> latestAct(ResiLatestActFormDTO formDto) {
List<ResiLatestActResultDTO> latest = baseDao.selectListLatestAct(formDto);
return new Result<List<ResiLatestActResultDTO>>().ok(latest);
}
@Override
public Result<List<ResiInProgressActResultDTO>> inProgressAct(TokenDto tokenDto) {
List<ResiInProgressActResultDTO> inProgress = baseDao.selectListInProgress(tokenDto.getUserId());
return new Result<List<ResiInProgressActResultDTO>>().ok(inProgress);
}
@Override
public Result<List<ResiLookBackActResultDTO>> actLookBack(ResiActBaseFormDTO formDTO) {
List<ResiLookBackActResultDTO> lookBackAct = baseDao.selectListLookBackAct(formDTO);
return new Result<List<ResiLookBackActResultDTO>>().ok(lookBackAct);
}
@Override
public Result cancelSignUp(TokenDto tokenDto, ResiActUserCancelSignUpFormDTO formDTO) {
// 判断用户是否已报名该活动
ActInfoDTO actInfoDTO = baseDao.queryActAccordingToActIdAndUserId(formDTO.getActId(),formDTO.getUserId());
// if (null == actInfoDTO){
// throw new RenException(EpmetErrorCode.NO_ACT_TO_CANCEL_SIGN_UP_WERE_FOUND.getCode());
// }
//1、更新用户活动关系表
// relationService.update();
//2、插入用户活动关系日志表
//3、更新act_info的已报名名额
return null;
}
@Override
public Result checkSignInAddress(ResiActCaculateDistanceFormDTO formDTO) {
// 根据活动id,查询活动基本信息
ActInfoEntity entity = baseDao.selectById(formDTO.getActId());
Double distance = CaculateDistance.getDistance(formDTO.getLongitude(),formDTO.getLatitude(),entity.getActLongitude().doubleValue(),entity.getActLatitude().doubleValue());
// if (distance <= entity.getSigninRadius()){
// return new Result();
// } else {
// throw new RenException(EpmetErrorCode.NOT_IN_THE_SIGN_IN_RANGE.getCode());
// }
return new Result();
}
}

24
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActUserRelationServiceImpl.java

@ -101,4 +101,28 @@ public class ActUserRelationServiceImpl extends BaseServiceImpl<ActUserRelationD
baseDao.deleteBatchIds(Arrays.asList(ids));
}
/**
* @param actId
* @return java.util.List<com.epmet.dto.ActUserRelationDTO>
* @author yinzuomei
* @description 根据活动id查询待审核人员关系记录
* @Date 2020/7/21 22:40
**/
@Override
public List<ActUserRelationDTO> getAuditingUserList(String actId) {
return baseDao.selectAuditingUserList(actId);
}
/**
* @param actId
* @return java.util.List<java.lang.String>
* @author yinzuomei
* @description 根据活动id查询待审核人员,返回用户id集合
* @Date 2020/7/21 22:44
**/
@Override
public List<String> getAuditingUserIds(String actId) {
return baseDao.selectAuditingUserIds(actId);
}
}

12
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/HeartUserInfoServiceImpl.java

@ -101,4 +101,16 @@ public class HeartUserInfoServiceImpl extends BaseServiceImpl<HeartUserInfoDao,
baseDao.deleteBatchIds(Arrays.asList(ids));
}
/**
* @param userId
* @return com.epmet.dto.HeartUserInfoDTO
* @author yinzuomei
* @description 根据用户id查询爱心用户记录
* @Date 2020/7/21 22:48
**/
@Override
public HeartUserInfoDTO getByUserId(String userId) {
return baseDao.selectByUserId(userId);
}
}

26
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActContentServiceImpl.java

@ -26,6 +26,7 @@ import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.dao.LatestActContentDao;
import com.epmet.dto.LatestActContentDTO;
import com.epmet.dto.result.work.ActDraftContentDTOResultDTO;
import com.epmet.dto.result.work.ActPreviewContentResultDTO;
import com.epmet.entity.LatestActContentEntity;
import com.epmet.redis.LatestActContentRedis;
import com.epmet.service.LatestActContentService;
@ -88,6 +89,18 @@ public class LatestActContentServiceImpl extends BaseServiceImpl<LatestActConten
insert(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void saveLatestActContentDTOList(List<LatestActContentDTO> 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 +125,7 @@ public class LatestActContentServiceImpl extends BaseServiceImpl<LatestActConten
@Override
public int deleteByActId(String actId) {
int updateNum=baseDao.updateToDelByActId(actId);
//后面直接全部删除
return updateNum;
}
@ -127,4 +141,16 @@ public class LatestActContentServiceImpl extends BaseServiceImpl<LatestActConten
return baseDao.selectActContentList(actId);
}
/**
* @param actId latest_act_info主键
* @return java.util.List<com.epmet.dto.result.work.ActPreviewContentResultDTO>
* @author yinzuomei
* @description 预览-查看活动详情
* @Date 2020/7/21 17:47
**/
@Override
public List<ActPreviewContentResultDTO> previewActContent(String actId) {
return baseDao.previewActContent(actId);
}
}

26
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActInfoServiceImpl.java

@ -26,6 +26,7 @@ import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.dao.LatestActInfoDao;
import com.epmet.dto.LatestActInfoDTO;
import com.epmet.dto.result.work.ActPreviewResultDTO;
import com.epmet.dto.result.work.LatestDraftActInfoResultDTO;
import com.epmet.entity.LatestActInfoEntity;
import com.epmet.redis.LatestActInfoRedis;
@ -92,6 +93,19 @@ public class LatestActInfoServiceImpl extends BaseServiceImpl<LatestActInfoDao,
insert(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public String saveOrUpdateLatestActInfoDTO(LatestActInfoDTO dto) {
if(StringUtils.isNotBlank(dto.getId())){
LatestActInfoEntity entity = ConvertUtils.sourceToTarget(dto, LatestActInfoEntity.class);
updateById(entity);
return dto.getId();
}
LatestActInfoEntity entity = ConvertUtils.sourceToTarget(dto, LatestActInfoEntity.class);
insert(entity);
return entity.getId();
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(LatestActInfoDTO dto) {
@ -151,5 +165,17 @@ public class LatestActInfoServiceImpl extends BaseServiceImpl<LatestActInfoDao,
return baseDao.selectLatestActDraft(userId);
}
/**
* @param actDraftId latest_act_info主键
* @return com.epmet.dto.result.work.ActPreviewResultDTO
* @author yinzuomei
* @description 预览-查看活动详情
* @Date 2020/7/21 17:45
**/
@Override
public ActPreviewResultDTO previewActInfo(String actDraftId) {
return baseDao.previewActInfo(actDraftId);
}
}

475
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActDraftServiceImpl.java

@ -1,9 +1,31 @@
package com.epmet.service.impl;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.scan.param.ImgScanParamDTO;
import com.epmet.commons.tools.scan.param.ImgTaskDTO;
import com.epmet.commons.tools.scan.param.TextScanParamDTO;
import com.epmet.commons.tools.scan.param.TextTaskDTO;
import com.epmet.commons.tools.scan.result.SyncScanResult;
import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.dto.form.work.PublishActInitResultDTO;
import com.epmet.dto.result.work.ActDraftContentDTOResultDTO;
import com.epmet.dto.result.work.LatestDraftActInfoResultDTO;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.ScanContentUtils;
import com.epmet.constant.ActConstant;
import com.epmet.dao.ActContentDao;
import com.epmet.dao.ActInfoDao;
import com.epmet.dao.ActOperationRecDao;
import com.epmet.dto.CustomerAgencyDTO;
import com.epmet.dto.LatestActContentDTO;
import com.epmet.dto.LatestActInfoDTO;
import com.epmet.dto.form.work.*;
import com.epmet.dto.result.work.*;
import com.epmet.entity.ActContentEntity;
import com.epmet.entity.ActInfoEntity;
import com.epmet.entity.ActOperationRecEntity;
import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.service.LatestActContentService;
import com.epmet.service.LatestActInfoService;
import com.epmet.service.WorkActDraftService;
@ -11,9 +33,14 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;
/**
* 工作端活动草稿
@ -30,6 +57,20 @@ public class WorkActDraftServiceImpl implements WorkActDraftService {
private LatestActInfoService latestActInfoService;
@Autowired
private LatestActContentService latestActContentService;
@Value("${openapi.scan.server.url}")
private String scanApiUrl;
@Value("${openapi.scan.method.textSyncScan}")
private String textSyncScanMethod;
@Value("${openapi.scan.method.imgSyncScan}")
private String imgSyncScanMethod;
@Autowired
private ActInfoDao actInfoDao;
@Autowired
private ActContentDao actContentDao;
@Autowired
private ActOperationRecDao actOperationRecDao;
@Autowired
private GovOrgOpenFeignClient govOrgOpenFeignClient;
/**
* @return com.epmet.dto.form.work.PublishActInitResultDTO
@ -84,9 +125,437 @@ public class WorkActDraftServiceImpl implements WorkActDraftService {
List<ActDraftContentDTOResultDTO> actContentList=latestActContentService.selectActContentList(latestAct.getActDraftId());
latestAct.setActContentList(actContentList);
}
return latestAct;
}else{
logger.warn("loginUserUtil.getLoginUserId()获取当前用户id为空");
}
return null;
}
/**
* @param formDTO
* @return com.epmet.dto.result.work.SaveActDraftResultDTO
* @author yinzuomei
* @description 预览按下-调用此接口保存活动信息活动内容
* @Date 2020/7/21 14:00
**/
@Override
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<LatestActContentDTO> 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) {
ActPreviewResultDTO actPreviewResultDTO = latestActInfoService.previewActInfo(formDTO.getActDraftId());
if (null != actPreviewResultDTO) {
List<ActPreviewContentResultDTO> actContent = latestActContentService.previewActContent(formDTO.getActDraftId());
if (null != actContent && actContent.size() > 0) {
actPreviewResultDTO.setActContent(actContent);
}
}
return actPreviewResultDTO;
}
/**
* @param formDTO
* @return com.epmet.dto.result.work.PublishActResultDTO
* @author yinzuomei
* @description 发布活动
* @Date 2020/7/21 18:33
**/
@Override
@Transactional(rollbackFor = Exception.class)
public PublishActResultDTO publishAct(PublishActInfoFormDTO formDTO) {
PublishActResultDTO publishActResultDTO=new PublishActResultDTO();
//内容审核(活动标题、招募要求、活动内容图文)
this.auditAct(formDTO);
logger.info("发布活动,审核成功");
//构造属性保存活动属性,活动内容
ActInfoEntity actInfoEntity=this.constructActInfo(formDTO);
actInfoDao.insert(actInfoEntity);
List<ActContentEntity> actContentEntityList=this.constructActContent(formDTO.getActContent(),actInfoEntity.getId());
for(ActContentEntity actContentEntity:actContentEntityList){
actContentDao.insert(actContentEntity);
}
//插入一条操作日志
ActOperationRecEntity actOperationRecEntity=new ActOperationRecEntity();
actOperationRecEntity.setActId(actInfoEntity.getId());
actOperationRecEntity.setType(ActConstant.ACT_OPER_TYPE_PUBLISH);
actOperationRecEntity.setNoticeUser(false);
actOperationRecDao.insert(actOperationRecEntity);
//删除所有的草稿
this.deleteDraft();
publishActResultDTO.setActId(actInfoEntity.getId());
return publishActResultDTO;
}
/**
* @return com.epmet.entity.ActInfoEntity
* @param formDTO
* @author yinzuomei
* @description 发布活动-构造act_info
* @Date 2020/7/21 20:00
**/
private ActInfoEntity constructActInfo(PublishActInfoFormDTO formDTO) {
ActInfoEntity actInfoEntity = ConvertUtils.sourceToTarget(formDTO, ActInfoEntity.class);
//活动名额类型(0-不限名额,1-固定名额)
if(actInfoEntity.getActQuota()==0){
actInfoEntity.setActQuotaCategory(false);
}else{
actInfoEntity.setActQuotaCategory(true);
}
actInfoEntity.setSignUpStartTime(new Date());
actInfoEntity.setActStatus(ActConstant.ACT_STATUS_PUBLISHED);
//1已经总结0未总结
actInfoEntity.setSummaryFlag(false);
if(ActConstant.SPONSOR_AGENCY.equals(actInfoEntity.getSponsorType())){
//调用gov_org服务获取当前组织的上一级机关id TODO
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("");
}
return actInfoEntity;
}
/**
* @return java.util.List<com.epmet.entity.ActContentEntity>
* @param actContent
* @param actId
* @author yinzuomei
* @description 发布活动-构造活动详情act_content
* @Date 2020/7/21 19:59
**/
private List<ActContentEntity> constructActContent(List<PublishActContentFormDTO> actContent, String actId) {
List<ActContentEntity> list=new ArrayList<>();
int orderNum=1;
for(PublishActContentFormDTO actContentFormDTO:actContent){
ActContentEntity actContentEntity=new ActContentEntity();
actContentEntity.setActId(actId);
actContentEntity.setContent(actContentFormDTO.getContent());
actContentEntity.setContentType(actContentFormDTO.getContentType());
actContentEntity.setOrderNum(orderNum);
list.add(actContentEntity);
orderNum++;
}
return list;
}
/**
* @return void
* @param formDTO
* @author yinzuomei
* @description 活动相关内容审核活动标题招募要求活动内容图文
* @Date 2020/7/21 19:20
**/
private void auditAct(PublishActInfoFormDTO 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 void
* @param textList
* @param imgList
* @author yinzuomei
* @description 活动详情审核
* @Date 2020/7/21 19:21
**/
private void auditActContent(List<String> textList, List<String> imgList) {
//审核活动详情中的内容
if(null!=textList&&textList.size()>0){
TextScanParamDTO textScanParamDTO = new TextScanParamDTO();
textList.forEach(content -> {
TextTaskDTO taskDTO = new TextTaskDTO();
taskDTO.setContent(content);
taskDTO.setDataId(UUID.randomUUID().toString().replace("-", ""));
textScanParamDTO.getTasks().add(taskDTO);
});
Result<SyncScanResult> contentSyncScanRes = ScanContentUtils.textSyncScan(scanApiUrl.concat(textSyncScanMethod), textScanParamDTO);
if (!contentSyncScanRes.success()) {
logger.error("活动详情内容审核接口失败,返参:", JSON.toJSONString(contentSyncScanRes));
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode());
} else {
if (!contentSyncScanRes.getData().isAllPass()) {
throw new RenException(EpmetErrorCode.ACT_REQ_SCAN_FAILED.getCode());
}
}
logger.info("活动详情内容审核成功");
}
if(null!=imgList&&imgList.size()>0){
//审核活动详情中的图片
ImgScanParamDTO imgScanParamDTO = new ImgScanParamDTO();
imgList.forEach(url -> {
ImgTaskDTO task = new ImgTaskDTO();
task.setDataId(UUID.randomUUID().toString().replace("-", ""));
task.setUrl(url);
imgScanParamDTO.getTasks().add(task);
});
Result<SyncScanResult> imgScanResult = ScanContentUtils.imgSyncScan(scanApiUrl.concat(imgSyncScanMethod), imgScanParamDTO);
if (!imgScanResult.success()){
logger.error("活动详情图片审核接口失败,返参:", JSON.toJSONString(imgScanResult));
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode());
} else {
if (!imgScanResult.getData().isAllPass()) {
throw new RenException(EpmetErrorCode.ACT_CONTENT_IMG_SCAN_FAILED.getCode());
}
}
logger.info("活动详情图片审核成功");
}
}
/**
* @return void
* @param requirement
* @author yinzuomei
* @description 活动招募条件审核
* @Date 2020/7/21 19:21
**/
private void auditActRequirement(String requirement) {
TextScanParamDTO textScanParamDTO = new TextScanParamDTO();
TextTaskDTO taskDTO = new TextTaskDTO();
taskDTO.setContent(requirement);
taskDTO.setDataId(UUID.randomUUID().toString().replace("-", ""));
textScanParamDTO.getTasks().add(taskDTO);
Result<SyncScanResult> textSyncScanResult = ScanContentUtils.textSyncScan(scanApiUrl.concat(textSyncScanMethod), textScanParamDTO);
if (!textSyncScanResult.success()) {
logger.error("活动报名条件审核接口返回失败,返参:", JSON.toJSONString(textSyncScanResult));
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode());
} else {
if (!textSyncScanResult.getData().isAllPass()) {
logger.error("活动报名条件审核失败,报名条件:",requirement);
throw new RenException(EpmetErrorCode.ACT_REQ_SCAN_FAILED.getCode());
}
}
logger.info("活动报名条件审核成功");
}
/**
* @return void
* @param coverPic
* @author yinzuomei
* @description 活动封面图片审核
* @Date 2020/7/21 19:21
**/
private void auditActCoverPic(String coverPic) {
ImgScanParamDTO coverPicScanParamDTO = new ImgScanParamDTO();
ImgTaskDTO coverImgtask = new ImgTaskDTO();
coverImgtask.setDataId(UUID.randomUUID().toString().replace("-", ""));
coverImgtask.setUrl(coverPic);
coverPicScanParamDTO.getTasks().add(coverImgtask);
Result<SyncScanResult> coverPicScanRes = ScanContentUtils.imgSyncScan(scanApiUrl.concat(imgSyncScanMethod), coverPicScanParamDTO);
if (!coverPicScanRes.success()){
logger.error("活动封面审核失败接口返回失败,返参:",JSON.toJSONString(coverPicScanRes));
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode());
} else {
if (!coverPicScanRes.getData().isAllPass()) {
logger.error("活动封面审核失败,封面图片地址:",coverPic);
throw new RenException(EpmetErrorCode.ACT_COVER_PIC_SCAN_FAILED.getCode());
}
}
logger.info("活动封面审核成功");
}
/**
* @return void
* @param title
* @author yinzuomei
* @description 活动标题审核
* @Date 2020/7/21 19:21
**/
private void auditActTitle(String title) {
TextScanParamDTO textScanParamDTO = new TextScanParamDTO();
TextTaskDTO taskDTO = new TextTaskDTO();
taskDTO.setContent(title);
taskDTO.setDataId(UUID.randomUUID().toString().replace("-", ""));
textScanParamDTO.getTasks().add(taskDTO);
Result<SyncScanResult> textSyncScanResult = ScanContentUtils.textSyncScan(scanApiUrl.concat(textSyncScanMethod), textScanParamDTO);
if (!textSyncScanResult.success()) {
logger.error("活动标题审核接口返回失败,返参:", JSON.toJSONString(textSyncScanResult));
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode());
} else {
if (!textSyncScanResult.getData().isAllPass()) {
logger.error("活动标题审核失败,标题内容:",title);
throw new RenException(EpmetErrorCode.ACT_TITLE_SCAN_FAILED.getCode());
}
}
logger.info("活动标题审核通过");
}
/**
* @return java.util.List<com.epmet.dto.LatestActContentDTO>
* @param actContent
* @param actDraftId
* @author yinzuomei
* @description 保存草稿- 构造latest_act_content
* @Date 2020/7/21 19:22
**/
private List<LatestActContentDTO> constructLatestActContent(List<DraftActContentFormDTO> actContent,String actDraftId) {
List<LatestActContentDTO> 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;
}
/**
* @return com.epmet.dto.LatestActInfoDTO
* @param formDTO
* @author yinzuomei
* @description 保存草稿- 构造latest_act_info
* @Date 2020/7/21 19:22
**/
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(null!=formDTO.getActLongitude()){
latestActInfoDTO.setActLongitude(formDTO.getActLongitude());
}
//活动地点-纬度
if(null!=formDTO.getActLatitude()){
latestActInfoDTO.setActLatitude(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(null!=formDTO.getSignInLongitude()){
latestActInfoDTO.setSignInLongitude(formDTO.getSignInLongitude());
}
//活动签到打卡位置纬度
if(null!=formDTO.getSignInLatitude()){
latestActInfoDTO.setSignInLatitude(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;
}
}

110
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActUserServiceImpl.java

@ -0,0 +1,110 @@
package com.epmet.service.impl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.ActUserRelationDTO;
import com.epmet.dto.HeartUserInfoDTO;
import com.epmet.dto.form.work.AuditingActUserFormDTO;
import com.epmet.dto.result.UserBaseInfoResultDTO;
import com.epmet.dto.result.work.AuditingActUserResultDTO;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.service.ActUserRelationService;
import com.epmet.service.HeartUserInfoService;
import com.epmet.service.WorkActUserService;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* 工作端活动人员相关api
*
* @author yinzuomei@elink-cn.com
* @date 2020/7/21 22:23
*/
@Service
public class WorkActUserServiceImpl implements WorkActUserService {
private Logger logger = LogManager.getLogger(WorkActUserServiceImpl.class);
@Autowired
private ActUserRelationService actUserRelationService;
@Autowired
private HeartUserInfoService heartUserInfoService;
@Autowired
private EpmetUserOpenFeignClient epmetUserOpenFeignClient;
/**
* @param formDTO
* @return java.util.List<com.epmet.dto.result.work.AuditingActUserResultDTO>
* @author yinzuomei
* @description 报名审核-待审核列表
* @Date 2020/7/21 22:25
**/
@Override
public List<AuditingActUserResultDTO> getAuditingList(AuditingActUserFormDTO formDTO) {
List<AuditingActUserResultDTO> list=new ArrayList<>();
//查询出待审核的人员列表
List<ActUserRelationDTO> actUserRelationDTOList=actUserRelationService.getAuditingUserList(formDTO.getActId());
if(null==actUserRelationDTOList||actUserRelationDTOList.size()==0){
logger.info(String.format("当前活动%s没有待审核的报名人员",formDTO.getActId()));
return list;
}
//查询出待审核的人员id集合
List<String> userIdList=actUserRelationService.getAuditingUserIds(formDTO.getActId());
//根据待审核的人员结合,查询出用户基本信息
List<UserBaseInfoResultDTO> userInfoList=this.queryUserBaseInfo(userIdList);
//调用epemet_user服务获取用户的基本信息
for(ActUserRelationDTO actUserRelationDTO:actUserRelationDTOList){
AuditingActUserResultDTO resultDTO=new AuditingActUserResultDTO();
resultDTO.setActId(formDTO.getActId());
resultDTO.setUserId(actUserRelationDTO.getUserId());
resultDTO.setSignUpTime(actUserRelationDTO.getCreatedTime());
//微信基本信息先默认为空字符串
resultDTO.setRealName(NumConstant.EMPTY_STR);
resultDTO.setNickName(NumConstant.EMPTY_STR);
resultDTO.setHeadImgUrl(NumConstant.EMPTY_STR);
HeartUserInfoDTO heartUserInfoDTO=heartUserInfoService.getByUserId(actUserRelationDTO.getUserId());
//true: 是志愿者 false : 不是志愿者
if(null!=heartUserInfoDTO){
resultDTO.setVolunteerFlag(heartUserInfoDTO.getVolunteerFlag());
}else{
resultDTO.setVolunteerFlag(false);
}
//赋值基本信息
for(UserBaseInfoResultDTO userBaseInfoResultDTO:userInfoList){
if(actUserRelationDTO.getUserId().equals(userBaseInfoResultDTO.getUserId())){
resultDTO.setRealName(userBaseInfoResultDTO.getRealName());
resultDTO.setNickName(userBaseInfoResultDTO.getNickname());
resultDTO.setHeadImgUrl(userBaseInfoResultDTO.getHeadImgUrl());
break;
}
}
list.add(resultDTO);
}
return list;
}
/**
* @return java.util.List<com.epmet.dto.result.UserBaseInfoResultDTO>
* @param userIdList
* @author yinzuomei
* @description 传入用户id集合返回用户的基本信息包含微信基本信息
* @Date 2020/7/22 10:38
**/
private List<UserBaseInfoResultDTO> queryUserBaseInfo(List<String> userIdList) {
List<UserBaseInfoResultDTO> userInfoList=new ArrayList<>();
if(null==userIdList||userIdList.size()==0){
return userInfoList;
}
Result<List<UserBaseInfoResultDTO>> resultUserList =epmetUserOpenFeignClient.queryUserBaseInfo(userIdList);
if(resultUserList.success()&&resultUserList.getData().size()>0){
return resultUserList.getData();
}else{
logger.warn("查询用户基本信息接口返回失败");
}
return userInfoList;
}
}

40
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/utils/CaculateDistance.java

@ -0,0 +1,40 @@
package com.epmet.utils;
/**
* 计算两个经纬度之间相差的距离()
*
* @Auther: zhangyong
* @Date: 2020-07-17 14:54
*/
public class CaculateDistance {
private static final double EARTH_RADIUS = 6378137;
private static double rad(double d) {
return d * Math.PI / 180.0;
}
/**
* 根据两点间经纬度坐标double值计算两点间距离单位为米
*
* @param lng1 经度1
* @param lat1 纬度1
* @param lng2 经度2
* @param lat2 纬度2
* @return double
* @Author zhangyong
* @Date 14:56 2020-07-17
**/
public static double getDistance(double lng1, double lat1, double lng2, double lat2) {
double radLat1 = rad(lat1);
double radLat2 = rad(lat2);
double a = radLat1 - radLat2;
double b = rad(lng1) - rad(lng2);
double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) +
Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2)));
s = s * EARTH_RADIUS;
s = Math.round(s * 10000) / 10000;
return s;
}
}

17
epmet-module/epmet-heart/epmet-heart-server/src/main/resources/bootstrap.yml

@ -116,4 +116,19 @@ ribbon:
#pageHelper分页插件
pagehelper:
helper-dialect: mysql
reasonable: false #分页合理化配置,例如输入页码为-1,则自动转化为最小页码1
reasonable: false #分页合理化配置,例如输入页码为-1,则自动转化为最小页码1
#亿联云消息网关
elink:
mq:
appId: @elink.mq.appId@ #项目接入亿联云的应用Id
token: @elink.mq.token@ #项目接入亿联云的应用token 相当于secret
host: @elink.mq.host@ #亿联云消息网关服务地址
sendMsgPath: @elink.mq.sendMsgPath@ #发送消息路径
openapi:
scan:
server:
url: @openapi.scan.server.url@
method:
imgSyncScan: /imgSyncScan
textSyncScan: /textSyncScan

18
epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/ActCustomizedDao.xml

@ -36,4 +36,22 @@
ac.DEL_FLAG = '0'
AND ac.CUSTOMER_ID = #{customerId}
</select>
<!-- 居民端根据客户id获取爱心互助自定义配置 -->
<select id="selectCustomerHeartConfigs" parameterType="java.lang.String" resultType="com.epmet.dto.result.work.CustomerHeartConfigsResultDTO">
SELECT
ac.id as actCustomizedId,
ac.TITLE_NAME as titleName,
ac.HOTLINE as hotLine,
ac.ACT_LIST_NAME as actListName,
ac.HEART_RANK_NAME as heartRankName,
ac.ACT_REVIEW_NAME as actReviewName,
ac.MY_ACT_NAME as myActName
FROM
act_customized ac
WHERE
ac.DEL_FLAG = '0'
AND ac.CUSTOMER_ID = #{customerId}
</select>
</mapper>

315
epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/ActInfoDao.xml

@ -49,4 +49,317 @@
</resultMap>
</mapper>
<!--活动列表 报名中(未报满) -->
<select id="selectListActSigningUp" parameterType="com.epmet.dto.form.resi.ResiActBaseFormDTO"
resultType="com.epmet.dto.result.resi.ResiActInfoResultDTO">
SELECT
i.ID actId,
i.TITLE title,
i.COVER_PIC coverPic,
DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i') actStartTime,
DATE_FORMAT(i.ACT_END_TIME,'%Y-%m-%d %H:%i') actEndTime,
i.ACT_ADDRESS actAddress,
IF(i.ACT_QUOTA_CATEGORY = 1, true , false ) as actQuotaCategory, -- 活动名额类型(true:固定名额(1) false: 不限制名额(0))
i.ACT_QUOTA actQuota,
IFNULL(c.signupNum, 0) signupNum, -- 已报名人数
'signing_up' AS actCurrentState, -- 活动状态:报名中,未报满
IF(u.USER_ID = #{userId},'signed_up','no_signed_up') as signupFlag
FROM act_info i
LEFT JOIN act_user_relation u ON i.ID = u.ACT_ID AND U.DEL_FLAG = '0'
LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID
WHERE i.DEL_FLAG = '0'
AND i.ACT_STATUS = 'published'
AND (i.ACT_QUOTA_CATEGORY = 0 OR i.ACT_QUOTA > IFNULL(c.signupNum, 0)) -- 不限名额或者报名人数未报满
AND i.CUSTOMER_ID = #{customerId}
ORDER BY i.ACT_QUOTA_CATEGORY DESC,i.CREATED_TIME DESC
</select>
<!--活动列表 - 报名中,已报满-->
<select id="selectListActQuotaIsEnough" parameterType="com.epmet.dto.form.resi.ResiActBaseFormDTO"
resultType="com.epmet.dto.result.resi.ResiActInfoResultDTO">
SELECT
i.ID actId,
i.TITLE title,
i.COVER_PIC coverPic,
DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i') actStartTime,
DATE_FORMAT(i.ACT_END_TIME,'%Y-%m-%d %H:%i') actEndTime,
i.ACT_ADDRESS actAddress,
IF(i.ACT_QUOTA_CATEGORY = 1, true , false ) as actQuotaCategory, -- 活动名额类型(true:固定名额(1) false: 不限制名额(0))
i.ACT_QUOTA actQuota,
IFNULL(c.signupNum, 0) signupNum, -- 已报名人数
'enough' AS actCurrentState, -- 活动状态:报名中,已报满
IF(u.USER_ID = #{userId},'signed_up','no_signed_up') as signupFlag
FROM act_info i
LEFT JOIN act_user_relation u ON i.ID = u.ACT_ID AND U.DEL_FLAG = '0'
LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID
WHERE i.DEL_FLAG = '0'
AND i.ACT_STATUS = 'published'
AND i.ACT_QUOTA_CATEGORY = 1 -- 固定名额
AND i.ACT_QUOTA = IFNULL(c.signupNum, 0) -- 名额已满
AND i.CUSTOMER_ID = #{customerId}
ORDER BY i.CREATED_TIME DESC
</select>
<!--活动列表 - (报名已结束 - 活动未开始),截止报名-->
<select id="selectListActEndSignUp" parameterType="com.epmet.dto.form.resi.ResiActBaseFormDTO"
resultType="com.epmet.dto.result.resi.ResiActInfoResultDTO">
SELECT
i.ID actId,
i.TITLE title,
i.COVER_PIC coverPic,
DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i') actStartTime,
DATE_FORMAT(i.ACT_END_TIME,'%Y-%m-%d %H:%i') actEndTime,
i.ACT_ADDRESS actAddress,
IF(i.ACT_QUOTA_CATEGORY = 1, true , false ) as actQuotaCategory, -- 活动名额类型(true:固定名额(1) false: 不限制名额(0))
i.ACT_QUOTA actQuota,
IFNULL(c.signupNum, 0) signupNum, -- 已报名人数
'end_sign_up' AS actCurrentState, -- 活动状态:未开始
IF(u.USER_ID = #{userId},'signed_up','no_signed_up') as signupFlag
FROM act_info i
LEFT JOIN act_user_relation u ON i.ID = u.ACT_ID AND U.DEL_FLAG = '0'
LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID
WHERE i.DEL_FLAG = '0'
-- 活动开始时间 > 当前时间 并且 报名截止时间 &lt; 当前时间 报名已结束,活动未开始 未开始
AND ( <![CDATA[ DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i:%s') > ]]> NOW() AND <![CDATA[ DATE_FORMAT(i.SIGN_UP_END_TIME,'%Y-%m-%d %H:%i:%s') < ]]> NOW() )
AND i.ACT_STATUS != 'canceled'
AND i.CUSTOMER_ID = #{customerId}
ORDER BY i.CREATED_TIME DESC
</select>
<!--活动列表 - (活动开始时间 <= 当前时间 并且 活动结束时间 >= 当前时间),进行中-->
<select id="selectListActInProgress" parameterType="com.epmet.dto.form.resi.ResiActBaseFormDTO"
resultType="com.epmet.dto.result.resi.ResiActInfoResultDTO">
SELECT
i.ID actId,
i.TITLE title,
i.COVER_PIC coverPic,
DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i') actStartTime,
DATE_FORMAT(i.ACT_END_TIME,'%Y-%m-%d %H:%i') actEndTime,
i.ACT_ADDRESS actAddress,
IF(i.ACT_QUOTA_CATEGORY = 1, true , false ) as actQuotaCategory, -- 活动名额类型(true:固定名额(1) false: 不限制名额(0))
i.ACT_QUOTA actQuota,
IFNULL(c.signupNum, 0) signupNum, -- 已报名人数
'in_progress' AS actCurrentState, -- 活动状态:进行中
IF(u.USER_ID = #{userId},'1','0') as signupFlag -- 用户报名状态(0-未报名,1已报名)
FROM act_info i
LEFT JOIN act_user_relation u ON i.ID = u.ACT_ID AND U.DEL_FLAG = '0'
LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID
WHERE i.DEL_FLAG = '0'
-- 活动开始时间 &lt;= 当前时间 并且活动结束时间 >= 当前时间 进行中
AND ( <![CDATA[ DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i:%s') <= ]]> NOW() AND <![CDATA[ DATE_FORMAT(i.SIGN_UP_END_TIME,'%Y-%m-%d %H:%i:%s') >= ]]> NOW() )
AND i.ACT_STATUS != 'canceled'
AND i.CUSTOMER_ID = #{customerId}
ORDER BY i.CREATED_TIME DESC
</select>
<!--活动列表 - (活动结束时间 < 当前时间),已结束-->
<select id="selectListActFinished" parameterType="com.epmet.dto.form.resi.ResiActBaseFormDTO"
resultType="com.epmet.dto.result.resi.ResiActInfoResultDTO">
SELECT
i.ID actId,
i.TITLE title,
i.COVER_PIC coverPic,
DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i') actStartTime,
DATE_FORMAT(i.ACT_END_TIME,'%Y-%m-%d %H:%i') actEndTime,
i.ACT_ADDRESS actAddress,
IF(i.ACT_QUOTA_CATEGORY = 1, true , false ) as actQuotaCategory, -- 活动名额类型(true:固定名额(1) false: 不限制名额(0))
i.ACT_QUOTA actQuota,
IFNULL(c.signupNum, 0) signupNum, -- 已报名人数
'finished' AS actCurrentState, -- 活动状态:已结束
IF(u.USER_ID = #{userId},'1','0') as signupFlag -- 用户报名状态(0-未报名,1已报名)
FROM act_info i
LEFT JOIN act_user_relation u ON i.ID = u.ACT_ID AND U.DEL_FLAG = '0'
LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID
WHERE i.DEL_FLAG = '0'
AND i.ACT_STATUS = 'finished'
AND i.CUSTOMER_ID = #{customerId}
ORDER BY i.CREATED_TIME DESC
LIMIT #{pageNo}, #{pageSize}
</select>
<!--我的活动-审核中-->
<select id="selectListMyActAuditing" parameterType="com.epmet.dto.form.resi.ResiMyActFormDTO"
resultType="com.epmet.dto.result.resi.ResiMyActResultDTO">
SELECT
i.ID actId,
i.TITLE title,
i.COVER_PIC coverPic,
DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i') actStartTime,
DATE_FORMAT(i.ACT_END_TIME,'%Y-%m-%d %H:%i') actEndTime,
i.ACT_ADDRESS actAddress,
IF(i.ACT_QUOTA_CATEGORY = 1, true , false ) as actQuotaCategory, -- 活动名额类型(true:固定名额(1) false: 不限制名额(0))
i.ACT_QUOTA actQuota,
IFNULL(c.signupNum, 0) signupNum, -- 已报名人数
'auditing' AS actCurrentState -- 活动状态
FROM act_info i LEFT JOIN act_user_relation u ON i.ID = u.ACT_ID AND u.DEL_FLAG = '0'
LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID
WHERE i.DEL_FLAG = '0'
AND u.USER_ID = #{userId}
AND u.`STATUS` = 'auditing'
ORDER BY i.CREATED_TIME DESC
LIMIT #{pageNo}, #{pageSize}
</select>
<!--我的活动-已通过-->
<select id="selectListMyActIHavePassed" parameterType="com.epmet.dto.form.resi.ResiMyActFormDTO"
resultType="com.epmet.dto.result.resi.ResiMyActResultDTO">
SELECT
i.ID actId,
i.TITLE title,
i.COVER_PIC coverPic,
DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i') actStartTime,
DATE_FORMAT(i.ACT_END_TIME,'%Y-%m-%d %H:%i') actEndTime,
i.ACT_ADDRESS actAddress,
IF(i.ACT_QUOTA_CATEGORY = 1, true , false ) as actQuotaCategory, -- 活动名额类型(true:固定名额(1) false: 不限制名额(0))
i.ACT_QUOTA actQuota,
IFNULL(c.signupNum, 0) signupNum, -- 已报名人数
'passed' AS actCurrentState -- 活动状态
FROM act_info i LEFT JOIN act_user_relation u ON i.ID = u.ACT_ID AND u.DEL_FLAG = '0'
LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID
WHERE i.DEL_FLAG = '0'
AND u.USER_ID = #{userId}
AND u.`STATUS` = 'passed'
ORDER BY i.CREATED_TIME DESC
LIMIT #{pageNo}, #{pageSize}
</select>
<!--我的活动-审核不通过-->
<select id="selectListActRefused" parameterType="com.epmet.dto.form.resi.ResiMyActFormDTO"
resultType="com.epmet.dto.result.resi.ResiMyActResultDTO">
SELECT
i.ID actId,
i.TITLE title,
i.COVER_PIC coverPic,
DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i') actStartTime,
DATE_FORMAT(i.ACT_END_TIME,'%Y-%m-%d %H:%i') actEndTime,
i.ACT_ADDRESS actAddress,
IF(i.ACT_QUOTA_CATEGORY = 1, true , false ) as actQuotaCategory, -- 活动名额类型(true:固定名额(1) false: 不限制名额(0))
i.ACT_QUOTA actQuota,
IFNULL(c.signupNum, 0) signupNum, -- 已报名人数
'refused' AS actCurrentState -- 活动状态
FROM act_info i LEFT JOIN act_user_relation u ON i.ID = u.ACT_ID AND u.DEL_FLAG = '0'
LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID
WHERE i.DEL_FLAG = '0'
AND u.USER_ID = #{userId}
AND u.`STATUS` = 'refused'
ORDER BY i.CREATED_TIME DESC
LIMIT #{pageNo}, #{pageSize}
</select>
<!--我的活动-已结束-->
<select id="selectListMyActCanceld" parameterType="com.epmet.dto.form.resi.ResiMyActFormDTO"
resultType="com.epmet.dto.result.resi.ResiMyActResultDTO">
SELECT
i.ID actId,
i.TITLE title,
i.COVER_PIC coverPic,
DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i') actStartTime,
DATE_FORMAT(i.ACT_END_TIME,'%Y-%m-%d %H:%i') actEndTime,
i.ACT_ADDRESS actAddress,
IF(i.ACT_QUOTA_CATEGORY = 1, true , false ) as actQuotaCategory, -- 活动名额类型(true:固定名额(1) false: 不限制名额(0))
i.ACT_QUOTA actQuota,
IFNULL(c.signupNum, 0) signupNum, -- 已报名人数
'canceld' AS actCurrentState -- 活动状态
FROM act_info i LEFT JOIN act_user_relation u ON i.ID = u.ACT_ID AND u.DEL_FLAG = '0'
LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID
WHERE i.DEL_FLAG = '0'
AND u.USER_ID = #{userId}
AND <![CDATA[ DATE_FORMAT(i.ACT_END_TIME,'%Y-%m-%d %H:%i:%s') < ]]> NOW() -- 活动结束时间 &lt; 当前时间, 活动已结束
ORDER BY i.CREATED_TIME DESC
LIMIT #{pageNo}, #{pageSize}
</select>
<!--最新活动列表-->
<select id="selectListLatestAct" parameterType="com.epmet.dto.form.resi.ResiActBaseFormDTO"
resultType="com.epmet.dto.result.resi.ResiLatestActResultDTO">
SELECT
i.ID actId,
i.TITLE title,
i.COVER_PIC coverPic,
DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i') actStartTime,
DATE_FORMAT(i.ACT_END_TIME,'%Y-%m-%d %H:%i') actEndTime,
i.ACT_ADDRESS actAddress,
IF(i.ACT_QUOTA_CATEGORY = 1, true , false ) as actQuotaCategory,
i.ACT_QUOTA actQuota,
IFNULL(c.signupNum, 0) signupNum, -- 已报名人数
case
when i.ACT_STATUS = 'published'
then
case
when <![CDATA[c.signupNum >= ACT_QUOTA ]]> and i.ACT_QUOTA_CATEGORY = 1
then 'enough'
else 'signing_up' end
when <![CDATA[ DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i:%s') > ]]> NOW()
and <![CDATA[ DATE_FORMAT(i.SIGN_UP_END_TIME,'%Y-%m-%d %H:%i:%s') < ]]> NOW()
then 'end_sign_up'
when <![CDATA[ DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i:%s') <= ]]> NOW()
and <![CDATA[ DATE_FORMAT(i.ACT_END_TIME,'%Y-%m-%d %H:%i:%s') >= ]]> NOW()
then 'in_progress'
end as actCurrentState
FROM act_info i
LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID
WHERE i.DEL_FLAG = '0'
AND i.CUSTOMER_ID = #{customerId}
AND i.ACT_STATUS != 'finished' AND i.ACT_STATUS != 'canceled'
ORDER BY i.CREATED_TIME DESC
LIMIT 0, #{num}
</select>
<!--即将进行/正在进行中的活动-->
<select id="selectListInProgress" parameterType="com.epmet.dto.form.resi.ResiActBaseFormDTO"
resultType="com.epmet.dto.result.resi.ResiInProgressActResultDTO">
SELECT
i.ID actId,
CASE
WHEN <![CDATA[DATE_SUB(i.ACT_START_TIME, INTERVAL 1 HOUR) <= ]]> NOW() AND <![CDATA[i.ACT_START_TIME > ]]> NOW() THEN
CONCAT('您报名的 "',i.TITLE,'" 活动还有',TIMESTAMPDIFF(MINUTE, NOW(), i.ACT_START_TIME),'分钟开始。')
ELSE
CONCAT('正在进行中的活动:"',i.TITLE,'"。。。')
END title
FROM act_info i LEFT JOIN act_user_relation r ON i.ID = r.ACT_ID
WHERE i.DEL_FLAG = '0'
AND r.DEL_FLAG = '0'
AND r.USER_ID = #{userId}
AND NOW() BETWEEN DATE_SUB(i.ACT_START_TIME, INTERVAL 1 HOUR) AND i.ACT_END_TIME
</select>
<!--活动回顾列表-->
<select id="selectListLookBackAct" parameterType="com.epmet.dto.form.resi.ResiActBaseFormDTO"
resultType="com.epmet.dto.result.resi.ResiLookBackActResultDTO">
SELECT
i.ID id,
i.TITLE title,
i.COVER_PIC coverPic,
DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i') actStartTime,
DATE_FORMAT(i.ACT_END_TIME,'%Y-%m-%d %H:%i') actEndTime,
i.ACT_ADDRESS actAddress,
'finished' actCurrentState
FROM act_info i
WHERE i.DEL_FLAG = '0'
AND i.SUMMARY_FLAG = 1 OR (SELECT r.ACT_ID FROM act_live_rec r WHERE r.DEL_FLAG = '0' AND r.ACT_ID = i.ID GROUP BY r.ACT_ID)
AND i.CUSTOMER_ID = #{customerId}
AND i.ACT_STATUS = 'finished'
ORDER BY i.CREATED_TIME DESC
LIMIT #{pageNo}, #{pageSize}
</select>
<select id="queryActAccordingToActIdAndUserId" resultType="com.epmet.dto.ActInfoDTO">
SELECT
i.ID id,
i.TITLE title,
i.COVER_PIC coverPic,
DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i') actStartTime,
DATE_FORMAT(i.ACT_END_TIME,'%Y-%m-%d %H:%i') actEndTime,
i.ACT_QUOTA actQuota,
i.ACT_STATUS actStatus,
i.VOLUNTEER_LIMIT volunteerLimit,
i.AUDIT_SWITCH auditSwitch,
i.ACT_ADDRESS actAddress
FROM act_info i
LEFT JOIN act_user_relation u ON i.ID = u.ACT_ID
WHERE i.DEL_FLAG = '0'
AND u.DEL_FLAG = '0'
AND i.ID = #{actId}
AND u.USER_ID = #{userId}
</select>
</mapper>

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

@ -25,5 +25,29 @@
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<!-- 根据活动id,查询待审核人员关系记录 -->
<select id="selectAuditingUserList" resultType="com.epmet.dto.ActUserRelationDTO" parameterType="java.lang.String">
SELECT
aur.*
FROM
act_user_relation aur
WHERE
aur.DEL_FLAG = '0'
AND aur.`STATUS` = 'auditing'
AND aur.ACT_ID = #{actId}
order by aur.CREATED_TIME desc
</select>
<!-- 根据活动id,查询待审核人员,返回用户id集合-->
<select id="selectAuditingUserIds" resultType="java.lang.String" parameterType="java.lang.String">
SELECT
distinct aur.USER_ID as userIds
FROM
act_user_relation aur
WHERE
aur.DEL_FLAG = '0'
AND aur.`STATUS` = 'auditing'
AND aur.ACT_ID = #{actId}
order by aur.CREATED_TIME desc
</select>
</mapper>

11
epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/HeartUserInfoDao.xml

@ -19,5 +19,14 @@
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<!-- 根据用户id查询爱心用户记录 -->
<select id="selectByUserId" resultType="com.epmet.dto.HeartUserInfoDTO" parameterType="java.lang.String">
SELECT
*
FROM
heart_user_info hui
WHERE
hui.DEL_FLAG = '0'
AND hui.USER_ID =#{userId}
</select>
</mapper>

17
epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LatestActContentDao.xml

@ -21,8 +21,8 @@
<update id="updateToDelByActId" parameterType="java.lang.String">
UPDATE latest_act_content
SET DEL_FLAG = '1'
WHERE
ACT_ID = #{actId}
WHERE DEL_FLAG = '0'
AND ACT_ID = #{actId}
</update>
<!-- 根据latest_act_info.id查询活动内容,已排序 -->
@ -37,4 +37,17 @@
ORDER BY
lac.ORDER_NUM ASC
</select>
<!-- 预览-查看活动详情 -->
<select id="previewActContent" parameterType="java.lang.String" resultType="com.epmet.dto.result.work.ActPreviewContentResultDTO">
SELECT
lac.CONTENT,lac.CONTENT_TYPE
FROM
latest_act_content lac
WHERE
lac.DEL_FLAG = '0'
AND lac.ACT_ID = #{actId}
ORDER BY
lac.ORDER_NUM ASC
</select>
</mapper>

55
epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LatestActInfoDao.xml

@ -8,20 +8,20 @@
<result property="customerId" column="CUSTOMER_ID"/>
<result property="title" column="TITLE"/>
<result property="coverPic" column="COVER_PIC"/>
<result property="signUpStartTime" column="SIGNUP_START_TIME"/>
<result property="signUpEndTime" column="SIGNUP_END_TIME"/>
<result property="signUpStartTime" column="SIGN_UP_START_TIME"/>
<result property="signUpEndTime" column="SIGN_UP_END_TIME"/>
<result property="requirement" column="REQUIREMENT"/>
<result property="actStartTime" column="ACT_START_TIME"/>
<result property="actEndTime" column="ACT_END_TIME"/>
<result property="actAddress" column="ACT_ADDRESS"/>
<result property="actLongitude" column="ACT_LONGITUDE"/>
<result property="actLatitude" column="ACT_LATITUDE"/>
<result property="signInStartTime" column="SIGNIN_START_TIME"/>
<result property="signInEndTime" column="SIGNIN_END_TIME"/>
<result property="signInAddress" column="SIGNIN_ADDRESS"/>
<result property="signInLongitude" column="SIGNIN_LONGITUDE"/>
<result property="signInLatitude" column="SIGNIN_LATITUDE"/>
<result property="signInRadius" column="SIGNIN_RADIUS"/>
<result property="signInStartTime" column="SIGN_IN_START_TIME"/>
<result property="signInEndTime" column="SIGN_IN_END_TIME"/>
<result property="signInAddress" column="SIGN_IN_ADDRESS"/>
<result property="signInLongitude" column="SIGN_IN_LONGITUDE"/>
<result property="signInLatitude" column="SIGN_IN_LATITUDE"/>
<result property="signInRadius" column="SIGN_IN_RADIUS"/>
<result property="actQuotaCategory" column="ACT_QUOTA_CATEGORY"/>
<result property="actQuota" column="ACT_QUOTA"/>
<result property="sponsorContacts" column="SPONSOR_CONTACTS"/>
@ -57,20 +57,20 @@
<result property="customerId" column="CUSTOMER_ID"/>
<result property="title" column="TITLE"/>
<result property="coverPic" column="COVER_PIC"/>
<result property="signUpStartTime" column="SIGNUP_START_TIME"/>
<result property="signUpEndTime" column="SIGNUP_END_TIME"/>
<result property="signUpStartTime" column="SIGN_UP_START_TIME"/>
<result property="signUpEndTime" column="SIGN_UP_END_TIME"/>
<result property="requirement" column="REQUIREMENT"/>
<result property="actStartTime" column="ACT_START_TIME"/>
<result property="actEndTime" column="ACT_END_TIME"/>
<result property="actAddress" column="ACT_ADDRESS"/>
<result property="actLongitude" column="ACT_LONGITUDE"/>
<result property="actLatitude" column="ACT_LATITUDE"/>
<result property="signInStartTime" column="SIGNIN_START_TIME"/>
<result property="signInEndTime" column="SIGNIN_END_TIME"/>
<result property="signInAddress" column="SIGNIN_ADDRESS"/>
<result property="signInLongitude" column="SIGNIN_LONGITUDE"/>
<result property="signInLatitude" column="SIGNIN_LATITUDE"/>
<result property="signInRadius" column="SIGNIN_RADIUS"/>
<result property="signInStartTime" column="SIGN_IN_START_TIME"/>
<result property="signInEndTime" column="SIGN_IN_END_TIME"/>
<result property="signInAddress" column="SIGN_IN_ADDRESS"/>
<result property="signInLongitude" column="SIGN_IN_LONGITUDE"/>
<result property="signInLatitude" column="SIGN_IN_LATITUDE"/>
<result property="signInRadius" column="SIGN_IN_RADIUS"/>
<result property="actQuotaCategory" column="ACT_QUOTA_CATEGORY"/>
<result property="actQuota" column="ACT_QUOTA"/>
<result property="sponsorContacts" column="SPONSOR_CONTACTS"/>
@ -95,4 +95,27 @@
lai.CREATED_TIME DESC
LIMIT 1
</select>
<!-- 预览-查看活动详情 -->
<select id="previewActInfo" parameterType="java.lang.String" resultType="com.epmet.dto.result.work.ActPreviewResultDTO">
SELECT
lai.id AS actDraftId,
lai.title AS title,
lai.ACT_QUOTA AS actQuota,
lai.ACT_QUOTA_CATEGORY AS actQuotaCategory,
lai.REWARD AS reward,
lai.ACT_START_TIME AS actStartTime,
lai.ACT_END_TIME AS actEndTime,
lai.ACT_ADDRESS AS actAddress,
lai.SIGN_UP_END_TIME AS signUpEndTime,
lai.REQUIREMENT AS requirement,
lai.SPONSOR_NAME AS sponsorName,
lai.SPONSOR_CONTACTS AS sponsorContacts,
lai.SPONSOR_TEL AS sponsorTel
FROM
latest_act_info lai
WHERE
lai.DEL_FLAG = '0'
AND lai.ID = #{actDraftId}
</select>
</mapper>

2
epmet-module/epmet-job/epmet-job-server/deploy/docker-compose-dev.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
epmet-job-server:
container_name: epmet-job-server-dev
image: 192.168.1.130:10080/epmet-cloud-dev/epmet-job-server:0.3.22
image: 192.168.1.130:10080/epmet-cloud-dev/epmet-job-server:0.3.23
ports:
- "8084:8084"
network_mode: host # 使用现有网络

7
epmet-module/epmet-job/epmet-job-server/pom.xml

@ -2,7 +2,7 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<version>0.3.22</version>
<version>0.3.23</version>
<parent>
<groupId>com.epmet</groupId>
<artifactId>epmet-job</artifactId>
@ -33,6 +33,11 @@
<artifactId>data-statistical-client</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-third-client</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>

13
epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/ComponentAccessTokenService.java

@ -0,0 +1,13 @@
package com.epmet.service;
import com.epmet.commons.tools.utils.Result;
/**
* @Author zxc
* @CreateTime 2020/7/20 10:21
*/
public interface ComponentAccessTokenService {
Result componentAccessTokenJob();
}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save