diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java index b7ac652d93..bc4358bd93 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java @@ -117,8 +117,27 @@ public enum RequirePermissionEnum { WORK_GRASSROOTS_PARTY_BRANCH_DELETE("work_grassroots_party_branch_delete","基层治理:支部管理:删除党支部","支部管理-删除党支部"), WORK_GRASSROOTS_PARTY_MEMBER_ADD("work_grassroots_party_member_add","基层治理:支部管理:添加党员","支部管理-添加党员"), WORK_GRASSROOTS_PARTY_MEMBER_EDIT("work_grassroots_party_member_edit","基层治理:支部管理:编辑党员","支部管理-编辑党员"), - WORK_GRASSROOTS_PARTY_MEMBER_DELETE("work_grassroots_party_member_delete","基层治理:支部管理:删除党员","支部管理-删除党员"); + WORK_GRASSROOTS_PARTY_MEMBER_DELETE("work_grassroots_party_member_delete","基层治理:支部管理:删除党员","支部管理-删除党员"), + /** + * 积分-积分规则 + */ + MORE_POINT_RULE_LIST("more_point_rule_list","更多:积分:积分规则:查看规则列表","更多-积分-积分规则-查看规则列表"), + MORE_POINT_RULE_DETAIL("more_point_rule_detail","更多:积分:积分规则:查看规则详情","更多-积分-积分规则-查看规则详情"), + MORE_POINT_RULE_SAVE("more_point_rule_save","更多:积分:积分规则:确认修改规则","更多-积分-积分规则-确认修改积分规则"), + MORE_POINT_RULE_FUNCTION_LIST("more_point_rule_function_list","更多:积分:积分规则:功能列表","更多-积分-积分规则-功能列表"), + /** + * 积分-人员管理 + */ + MORE_POINT_USER_MANAGE_LIST("more_point_user_manage_list","更多:积分:人员管理:查看人员列表","更多-积分-人员管理-查看人员列表"), + MORE_POINT_USER_MANAGE_DETAIL_VIEW("more_point_user_manage_detail_view","更多:积分:人员管理:查看人员详情","更多-积分-人员管理-人员详情"), + MORE_POINT_USER_MANAGE_ADJUST_POINT("more_point_user_manage_adjust_point","更多:积分:人员管理:确认调整积分","更多-积分-人员管理-确认调整积分"), + MORE_POINT_USER_MANAGE_ADJUST_REC_VIEW("more_point_user_manage_adjust_rec_view","更多:积分:人员管理:查看调整记录","更多-积分-人员管理-查看调整记录"), + /** + * 爱心互助-自定义配置 + */ + MORE_HEART_CUSTOMIZED_VIEW("more_heart_customized_view","更多:爱心互助:自定义配置:查看","更多-爱心互助-自定义配置-查看"), + MORE_HEART_CUSTOMIZED_SAVE("more_heart_customized_save","更多:爱心互助:自定义配置:保存修改","更多-爱心互助-自定义配置-保存修改"); private String key; private String name; diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/RenExceptionHandler.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/RenExceptionHandler.java index 4495417421..5debad3823 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/RenExceptionHandler.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/RenExceptionHandler.java @@ -54,12 +54,12 @@ public class RenExceptionHandler { */ @ExceptionHandler(RenException.class) public Result handleRRException(RenException ex){ - logger.error(ExceptionUtils.getErrorStackTrace(ex)); if (ex.getCode() > 8000) { Result result=new Result().error(ex.getCode()); result.setData(ex.getMsg()); return result; } + logger.error(ExceptionUtils.getErrorStackTrace(ex)); Result result=new Result().error(); result.setData(ex.getMsg()); return result; diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java index 7d456a6707..8777143097 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java @@ -6,6 +6,7 @@ import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.RenException; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Base64; +import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.apache.http.HttpEntity; import org.apache.http.HttpStatus; @@ -326,6 +327,23 @@ public class HttpClientManager { } } + public Result getMediaByteArray(String url, String json) { + + try { + HttpPost httppost = new HttpPost(url); + httppost.setConfig(requestConfig); + httppost.addHeader("Content-Type", "application/json"); + if (StringUtils.isNotEmpty(json)) { + StringEntity se = new StringEntity(json, "utf-8"); + httppost.setEntity(se); + } + return executeToByte(httppost); + } catch (Exception e) { + log.error("sendGet exception", e); + return new Result().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg()); + } + } + private Result executeToByte(HttpRequestBase httpMethod) { CloseableHttpResponse response = null; try { @@ -334,14 +352,16 @@ public class HttpClientManager { if (response != null && response.getStatusLine() != null) { if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { InputStream in = response.getEntity().getContent(); - ByteArrayOutputStream output = new ByteArrayOutputStream(); - byte[] buffer = new byte[4096]; - int n = 0; - while (-1 != (n = in.read(buffer))) { - output.write(buffer, 0, n); - } + byte[] responseContent = IOUtils.toByteArray(in); +// ByteArrayOutputStream output = new ByteArrayOutputStream(); +// byte[] buffer = new byte[4096]; +// int n = 0; +// while (-1 != (n = in.read(buffer))) { +// output.write(buffer, 0, n); +// } // return new Result().ok(ArrayUtils.toObject(output.toByteArray())); - return new Result().ok(output.toByteArray()); +// return new Result().ok(output.toByteArray()); + return new Result().ok(responseContent); } else { log.warn("execute http method fail,httpStatus:{0}", response.getStatusLine().getStatusCode()); } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/HeartUserInfoDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/HeartUserInfoDTO.java index 8ea2b28322..1aab8cb7f9 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/HeartUserInfoDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/HeartUserInfoDTO.java @@ -61,7 +61,7 @@ public class HeartUserInfoDTO implements Serializable { private Integer kindnessTime; /** - * 实际参与活动个数(签到+1) + * 实际参与活动个数 */ private Integer participationNum; @@ -100,4 +100,4 @@ public class HeartUserInfoDTO implements Serializable { */ private Date updatedTime; -} \ No newline at end of file +} diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/ResiActInsertLiveFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/ResiActInsertLiveFormDTO.java index b6a0b22542..e6181d9d9d 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/ResiActInsertLiveFormDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/ResiActInsertLiveFormDTO.java @@ -60,19 +60,16 @@ public class ResiActInsertLiveFormDTO implements Serializable { /** * 活动签到位置经度 */ - @NotNull(message = "活动签到位置经度不能为空", groups = { AddUserInternalGroup.class }) private BigDecimal longitude; /** * 活动签到位置纬度 */ - @NotNull(message = "活动签到位置纬度不能为空", groups = { AddUserInternalGroup.class }) private BigDecimal latitude; /** * 活动签到地址 */ - @NotBlank(message = "活动签到地址不能为空", groups = { AddUserInternalGroup.class}) private String address; /** diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/AactUserDetailFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/AactUserDetailFormDTO.java index 3e653e76c1..07e481fb99 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/AactUserDetailFormDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/AactUserDetailFormDTO.java @@ -24,4 +24,6 @@ public class AactUserDetailFormDTO implements Serializable { @NotBlank(message = "主键不能为空", groups = {AddUserInternalGroup.class}) private String actUserRelationId; + @NotBlank(message = "当前活动id不能为空", groups = {UserHistoricalActFormDTO.AddUserInternalGroup.class}) + private String currentActId; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiLeaderboardResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiLeaderboardResultDTO.java index d3d50da078..44964cfd73 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiLeaderboardResultDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiLeaderboardResultDTO.java @@ -49,7 +49,7 @@ public class ResiLeaderboardResultDTO implements Serializable { private Boolean volunteerFlag; /** - * 爱心时长(单位:小时) + * 爱心时长(单位:分钟) */ private Integer kindnessTime; diff --git a/epmet-module/epmet-heart/epmet-heart-server/deploy/docker-compose-dev.yml b/epmet-module/epmet-heart/epmet-heart-server/deploy/docker-compose-dev.yml index 0179d90cbb..7147290341 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/deploy/docker-compose-dev.yml +++ b/epmet-module/epmet-heart/epmet-heart-server/deploy/docker-compose-dev.yml @@ -2,7 +2,7 @@ version: "3.7" services: epmet-heart-server: container_name: epmet-heart-server-dev - image: 192.168.1.130:10080/epmet-cloud-dev/epmet-heart-server:0.0.24 + image: 192.168.1.130:10080/epmet-cloud-dev/epmet-heart-server:0.0.30 ports: - "8111:8111" network_mode: host # 使用现有网络 diff --git a/epmet-module/epmet-heart/epmet-heart-server/pom.xml b/epmet-module/epmet-heart/epmet-heart-server/pom.xml index df604298c2..fd1aeb191c 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/pom.xml +++ b/epmet-module/epmet-heart/epmet-heart-server/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.0.24 + 0.0.30 com.epmet epmet-heart diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ActCustomizedController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ActCustomizedController.java index a2ce0f1972..268e936521 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ActCustomizedController.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ActCustomizedController.java @@ -17,6 +17,8 @@ package com.epmet.controller; +import com.epmet.commons.tools.annotation.RequirePermission; +import com.epmet.commons.tools.enums.RequirePermissionEnum; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dto.form.work.ActCustomizedFormDTO; @@ -51,6 +53,7 @@ public class ActCustomizedController { * @description 获取当前客户下,爱心互助模块自定义配置项,如果没有配置,返回系统默认 * @Date 2020/7/20 15:42 **/ + @RequirePermission(requirePermission = RequirePermissionEnum.MORE_HEART_CUSTOMIZED_VIEW) @PostMapping("getconfigs") public Result getConfigs(@RequestBody ActCustomizedFormDTO formDTO){ ValidatorUtils.validateEntity(formDTO, ActCustomizedFormDTO.AddUserInternalGroup.class); @@ -65,6 +68,7 @@ public class ActCustomizedController { * @description 保存自定义配置 * @Date 2020/7/20 17:25 **/ + @RequirePermission(requirePermission = RequirePermissionEnum.MORE_HEART_CUSTOMIZED_SAVE) @PostMapping("save") public Result saveConfigs(@RequestBody SaveActCustomizedFormDTO formDTO){ ValidatorUtils.validateEntity(formDTO, SaveActCustomizedFormDTO.AddUserShowGroup.class,SaveActCustomizedFormDTO.AddUserInternalGroup.class); diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ResiActListController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ResiActListController.java index 9310d818b4..5b7412b415 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ResiActListController.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ResiActListController.java @@ -239,7 +239,7 @@ public class ResiActListController { * @Date 11:21 2020-07-28 **/ @PostMapping("checksigninaddress") - public Result cancelSignUp(@RequestBody ResiActCaculateDistanceFormDTO formDTO) { + public Result checkSignInAddress(@RequestBody ResiActCaculateDistanceFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO, ResiActCaculateDistanceFormDTO.AddUserInternalGroup.class); return actInfoService.checkSignInAddress(formDTO); } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/ActUserRelationDao.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/ActUserRelationDao.java index 7b97d6cf80..1322db3c83 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/ActUserRelationDao.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/ActUserRelationDao.java @@ -97,11 +97,12 @@ public interface ActUserRelationDao extends BaseDao { /** * @return java.lang.Integer * @param userId + * @param currentActId * @author yinzuomei * @description 报名活动个数(act_user_realation) * @Date 2020/7/23 15:57 **/ - Integer countSignUpActNum(String userId); + Integer countSignUpActNum(@Param("userId")String userId,@Param("currentActId") String currentActId); /** * @return java.lang.Integer diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/HeartUserInfoEntity.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/HeartUserInfoEntity.java index c7b90074b1..b4368fe26c 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/HeartUserInfoEntity.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/HeartUserInfoEntity.java @@ -57,7 +57,7 @@ public class HeartUserInfoEntity extends BaseEpmetEntity { private Integer kindnessTime; /** - * 实际参与活动个数(签到+1) + * 实际参与活动个数 */ private Integer participationNum; diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActSignInRecServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActSignInRecServiceImpl.java index c2fdd5c71d..a896694d27 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActSignInRecServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActSignInRecServiceImpl.java @@ -38,6 +38,7 @@ import com.epmet.dao.ActSignInRecDao; import com.epmet.dao.ActUserRelationDao; import com.epmet.dto.ActSignInRecDTO; import com.epmet.dto.ActUserRelationDTO; +import com.epmet.dto.HeartUserInfoDTO; import com.epmet.dto.form.resi.ResiActInsertLiveFormDTO; import com.epmet.dto.form.resi.ResiActSignInFormDTO; import com.epmet.entity.ActSignInPicEntity; @@ -45,6 +46,7 @@ import com.epmet.entity.ActSignInRecEntity; import com.epmet.redis.ActSignInRecRedis; import com.epmet.service.ActLiveRecService; import com.epmet.service.ActSignInRecService; +import com.epmet.service.HeartUserInfoService; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; @@ -76,6 +78,9 @@ public class ActSignInRecServiceImpl extends BaseServiceImpl0){ if(ActConstant.ACT_USER_STATUS_AGREE.equals(actUserRelation.getRewardFlag())){ + updateFlag=true; heartUserInfoDTO.setObtainPointNum(heartUserInfoDTO.getObtainPointNum()+1); } } @@ -959,6 +961,7 @@ public class WorkActServiceImpl implements WorkActService { //爱心时长发放(签到的。未签到但是有积分的) if(ActConstant.ACT_USER_STATUS_SIGNED_IN.equals(actUserRelation.getSignInFlag())){ //已签到的 + updateFlag=true; heartUserInfoDTO.setKindnessTime(heartUserInfoDTO.getKindnessTime()+actInfoDTO.getServiceMin()); UserKindnessTimeLogEntity userKindnessTimeLogEntity=new UserKindnessTimeLogEntity(); userKindnessTimeLogEntity.setActId(actInfoDTO.getId()); @@ -968,6 +971,7 @@ public class WorkActServiceImpl implements WorkActService { }else{ //未签到,但是有积分的 if(ActConstant.ACT_USER_STATUS_AGREE.equals(actUserRelation.getRewardFlag())){ + updateFlag=true; heartUserInfoDTO.setKindnessTime(heartUserInfoDTO.getKindnessTime()+actInfoDTO.getServiceMin()); UserKindnessTimeLogEntity userKindnessTimeLogEntity=new UserKindnessTimeLogEntity(); userKindnessTimeLogEntity.setActId(actInfoDTO.getId()); @@ -977,7 +981,17 @@ public class WorkActServiceImpl implements WorkActService { } } } - if(actInfoDTO.getReward()>0||actInfoDTO.getServiceMin()>0){ + //审核通过并且已经签到的更新实际参与活动数,+1 + if (ActConstant.ACT_USER_STATUS_SIGNED_IN.equals(actUserRelation.getSignInFlag()) + && ActConstant.ACT_USER_STATUS_PASSED.equals(actUserRelation.getStatus())) { + updateFlag = true; + if (null != heartUserInfoDTO.getParticipationNum() && heartUserInfoDTO.getParticipationNum() >= 0) { + heartUserInfoDTO.setParticipationNum(heartUserInfoDTO.getParticipationNum() + 1); + } else if (null == heartUserInfoDTO.getParticipationNum()) { + heartUserInfoDTO.setParticipationNum(NumConstant.ONE); + } + } + if (updateFlag) { heartUserInfoService.update(heartUserInfoDTO); } } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActUserServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActUserServiceImpl.java index a0aa461f52..1fa1472042 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActUserServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActUserServiceImpl.java @@ -348,7 +348,7 @@ public class WorkActUserServiceImpl implements WorkActUserService { ) */ resultDTO.setStatus(actUserRelationDTO.getStatus()); - HistoricalActInfo historicalActInfo=this.getHistoricalActInfo(actUserRelationDTO.getUserId()); + HistoricalActInfo historicalActInfo=this.getHistoricalActInfo(actUserRelationDTO.getUserId(),formDTO.getCurrentActId()); resultDTO.setHistoricalActInfo(historicalActInfo); if(ActConstant.ACT_USER_STATUS_AUDITING.equals(resultDTO.getStatus())){ //被拒绝过,才赋值 @@ -399,7 +399,7 @@ public class WorkActUserServiceImpl implements WorkActUserService { resultDTO.setRealName(userBaseInfoResultDTO.getRealName()); } //参与活动统计值 - HistoricalActInfo historicalActInfo=getHistoricalActInfo(formDTO.getUserId()); + HistoricalActInfo historicalActInfo=getHistoricalActInfo(formDTO.getUserId(),formDTO.getCurrentActId()); resultDTO.setSignInActNum(historicalActInfo.getSignInActNum()); //减去当前的 resultDTO.setSignUpActNum(historicalActInfo.getSignUpActNum()); @@ -639,11 +639,12 @@ public class WorkActUserServiceImpl implements WorkActUserService { /** * @return com.epmet.dto.result.work.HistoricalActInfo * @param userId + * @param currentActId * @author yinzuomei * @description 用户历史活动情况 * @Date 2020/7/23 15:56 **/ - private HistoricalActInfo getHistoricalActInfo(String userId) { + private HistoricalActInfo getHistoricalActInfo(String userId,String currentActId) { HistoricalActInfo historicalActInfo=new HistoricalActInfo(); /** * 实际参加活动个数(已经签到的) @@ -653,7 +654,7 @@ public class WorkActUserServiceImpl implements WorkActUserService { /** * 报名活动个数(act_user_realation) */ - Integer signUpActNum=actUserRelationDao.countSignUpActNum(userId); + Integer signUpActNum=actUserRelationDao.countSignUpActNum(userId,currentActId); historicalActInfo.setSignUpActNum(signUpActNum); /** * 获得积分活动个数 diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/epmet_heart.sql b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/epmet_heart.sql index 1cc390bad2..7cc204d675 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/epmet_heart.sql +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/epmet_heart.sql @@ -350,7 +350,7 @@ CREATE TABLE `heart_user_info` ( `USER_ID` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户id', `VOLUNTEER_FLAG` tinyint(1) NOT NULL COMMENT '1是志愿者,0不是志愿者(志愿者注册成功后需要来更新值)', `KINDNESS_TIME` int(11) NOT NULL DEFAULT 0 COMMENT '爱心时长(单位:分钟)(参与并签到了的活动,实际结束-实际开始)签到的。未签到但是有积分的\r\n', - `PARTICIPATION_NUM` int(11) NOT NULL DEFAULT 0 COMMENT '实际参与活动个数(签到+1)', + `PARTICIPATION_NUM` int(11) NOT NULL DEFAULT 0 COMMENT '实际参与活动个数', `OBTAIN_POINT_NUM` int(11) NOT NULL DEFAULT 0 COMMENT '参与活动并获得积分的次数(结束活动时,如果给用户发放积分则该数值+1)', `DEL_FLAG` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '删除标记', `REVISION` int(11) NOT NULL DEFAULT 0 COMMENT '乐观锁', diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/ActInfoDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/ActInfoDao.xml index b3d4fb4fe0..532a1ec5b2 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/ActInfoDao.xml +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/ActInfoDao.xml @@ -333,6 +333,7 @@ AND r.USER_ID = #{userId} AND NOW() BETWEEN DATE_SUB(i.ACT_START_TIME, INTERVAL 1 HOUR) AND i.ACT_END_TIME AND i.ACT_STATUS = 'published' + AND r.`STATUS` = 'passed' @@ -347,10 +348,12 @@ i.ACT_ADDRESS actAddress, 'finished' actCurrentState FROM act_info i + LEFT JOIN act_live_rec r ON r.ACT_ID = i.ID AND r.DEL_FLAG = '0' 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.SUMMARY_FLAG = 1 OR r.ID is NOT NULL AND i.CUSTOMER_ID = #{customerId} AND i.ACT_STATUS = 'finished' + GROUP BY r.ACT_ID ORDER BY i.CREATED_TIME DESC LIMIT #{pageNo}, #{pageSize} @@ -710,10 +713,12 @@ i.ACT_ADDRESS actAddress, 'finished' actCurrentState FROM act_info i + LEFT JOIN act_live_rec r ON r.ACT_ID = i.ID AND r.DEL_FLAG = '0' 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.SUMMARY_FLAG = 1 OR r.ID is NOT NULL AND i.CUSTOMER_ID = #{customerId} AND i.ACT_STATUS = 'finished' + GROUP BY r.ACT_ID ORDER BY i.CREATED_TIME DESC LIMIT 0, #{num} diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/ActUserRelationDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/ActUserRelationDao.xml index 9d7e256b9e..618cfb76fb 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/ActUserRelationDao.xml +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/ActUserRelationDao.xml @@ -114,7 +114,7 @@ - SELECT count( 1 ) as total FROM @@ -123,6 +123,9 @@ DEL_FLAG = '0' and acu.STATUS !='auditing' AND acu.USER_ID = #{userId} + + and acu.ACT_ID != #{currentActId} + diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/HeartUserInfoDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/HeartUserInfoDao.xml index 9908c46e37..9df9414e17 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/HeartUserInfoDao.xml +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/HeartUserInfoDao.xml @@ -65,7 +65,7 @@ KINDNESS_TIME = #{kindnessTime}, - PARTICIPATION_NUM = #{participationNum}, + PARTICIPATION_NUM = PARTICIPATION_NUM + #{participationNum}, OBTAIN_POINT_NUM = #{obtainPointNum}, diff --git a/epmet-module/epmet-message/epmet-message-server/deploy/docker-compose-dev.yml b/epmet-module/epmet-message/epmet-message-server/deploy/docker-compose-dev.yml index 8d318e5d3f..5c8fea6fb7 100644 --- a/epmet-module/epmet-message/epmet-message-server/deploy/docker-compose-dev.yml +++ b/epmet-module/epmet-message/epmet-message-server/deploy/docker-compose-dev.yml @@ -2,7 +2,7 @@ version: "3.7" services: epmet-message-server: container_name: epmet-message-server-dev - image: 192.168.1.130:10080/epmet-cloud-dev/epmet-message-server:0.3.25 + image: 192.168.1.130:10080/epmet-cloud-dev/epmet-message-server:0.3.27 ports: - "8085:8085" network_mode: host # 使用现有网络 diff --git a/epmet-module/epmet-message/epmet-message-server/pom.xml b/epmet-module/epmet-message/epmet-message-server/pom.xml index e48a0d177e..ab4397473b 100644 --- a/epmet-module/epmet-message/epmet-message-server/pom.xml +++ b/epmet-module/epmet-message/epmet-message-server/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.3.25 + 0.3.27 com.epmet epmet-message diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/UserMessageServiceImpl.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/UserMessageServiceImpl.java index f54f420294..eb0e559e74 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/UserMessageServiceImpl.java +++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/UserMessageServiceImpl.java @@ -149,7 +149,8 @@ public class UserMessageServiceImpl extends BaseServiceImpl wrapper = new QueryWrapper<>(); wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id) .eq(StringUtils.isNotBlank(customerId), FieldConstant.CUSTOMER_ID, customerId) - .eq(StringUtils.isNotBlank(gridId), FieldConstant.GRID_ID, gridId) +// 注释掉此列,居民端和工作端消息浮窗看到的是当前客户下所有的消息 +// .eq(StringUtils.isNotBlank(gridId), FieldConstant.GRID_ID, gridId) .eq(StringUtils.isNotBlank(userId), FieldConstant.USER_ID, userId) .eq(StringUtils.isNotBlank(deFlag), FieldConstant.DEL_FLAG, deFlag) .eq(StringUtils.isNotBlank(readFlag), "read_flag", readFlag); diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/UserMessageDao.xml b/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/UserMessageDao.xml index e10f36499c..fa4266f1e7 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/UserMessageDao.xml +++ b/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/UserMessageDao.xml @@ -40,10 +40,8 @@ user_message WHERE del_flag = '0' - AND ( - CUSTOMER_ID = #{customerId} - AND GRID_ID = #{gridId} - AND USER_ID = #{userId}) + AND CUSTOMER_ID = #{customerId} + AND USER_ID = #{userId} ORDER BY CREATED_TIME DESC LIMIT #{pageNo}, #{pageSize} diff --git a/epmet-module/epmet-point/epmet-point-server/deploy/docker-compose-dev.yml b/epmet-module/epmet-point/epmet-point-server/deploy/docker-compose-dev.yml index fd23fbfa8a..d1f4e31009 100644 --- a/epmet-module/epmet-point/epmet-point-server/deploy/docker-compose-dev.yml +++ b/epmet-module/epmet-point/epmet-point-server/deploy/docker-compose-dev.yml @@ -2,7 +2,7 @@ version: "3.7" services: epmet-point-server: container_name: epmet-point-server-dev - image: 192.168.1.130:10080/epmet-cloud-dev/epmet-point-server:0.0.16 + image: 192.168.1.130:10080/epmet-cloud-dev/epmet-point-server:0.0.21 ports: - "8112:8112" network_mode: host # 使用现有网络 diff --git a/epmet-module/epmet-point/epmet-point-server/pom.xml b/epmet-module/epmet-point/epmet-point-server/pom.xml index b03c9f3059..14295d4bfd 100644 --- a/epmet-module/epmet-point/epmet-point-server/pom.xml +++ b/epmet-module/epmet-point/epmet-point-server/pom.xml @@ -3,7 +3,7 @@ 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"> 4.0.0 - 0.0.16 + 0.0.21 epmet-point com.epmet diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/config/MqSubcribeConfig.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/config/MqSubcribeConfig.java index 0a9c628604..c1433be7d9 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/config/MqSubcribeConfig.java +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/config/MqSubcribeConfig.java @@ -6,9 +6,7 @@ import com.epmet.commons.tools.utils.HttpClientManager; import com.epmet.commons.tools.utils.Result; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.springframework.stereotype.Component; -import javax.annotation.PostConstruct; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -17,20 +15,21 @@ import java.util.Map; /** * desc:订阅积分事件 */ -@Component +//@Component public class MqSubcribeConfig { private Logger logger = LogManager.getLogger(MqSubcribeConfig.class); private String mqServer = "https://epmet-dev.elinkservice.cn/estos/mq-subscriber/subscribe"; private String token = "1cfcbb5ade1e3202855ee5819983d773"; - @PostConstruct + //todo 由于api订阅报错 暂时通过页面订阅 + //@PostConstruct private void subscribe() { MqSubscribeFormDTO event = new MqSubscribeFormDTO(); - event.setBelongAppId("202007161443499985fa2d397436d10356542134c8f008c48"); - event.setEventClass("epmet_heart"); - event.setEventTag("active_send_point"); - String callbackUrl = "http://192.168.1.119/point/callback/sendPoint"; + event.setBelongAppId("202007151206522723ab739c43c73afe1e696f88ef4ee45a9"); + event.setEventClass("test_event_cls_1"); + event.setEventTag("test_event_1"); + String callbackUrl = "http://118.190.150.119/testpub/test/post"; //callbackUrl = ""; event.setCallbackUrl(callbackUrl); List subscribeFormDTOList = new ArrayList<>(); diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/AdjustmentController.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/AdjustmentController.java index c30ee3c1d6..21336dccb2 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/AdjustmentController.java +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/AdjustmentController.java @@ -2,6 +2,8 @@ package com.epmet.controller; import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.annotation.RequirePermission; +import com.epmet.commons.tools.enums.RequirePermissionEnum; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; @@ -42,6 +44,7 @@ public class AdjustmentController { * @date 2020.07.27 10:57 **/ @PostMapping("userlist") + @RequirePermission(requirePermission = RequirePermissionEnum.MORE_POINT_USER_MANAGE_LIST) public Result> userList(@RequestBody CustomerUserFormDTO param){ ValidatorUtils.validateEntity(param, CustomerUserFormDTO.CustomerIdGroup.class); return epmetUserOpenFeignClient.customerUserList(param); @@ -55,6 +58,7 @@ public class AdjustmentController { * @date 2020.07.27 11:15 **/ @PostMapping("userdetail") + @RequirePermission(requirePermission = RequirePermissionEnum.MORE_POINT_USER_MANAGE_DETAIL_VIEW) public Result userDetail(@RequestBody IssueInitiatorFormDTO param){ ValidatorUtils.validateEntity(param,IssueInitiatorFormDTO.UserIdGroup.class); return new Result().ok(pointAdjustmentLogService.userDetail(param)); @@ -68,6 +72,7 @@ public class AdjustmentController { * @date 2020.07.27 10:51 **/ @PostMapping("adjustrecord") + @RequirePermission(requirePermission = RequirePermissionEnum.MORE_POINT_USER_MANAGE_ADJUST_REC_VIEW) public Result> adjustRecord(@RequestBody IssueInitiatorFormDTO param){ ValidatorUtils.validateEntity(param, IssueInitiatorFormDTO.UserIdGroup.class); return new Result>().ok(pointAdjustmentLogService.adjustRecord(param)); @@ -81,6 +86,7 @@ public class AdjustmentController { * @date 2020.07.27 13:52 **/ @PostMapping("adjust") + @RequirePermission(requirePermission = RequirePermissionEnum.MORE_POINT_USER_MANAGE_ADJUST_POINT) public Result adjustPoint(@LoginUser TokenDto token, @RequestBody PointAdjustmentFormDTO param){ param.setOperatorId(token.getUserId()); param.setCustomerId(token.getCustomerId()); diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/PointRuleController.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/PointRuleController.java index bfbcff6ebb..526e56fa46 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/PointRuleController.java +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/PointRuleController.java @@ -1,6 +1,8 @@ package com.epmet.controller; import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.annotation.RequirePermission; +import com.epmet.commons.tools.enums.RequirePermissionEnum; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; @@ -40,6 +42,7 @@ public class PointRuleController { * @return */ @PostMapping(value = "functionlist") + @RequirePermission( requirePermission = RequirePermissionEnum.MORE_POINT_RULE_FUNCTION_LIST) public Result> getFunctionList(@LoginUser TokenDto tokenDTO) { return new Result>().ok(pointRuleService.getFunctionList(tokenDTO.getCustomerId())); } @@ -52,6 +55,7 @@ public class PointRuleController { * @return */ @PostMapping(value = "list") + @RequirePermission( requirePermission = RequirePermissionEnum.MORE_POINT_RULE_LIST) public Result> list( @RequestBody PointRuleListFormDTO formDTO) { formDTO.setCustomerId("3ef7e4bb195eb9e622d68b52509aa940"); ValidatorUtils.validateEntity(formDTO); @@ -65,6 +69,7 @@ public class PointRuleController { * @return */ @PostMapping(value = "detail") + @RequirePermission( requirePermission = RequirePermissionEnum.MORE_POINT_RULE_DETAIL) public Result detail(@RequestBody PointDetailFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO); return new Result().ok(pointRuleService.detail(formDTO)); @@ -77,6 +82,7 @@ public class PointRuleController { * @return */ @PostMapping(value = "update") + @RequirePermission( requirePermission = RequirePermissionEnum.MORE_POINT_RULE_SAVE) public Result update(@LoginUser TokenDto tokenDTO, @RequestBody PointRuleFormDTO formDTO) { formDTO.setCustomerId(tokenDTO.getCustomerId()); ValidatorUtils.validateEntity(formDTO, UpdateGroup.class); diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/dao/UserPointActionLogDao.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/dao/UserPointActionLogDao.java index 821bb2e443..a16ce26c67 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/dao/UserPointActionLogDao.java +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/dao/UserPointActionLogDao.java @@ -23,6 +23,7 @@ import com.epmet.entity.UserPointActionLogEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.Date; import java.util.List; /** @@ -50,5 +51,5 @@ public interface UserPointActionLogDao extends BaseDao * @author wangc * @date 2020.07.31 15:11 **/ - Integer selectSumByEvent(@Param("userId") String userId,@Param("eventId") String eventId, @Param("sourceId") String sourceId,@Param("customerId") String customerId); + Integer selectSumByEvent(@Param("userId") String userId, @Param("eventId") String eventId, @Param("sourceId") String sourceId, @Param("customerId") String customerId, @Param("dateCheck") Date dateCheck); } \ No newline at end of file diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/redis/PointRedis.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/redis/PointRedis.java index e22fe14ca6..7ed5afbfe7 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/redis/PointRedis.java +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/redis/PointRedis.java @@ -26,6 +26,10 @@ public class PointRedis { return redisUtils.lindex(RedisKeys.getPointVerificationResultKey(userId),index); } + public Object rpop(String userId){ + return redisUtils.rightPop(RedisKeys.getPointVerificationResultKey(userId)); + } + public String checkIfQrCodeExpire(String shortId){ String userId = (String)redisUtils.getString(RedisKeys.getShortUserIdKey(shortId)); return userId; diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/PointVerificationLogServiceImpl.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/PointVerificationLogServiceImpl.java index e412c6b6a0..f4f0a88b7b 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/PointVerificationLogServiceImpl.java +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/PointVerificationLogServiceImpl.java @@ -156,7 +156,7 @@ public class PointVerificationLogServiceImpl extends BaseServiceImpl> sortedMap = Maps.newLinkedHashMap(); map.entrySet().stream().sorted(Map.Entry.>comparingByKey().reversed()) .forEachOrdered(e -> sortedMap.put(e.getKey(), e.getValue())); - map.entrySet().forEach(e -> { + sortedMap.entrySet().forEach(e -> { ResiPointLogListResultDTO o = new ResiPointLogListResultDTO(); o.setDate(e.getKey()); o.setDailyList(e.getValue()); @@ -238,17 +238,19 @@ public class PointVerificationLogServiceImpl extends BaseServiceImpl 【】", JSON.toJSON(verificationParam))); - throw new RenException("用户二维码失效"); + logger.error(String.format("用户二维码失效,参数详情 -> 【%s】", JSON.toJSON(verificationParam))); + result.setSuccessFlag(false); + result.setFailureReason(ModuleConstant.INVALID_USER_QRCDDE); + return result; } DimIdGenerator.DimIdBean dim = DimIdGenerator.getDimIdBean(new Date()); - PointVerificationResultDTO result = new PointVerificationResultDTO(); + ResiCommonUserIdFormDTO userId = new ResiCommonUserIdFormDTO(); userId.setUserId(verificationParam.getUserId()); ResiPointDetailResultDTO currentPoint = userPointTotalService.getMyPoint(userId); @@ -328,8 +330,8 @@ public class PointVerificationLogServiceImpl extends BaseServiceImpl【%s】", JSON.toJSON(event))); throw new RenException("无法识别事件类型与积分规则"); } - PointRuleEntity ruleInfo = pointRuleService.getByEventCodeAndCustomerId(event.getCustomerId(),eventCode); if(null != ruleInfo && StringUtils.equals(NumConstant.ONE_STR,ruleInfo.getEnabledFlag())){ + Date dateCheck = null; + //判断积分规则的积分单位 次、天、分钟、小时 + if(StringUtils.equals(ModuleConstant.POINT_UNIT_TIME,ruleInfo.getPointUnit())){ + //次 + }else if(StringUtils.equals(ModuleConstant.POINT_UNIT_DAY,ruleInfo.getPointUnit())){ + //天 + //在selectSumByEvent时要校验时间区间 + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + calendar.set(Calendar.HOUR_OF_DAY, NumConstant.ZERO); + calendar.set(Calendar.MINUTE, NumConstant.ZERO); + calendar.set(Calendar.SECOND, NumConstant.ZERO); + dateCheck = calendar.getTime(); + }else{ + //其余积分单位 + //TODO.. + logger.warn(String.format("当前规则属于按%s计分,系统尚不支持响应此类积分规则的事件"),ruleInfo.getPointUnit()); + } //校验是否达到上限 if(ruleInfo.getUpLimit() > NumConstant.ZERO){ - Integer sum = baseDao.selectSumByEvent(event.getUserId(),eventCode,event.getSourceId(),event.getCustomerId()); + Integer sum = baseDao.selectSumByEvent(event.getUserId(),eventCode,event.getSourceId(),event.getCustomerId(),dateCheck); if(null == sum) sum = NumConstant.ZERO; if(StringUtils.equals(ModuleConstant.OPERATION_TYPE_PLUS,ruleInfo.getOperateType())){ - sum += ruleInfo.getPoint(); if(ruleInfo.getPoint() < NumConstant.ZERO){ //保证要加的积分是正数 ruleInfo.setPoint(ruleInfo.getPoint() * NumConstant.ONE_NEG); } + sum += ruleInfo.getPoint(); }else{ //actionLog中存的是正负数,如果是减操作,则算出来的是负数相加 - sum -= ruleInfo.getPoint() * NumConstant.ONE_NEG; - sum *= NumConstant.ONE_NEG; if(ruleInfo.getPoint() > NumConstant.ZERO){ //保证要扣减的积分是负数 ruleInfo.setPoint(ruleInfo.getPoint() * NumConstant.ONE_NEG); } + sum += ruleInfo.getPoint(); + sum *= NumConstant.ONE_NEG; } //这里sum一定是正数 - if(ruleInfo.getUpLimit() < (sum + ruleInfo.getPoint())){ + if(ruleInfo.getUpLimit() < sum){ log.info(String.format("该用户获取此类事件的积分已达上限,详细数据->【%s】", JSON.toJSON(event))); return ; } @@ -224,14 +238,27 @@ public class UserPointActionLogServiceImpl extends BaseServiceImpl AND CUSTOMER_ID = #{customerId} AND SOURCE_ID = #{sourceId} + + AND CREATED_TIME = ]]> #{dateCheck} + \ No newline at end of file diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/UserPointStatisticalDailyDao.xml b/epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/UserPointStatisticalDailyDao.xml index 633b3f75fa..70cdfc8d4f 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/UserPointStatisticalDailyDao.xml +++ b/epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/UserPointStatisticalDailyDao.xml @@ -36,9 +36,9 @@ ( SELECT total.USER_ID, - IFNULL( SUM( daily.POINT_CHANGE ), 0 ) AS POINT_CHANGE, + IF - ( POINT_CHANGE 0, 0, IFNULL( SUM( daily.POINT_CHANGE ), 0 ) ) AS TOTAL_POINT + ( IFNULL( SUM( daily.POINT_CHANGE ), 0 ) 0, 0, IFNULL( SUM( daily.POINT_CHANGE ), 0 ) ) AS TOTAL_POINT FROM user_point_total total LEFT JOIN user_point_statistical_daily daily ON daily.USER_ID = total.USER_ID diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/FixationAppIdDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/FixationAppIdDTO.java new file mode 100644 index 0000000000..ad55fbb43d --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/FixationAppIdDTO.java @@ -0,0 +1,86 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dto; + +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + + +/** + * 固定的AppId表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2020-08-03 + */ +@Data +public class FixationAppIdDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * ID + */ + private String id; + + /** + * 小程序AppId + */ + private String appId; + + /** + * 客户Id + */ + private String customerId; + + /** + * 客户端类型resi:居民端,work:工作端 + */ + private String clientType; + + /** + * 删除状态0:正常,已删除 + */ + private Integer delFlag; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/ModifyCustomerFormDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/ModifyCustomerFormDTO.java new file mode 100644 index 0000000000..aff37e587b --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/ModifyCustomerFormDTO.java @@ -0,0 +1,26 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author sun + * @Description 修改各业务表customerId(兼容党群e事通已上线客户,将已有客户Id同步到第三方问题)-接口入参 + */ +@Data +public class ModifyCustomerFormDTO implements Serializable { + + private static final long serialVersionUID = -6547893374373422628L; + + /** + * 待修改的客户Id 公众号创建的客户 + * */ + private String oldCustomerId; + + /** + * 修改后的客户Id crm表原来的customerId + */ + private String newCustomerId; + +} diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/FixationAppIdResultDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/FixationAppIdResultDTO.java new file mode 100644 index 0000000000..d27aa43ef7 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/FixationAppIdResultDTO.java @@ -0,0 +1,30 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2020/8/3 4:15 下午 + */ +@Data +public class FixationAppIdResultDTO implements Serializable { + + private static final long serialVersionUID = 3810567059789358255L; + + /** + * 客户ID + */ + private String masterCustomerId; + + /** + * 客户端类型:resi:居民端,work:工作端 + */ + private String clientType; + + /** + * AppId + */ + private String appId; +} diff --git a/epmet-module/epmet-third/epmet-third-server/deploy/docker-compose-dev.yml b/epmet-module/epmet-third/epmet-third-server/deploy/docker-compose-dev.yml index 436dc5a4e0..73010e453f 100644 --- a/epmet-module/epmet-third/epmet-third-server/deploy/docker-compose-dev.yml +++ b/epmet-module/epmet-third/epmet-third-server/deploy/docker-compose-dev.yml @@ -2,7 +2,7 @@ version: "3.7" services: epmet-third-server: container_name: epmet-third-server-dev - image: 192.168.1.130:10080/epmet-cloud-dev/epmet-third-server:0.0.92 + image: 192.168.1.130:10080/epmet-cloud-dev/epmet-third-server:0.0.93 ports: - "8110:8110" network_mode: host # 使用现有网络 diff --git a/epmet-module/epmet-third/epmet-third-server/pom.xml b/epmet-module/epmet-third/epmet-third-server/pom.xml index 5fc45f607d..571cad941d 100644 --- a/epmet-module/epmet-third/epmet-third-server/pom.xml +++ b/epmet-module/epmet-third/epmet-third-server/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.0.92 + 0.0.93 com.epmet diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/ModuleConstant.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/ModuleConstant.java index 1bc5e3b98b..bbe5ac73b9 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/ModuleConstant.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/ModuleConstant.java @@ -86,6 +86,21 @@ public interface ModuleConstant { String AUDIT_FAILED = "audit_failed"; String XML = "xml"; String CREATE_TIME = "CreateTime"; + String QUERY_AUTH_CODE = "QUERY_AUTH_CODE"; + String _CALL_BACK = "_callback"; + String FROM_CALLBACK = "from_callback"; + String APPLICATION_JSON = "application/json"; + String _FROM_API = "_from_api"; + + /** + * 微信模推送给第三方平台方 Content固定格式 + */ + String TESTCOMPONENT_MSG_TYPE_TEXT = "TESTCOMPONENT_MSG_TYPE_TEXT"; + + /** + * 第三方平台方立马回应文本消息并最终触达粉丝 Content固定格式 + */ + String TESTCOMPONENT_MSG_TYPE_TEXT_callback = "TESTCOMPONENT_MSG_TYPE_TEXT_callback"; int FORTY_THOUSAND_AND_THIRTEEN = 40013; int EIGHTY_NINE_THOUSAND = 89000; diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/PaConstant.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/PaConstant.java index 7f25762c5e..21e369aec9 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/PaConstant.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/PaConstant.java @@ -78,4 +78,8 @@ public interface PaConstant { * 获取访问记录表数据失败失败 */ String SELECT_VISITED_EXCEPTION = "获取访问记录表数据失败"; + /** + * 更新客户Id信息失败 + */ + String UPDATE_CUSTOMER_EXCEPTION = "更新客户Id信息失败"; } diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/ThirdRunTimeInfoConstant.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/ThirdRunTimeInfoConstant.java index 188c19a89e..1f896bae8f 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/ThirdRunTimeInfoConstant.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/ThirdRunTimeInfoConstant.java @@ -103,4 +103,8 @@ public interface ThirdRunTimeInfoConstant { String BEGIN_CREATE_OPEN = "============================开始执行绑定开放平台账号==================================="; String CODE_AUDIT_RESULT = "----------------------------------代码审核结果即将插入,需要插入的内容为:%s-----------------------------------------"; + + String TEXT_MESSAGE_LOG_INFO = "content:%s,content[1]:%s,fromUserName:%s,toUserName:%s"; + + String SEND_MESSAGE_XML = "要发送的xml内容为:%s"; } diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/CustomerMpDao.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/CustomerMpDao.java index a3fca59cc8..0e5243e6e7 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/CustomerMpDao.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/CustomerMpDao.java @@ -21,6 +21,7 @@ import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dto.CustomerMpDTO; import com.epmet.dto.PaCustomerDTO; import com.epmet.dto.form.AuthCodeFormDTO; +import com.epmet.dto.form.ModifyCustomerFormDTO; import com.epmet.entity.CustomerMpEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -123,4 +124,12 @@ public interface CustomerMpDao extends BaseDao { * @author zxc */ String getAppId(@Param("customerId")String customerId,@Param("clientType")String clientType); + + /** + * @param formDTO + * @return + * @Author sun + * @Description 修改customer_mp表客户Id + **/ + int updateCustomerId(ModifyCustomerFormDTO formDTO); } \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/FixationAppIdDao.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/FixationAppIdDao.java new file mode 100644 index 0000000000..ceb297a05c --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/FixationAppIdDao.java @@ -0,0 +1,43 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.result.FixationAppIdResultDTO; +import com.epmet.entity.FixationAppIdEntity; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * 固定的AppId表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2020-08-03 + */ +@Mapper +public interface FixationAppIdDao extends BaseDao { + + /** + * @Description 查询固定AppId信息 + * @author zxc + * @date 2020/8/3 4:25 下午 + */ + List selectFixationInfos(); + +} \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaCustomerAgencyDao.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaCustomerAgencyDao.java index a3031b9b15..46938bfc31 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaCustomerAgencyDao.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaCustomerAgencyDao.java @@ -19,6 +19,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dto.PaCustomerAgencyDTO; +import com.epmet.dto.form.ModifyCustomerFormDTO; import com.epmet.entity.PaCustomerAgencyEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -54,4 +55,12 @@ public interface PaCustomerAgencyDao extends BaseDao { * @Description 公众号-查询客户组织信息 **/ PaCustomerAgencyDTO selectAgency(@Param("customerId") String customerId); + + /** + * @param formDTO + * @return + * @Author sun + * @Description 修改pa_customer_agency表客户Id + **/ + int updateCustomerId(ModifyCustomerFormDTO formDTO); } \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaCustomerDao.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaCustomerDao.java index 5d403cb1cf..c977d5d7f4 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaCustomerDao.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaCustomerDao.java @@ -19,6 +19,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dto.PaCustomerDTO; +import com.epmet.dto.form.ModifyCustomerFormDTO; import com.epmet.dto.form.RegisterByAuthFormDTO; import com.epmet.dto.result.CustomerAgencyResultDTO; import com.epmet.dto.result.RegisterByAuthResultDTO; @@ -69,4 +70,11 @@ public interface PaCustomerDao extends BaseDao { **/ List selectCustomerList(RegisterByAuthFormDTO formDTO); + /** + * @param formDTO + * @return + * @Author sun + * @Description 修改pa_customer表主键值 + **/ + int updateIdById(ModifyCustomerFormDTO formDTO); } \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaCustomerUserAgencyDao.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaCustomerUserAgencyDao.java index 2083f9c1e9..bd0c8253c4 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaCustomerUserAgencyDao.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaCustomerUserAgencyDao.java @@ -19,6 +19,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dto.PaCustomerUserAgencyDTO; +import com.epmet.dto.form.ModifyCustomerFormDTO; import com.epmet.entity.PaCustomerUserAgencyEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -47,4 +48,12 @@ public interface PaCustomerUserAgencyDao extends BaseDao { * @Description 根据数据来源和手机号查询公众号用户基本信息,校验用户是否存在 **/ PaUserDTO selectUser(@Param("id") String id, @Param("source") String source); + + /** + * @Description 查询管理员基本信息 + * @param customerId + * @author zxc + * @date 2020/8/3 5:21 下午 + */ + CustomerManagerFormDTO selectManagerInfo(@Param("customerId") String customerId); } \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/FixationAppIdEntity.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/FixationAppIdEntity.java new file mode 100644 index 0000000000..4d7a70e7e8 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/FixationAppIdEntity.java @@ -0,0 +1,56 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +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; + +/** + * 固定的AppId表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2020-08-03 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("fixation_app_id") +public class FixationAppIdEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 小程序AppId + */ + private String appId; + + /** + * 客户Id + */ + private String customerId; + + /** + * 客户端类型resi:居民端,work:工作端 + */ + private String clientType; + +} diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PaCustomerService.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PaCustomerService.java index 829029168f..b08f4aead1 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PaCustomerService.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PaCustomerService.java @@ -21,10 +21,7 @@ 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.PaCustomerDTO; -import com.epmet.dto.form.CreateAgencyFormDTO; -import com.epmet.dto.form.RegisterByAuthFormDTO; -import com.epmet.dto.form.RegisterFormDTO; -import com.epmet.dto.form.RegisterInfoFormDTO; +import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.entity.PaCustomerEntity; @@ -163,4 +160,12 @@ public interface PaCustomerService extends BaseService { * @Description 根据初始化状态获取公众号注册的客户列表 **/ List registerByAuth(RegisterByAuthFormDTO formDTO); + + /** + * @param formDTO + * @return + * @Author sun + * @Description 修改各业务表customerId(兼容党群e事通已上线客户,将已有客户Id同步到第三方问题) + **/ + void modifyCustomer(ModifyCustomerFormDTO formDTO); } \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/ComponentVerifyTicketServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/ComponentVerifyTicketServiceImpl.java index c54dd03a31..67bcddbac0 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/ComponentVerifyTicketServiceImpl.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/ComponentVerifyTicketServiceImpl.java @@ -15,6 +15,7 @@ import com.epmet.dao.*; import com.epmet.dto.PaCustomerUserAgencyDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; +import com.epmet.feign.OperCrmOpenFeignClient; import com.epmet.mpaes.WXBizMsgCrypt; import com.epmet.mpaes.WXXmlToMapUtil; import com.epmet.redis.RedisThird; @@ -79,6 +80,14 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe private AuthResultRecordDao authResultRecordDao; @Autowired private PaCustomerUserAgencyDao paCustomerUserAgencyDao; + @Autowired + private FixationAppIdDao fixationAppIdDao; + @Autowired + private OperCrmOpenFeignClient operCrmOpenFeignClient; + @Autowired + private PaUserDao paUserDao; + @Autowired + private PaCustomerServiceImpl paCustomerServiceImpl; @Value("${third.platform.appId}") private String componentAppId; @@ -386,8 +395,11 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe String authCode = authCodeAndTime.getAuthCode(); String clientType = authCodeAndTime.getClientType(); String expiresIn = authCodeAndTime.getExpiresIn(); + // 公众号创建客户的id String customerId = this.getLoginUserCustomerId(tokenDto); Date expiresInTime = this.countExpirationTime(expiresIn); + + //authCode存数据库 AuthCodeFormDTO formDTO = new AuthCodeFormDTO(); formDTO.setAuthCode(authCode); @@ -402,6 +414,32 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe // 1. 开始获取授权信息(使用授权码) AuthorizationInfoResultDTO authorizationInfoResultDTO = this.authInfoByAuthCode(authCode, customerId, clientType); String authAppId = authorizationInfoResultDTO.getAuthorizer_appid(); + List fixationAppIdResultDTOS = fixationAppIdDao.selectFixationInfos(); + String finalCustomerId = customerId;// + fixationAppIdResultDTOS.forEach(fixationAppId -> { + if (fixationAppId.getAppId().equals(authAppId)){ + // TODO 是城阳项目或者党群e事通 + // crm表中的customerId【原customerId】 + String masterCustomerId = fixationAppId.getMasterCustomerId(); + formDTO.setCustomerId(masterCustomerId); + authCodeDao.deleteCustomerAuthCode(finalCustomerId,clientType); + authCodeDao.insertRedirectAuthCode(formDTO); + //authCode存缓存 + redisThird.setAuthCode(formDTO); + + ModifyCustomerFormDTO modifyCustomer = new ModifyCustomerFormDTO(); + modifyCustomer.setOldCustomerId(finalCustomerId); + modifyCustomer.setNewCustomerId(masterCustomerId); + paCustomerServiceImpl.modifyCustomer(modifyCustomer); + + // 管理员授权 + CustomerManagerFormDTO customerManager = paUserDao.selectManagerInfo(finalCustomerId); + customerManager.setCustomerId(finalCustomerId); + operCrmOpenFeignClient.addManager(customerManager); + } + }); + //替换 新customerId为旧customerId + customerId = formDTO.getCustomerId(); // 2. 创建开放平台账号并绑定 或者 直接绑定开放平台 this.createAndBindOpenAccount(customerId,authAppId,clientType); // 3. 更新 customer_mp 表授权状态和AuthAppId diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaCustomerServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaCustomerServiceImpl.java index 2652afb556..ae9d730829 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaCustomerServiceImpl.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaCustomerServiceImpl.java @@ -34,10 +34,7 @@ import com.epmet.commons.tools.utils.CpUserDetailRedis; import com.epmet.constant.PaConstant; import com.epmet.dao.*; import com.epmet.dto.*; -import com.epmet.dto.form.CreateAgencyFormDTO; -import com.epmet.dto.form.RegisterByAuthFormDTO; -import com.epmet.dto.form.RegisterFormDTO; -import com.epmet.dto.form.RegisterInfoFormDTO; +import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.entity.*; import com.epmet.redis.PaCustomerRedis; @@ -505,4 +502,36 @@ public class PaCustomerServiceImpl extends BaseServiceImpl%s,修改后的客户Id->%s", formDTO.getOldCustomerId(), formDTO.getNewCustomerId())); + throw new RenException(PaConstant.UPDATE_CUSTOMER_EXCEPTION); + } + //2.修改pa_customer_agency表customerId + if (paCustomerAgencyDao.updateCustomerId(formDTO) < NumConstant.ONE) { + logger.error(String.format("修改pa_customer_agency表客户Id失败,待修改的客户Id->%s,修改后的客户Id->%s", formDTO.getOldCustomerId(), formDTO.getNewCustomerId())); + throw new RenException(PaConstant.UPDATE_CUSTOMER_EXCEPTION); + } + //3.修改customer_mp表customerId + if (customerMpDao.updateCustomerId(formDTO) < NumConstant.ONE) { + logger.error(String.format("修改customer_mp表客户Id失败,待修改的客户Id->%s,修改后的客户Id->%s", formDTO.getOldCustomerId(), formDTO.getNewCustomerId())); + throw new RenException(PaConstant.UPDATE_CUSTOMER_EXCEPTION); + } + //4.修改pa_customer_user_agency表customerId + if (paCustomerUserAgencyDao.updateCustomerId(formDTO) < NumConstant.ONE) { + logger.error(String.format("修改pa_customer_user_agency表客户Id失败,待修改的客户Id->%s,修改后的客户Id->%s", formDTO.getOldCustomerId(), formDTO.getNewCustomerId())); + throw new RenException(PaConstant.UPDATE_CUSTOMER_EXCEPTION); + } + + } + } \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/WarrantServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/WarrantServiceImpl.java index 956c5c31e6..d5e2249cef 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/WarrantServiceImpl.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/WarrantServiceImpl.java @@ -1,18 +1,29 @@ package com.epmet.service.impl; +import cn.hutool.json.JSONObject; +import com.alibaba.fastjson.JSON; import com.alibaba.nacos.client.config.utils.IOUtils; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.HttpClientManager; import com.epmet.constant.ModuleConstant; +import com.epmet.constant.ThirdRedisKeyConstant; import com.epmet.constant.ThirdRunTimeInfoConstant; import com.epmet.dao.*; import com.epmet.dto.form.CodeAuditRecordFormDTO; import com.epmet.dto.form.MessagePushTextFormDTO; +import com.epmet.dto.result.AuthorizationInfoResultDTO; import com.epmet.dto.result.CustomerIdAndClientResultDTO; import com.epmet.dto.result.TemplateAndAppIdResultDTO; import com.epmet.mpaes.AesException; import com.epmet.mpaes.WXBizMsgCrypt; import com.epmet.mpaes.WXXmlToMapUtil; +import com.epmet.redis.RedisThird; import com.epmet.service.WarrantService; +import com.epmet.wxapi.constant.WxMaCodeConstant; +import com.fasterxml.jackson.core.JsonEncoding; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.dom4j.DocumentException; @@ -26,6 +37,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.util.Date; +import java.util.HashMap; import java.util.Map; /** @@ -56,6 +68,8 @@ public class WarrantServiceImpl implements WarrantService { private ComponentVerifyTicketServiceImpl componentVerifyTicketServiceImpl; @Autowired private MessagePushTextDao messagePushTextDao; + @Autowired + private RedisThird redisThird; /** * @Description 1.保存代码审核结果 2.更新代码上传结果 @@ -134,8 +148,140 @@ public class WarrantServiceImpl implements WarrantService { Date date = componentVerifyTicketServiceImpl.sToDate(createTime.toString()); messagePushTextFormDTO.setWeChatCreateTime(date); messagePushTextDao.insertMessageText(messagePushTextFormDTO); +// switch (messagePushTextFormDTO.getContent()){ +// //测试公众号处理用户消息 +// case ModuleConstant.TESTCOMPONENT_MSG_TYPE_TEXT: +// +// +// } +// if (messagePushTextFormDTO.getContent().startsWith(ModuleConstant.QUERY_AUTH_CODE)){ +// // 测试公众号使用客服消息接口处理用户消息 +// String content = messagePushTextFormDTO.getContent(); +// String contentBefore = content.substring(NumConstant.ZERO, content.indexOf(ThirdRedisKeyConstant.COLON)); +// //auth_code +// String queryAuthCode = content.substring(contentBefore.length() + NumConstant.ONE, content.length()); +// +// } } log.info("消息与事件接收URL【代码审核结果】结束......"); return ModuleConstant.SUCCESS; } + + /** + * 方法描述: 类型为enevt的时候,拼接 + * @param request + * @param response + * @param event + * @param toUserName 发送接收人 + * @param fromUserName 发送人 + * @author zxc + */ + public void replyEventMessage(HttpServletRequest request, HttpServletResponse response, + String event, String toUserName, String fromUserName) + throws DocumentException, IOException { + String content = event + ModuleConstant.FROM_CALLBACK; + replyTextMessage(request,response,content,toUserName,fromUserName); + } + + + /** + * 立马回应文本消息并最终触达粉丝 + * @param content 文本 + * @param toUserName 发送接收人 + * @param fromUserName 发送人 + * @author zxc + */ + public void processTextMessage(HttpServletRequest request, HttpServletResponse response, + String content,String toUserName, String fromUserName) + throws IOException, DocumentException{ + if(ModuleConstant.TESTCOMPONENT_MSG_TYPE_TEXT.equals(content)){ + String returnContent = content+ModuleConstant._CALL_BACK; + replyTextMessage(request,response,returnContent,toUserName,fromUserName); + }else if(StringUtils.startsWithIgnoreCase(content, ModuleConstant.QUERY_AUTH_CODE)){ + response.getWriter().print("");//需在5秒内返回空串表明暂时不回复,然后再立即使用客服消息接口发送消息回复粉丝 + log.info(String.format(ThirdRunTimeInfoConstant.TEXT_MESSAGE_LOG_INFO,content,content.split(ThirdRedisKeyConstant.COLON)[NumConstant.ONE],fromUserName,toUserName)); + //接下来客服API再回复一次消息 + replyApiTextMessage(content.split(ThirdRedisKeyConstant.COLON)[NumConstant.ONE],toUserName); + } + } + + + + /** + * 方法描述: 直接返回给微信开放平台 + * @param request + * @param response + * @param content 文本 + * @param toUserName 发送接收人 + * @param fromUserName 发送人 + * @author zxc + */ + public void replyTextMessage(HttpServletRequest request, HttpServletResponse response, + String content,String toUserName, String fromUserName) + throws DocumentException, IOException { + Long createTime = System.currentTimeMillis() / 1000; + StringBuffer sb = new StringBuffer(512); + sb.append(""); + sb.append(""); + sb.append(""); + sb.append(""+createTime.toString()+""); + sb.append(""); + sb.append(""); + sb.append(""); + String replyMsg = sb.toString(); + log.info(String.format(ThirdRunTimeInfoConstant.SEND_MESSAGE_XML,replyMsg)); + returnJSON(replyMsg,response); + } + + /** + * 方法描述: 调用客服回复消息给粉丝 + * @param auth_code + * @param fromUserName + * @throws DocumentException + * @throws IOException + * @return void + * @author zxc + */ + public void replyApiTextMessage(String auth_code, String fromUserName) throws DocumentException, IOException { + // 得到微信授权成功的消息后,应该立刻进行处理!!相关信息只会在首次授权的时候推送过来 + //第三方平台【component_access_token】 + String componentAccessToken = redisThird.getComponentAccessToken(); + com.alibaba.fastjson.JSONObject jsonObject = new com.alibaba.fastjson.JSONObject(); + jsonObject.put(ModuleConstant.COMPONENT_APPID, componentAppId); + jsonObject.put(ModuleConstant.AUTHORIZATION_CODE, auth_code); + String authInfo = HttpClientManager.getInstance().sendPostByJSON(WxMaCodeConstant.API_QUERY_AUTH_URL + componentAccessToken, JSON.toJSONString(jsonObject)).getData(); + HashMap hashMap = JSON.parseObject(authInfo, HashMap.class); + Map map = hashMap.get(ModuleConstant.AUTHORIZATION_INFO); + AuthorizationInfoResultDTO authorizationInfoResultDTO = ConvertUtils.mapToEntity(map, AuthorizationInfoResultDTO.class); + String authorizer_access_token = authorizationInfoResultDTO.getAuthorizer_access_token(); + + JSONObject json = new JSONObject(); + json.put("touser",fromUserName); + json.put("msgtype", "text"); + json.put("text", "{\"content\":\""+auth_code+ModuleConstant._FROM_API+"\"}"); + + String data = HttpClientManager.getInstance().sendPostByJSON(WxMaCodeConstant.SEND_MESSAGE_CUSTOM + authorizer_access_token, JSON.toJSONString(json)).getData(); + log.info("客服发送接口返回值:"+data); + } + + + /** + * 方法描述: 返回数据到请求方 + * @param data 数据 + * @param response + * @author zxc + */ + public void returnJSON(Object data,HttpServletResponse response) { + try { + ObjectMapper objectMapper = new ObjectMapper(); + JsonEncoding encoding = JsonEncoding.UTF8; + response.setContentType(ModuleConstant.APPLICATION_JSON); + JsonGenerator generator = objectMapper.getJsonFactory(). + createJsonGenerator(response.getOutputStream(), encoding); + objectMapper.writeValue(generator, data); + } catch (IOException e) { + e.printStackTrace(); + } + } + } diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/constant/WxMaCodeConstant.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/constant/WxMaCodeConstant.java index 75ce684c49..f27eaff2c1 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/constant/WxMaCodeConstant.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/constant/WxMaCodeConstant.java @@ -76,6 +76,11 @@ public interface WxMaCodeConstant { */ String API_OPEN_GET = "https://api.weixin.qq.com/cgi-bin/open/get?access_token="; + /** + * + */ + String SEND_MESSAGE_CUSTOM = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token="; + /** * 为授权的小程序帐号上传小程序代码. */ diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxMaCodeServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxMaCodeServiceImpl.java index 34c1931c88..7b09a3e440 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxMaCodeServiceImpl.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxMaCodeServiceImpl.java @@ -204,7 +204,7 @@ public class WxMaCodeServiceImpl implements WxMaCodeService { public WxResult getMaterial(String accessToken, WxMaNewsReq request) { WxResult result = new WxResult<>(); String url = WxMaCodeConstant.GET_MATERIAL_URL + "?" + "access_token=" + accessToken; - Result statusResult = HttpClientManager.getInstance().getByteArray(url, toMap(request)); + Result statusResult = HttpClientManager.getInstance().getMediaByteArray(url, toJson(request)); if (!statusResult.success()) { result.setErrorCode(statusResult.getCode()); result.setErrorMsg(statusResult.getMsg()); diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/resources/db/migration/V0.0.4__thirdUpdate.sql b/epmet-module/epmet-third/epmet-third-server/src/main/resources/db/migration/V0.0.4__thirdUpdate.sql new file mode 100644 index 0000000000..55fa2a7a2f --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/resources/db/migration/V0.0.4__thirdUpdate.sql @@ -0,0 +1,13 @@ +CREATE TABLE `fixation_app_id` ( + `ID` varchar(64) NOT NULL COMMENT 'ID', + `APP_ID` varchar(64) DEFAULT NULL COMMENT '小程序AppId', + `CUSTOMER_ID` varchar(64) DEFAULT NULL COMMENT '客户Id', + `CLIENT_TYPE` varchar(32) DEFAULT NULL COMMENT '客户端类型resi:居民端,work:工作端', + `DEL_FLAG` int(11) DEFAULT NULL COMMENT '删除状态0:正常,已删除', + `REVISION` int(11) DEFAULT NULL COMMENT '乐观锁', + `CREATED_BY` varchar(32) DEFAULT NULL COMMENT '创建人', + `CREATED_TIME` datetime DEFAULT NULL COMMENT '创建时间', + `UPDATED_BY` varchar(32) DEFAULT NULL COMMENT '更新人', + `UPDATED_TIME` datetime DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='固定的AppId表 '; \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/CustomerMpDao.xml b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/CustomerMpDao.xml index d7281d2a9f..f8f3d37ff6 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/CustomerMpDao.xml +++ b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/CustomerMpDao.xml @@ -145,4 +145,12 @@ AND client = #{clientType} + + UPDATE customer_mp + SET customer_id = #{newCustonerId} + WHERE + del_flag = '0' + AND customer_id = #{oldCustomerId} + + \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/FixationAppIdDao.xml b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/FixationAppIdDao.xml new file mode 100644 index 0000000000..b688f5f77d --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/FixationAppIdDao.xml @@ -0,0 +1,17 @@ + + + + + + + + \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaCustomerAgencyDao.xml b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaCustomerAgencyDao.xml index 9911ae88ff..752fb6081a 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaCustomerAgencyDao.xml +++ b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaCustomerAgencyDao.xml @@ -82,4 +82,12 @@ LIMIT 1 + + UPDATE pa_customer_agency + SET customer_id = #{newCustonerId} + WHERE + del_flag = '0' + AND customer_id = #{oldCustomerId} + + \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaCustomerDao.xml b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaCustomerDao.xml index 0c584b7615..f56a663a07 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaCustomerDao.xml +++ b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaCustomerDao.xml @@ -79,4 +79,12 @@ AND id = #{id} + + UPDATE pa_customer + SET id = #{newCustonerId} + WHERE + del_flag = '0' + AND id = #{oldCustomerId} + + \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaCustomerUserAgencyDao.xml b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaCustomerUserAgencyDao.xml index 93a0b840f0..dee9a80f90 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaCustomerUserAgencyDao.xml +++ b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaCustomerUserAgencyDao.xml @@ -34,4 +34,12 @@ AND pcua.user_id = #{userId} + + UPDATE pa_customer_user_agency + SET customer_id = #{newCustonerId} + WHERE + del_flag = '0' + AND customer_id = #{oldCustomerId} + + \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaUserDao.xml b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaUserDao.xml index 628eefe53f..4b67271ab7 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaUserDao.xml +++ b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaUserDao.xml @@ -50,4 +50,20 @@ AND source = #{source} + + + \ No newline at end of file diff --git a/epmet-module/gov-access/gov-access-server/deploy/docker-compose-dev.yml b/epmet-module/gov-access/gov-access-server/deploy/docker-compose-dev.yml index 5f31328225..a16550345f 100644 --- a/epmet-module/gov-access/gov-access-server/deploy/docker-compose-dev.yml +++ b/epmet-module/gov-access/gov-access-server/deploy/docker-compose-dev.yml @@ -2,7 +2,7 @@ version: "3.7" services: gov-access-server: container_name: gov-access-server-dev - image: 192.168.1.130:10080/epmet-cloud-dev/gov-access-server:0.3.37 + image: 192.168.1.130:10080/epmet-cloud-dev/gov-access-server:0.3.38 ports: - "8099:8099" network_mode: host # 使用现有网络 diff --git a/epmet-module/gov-access/gov-access-server/pom.xml b/epmet-module/gov-access/gov-access-server/pom.xml index 1d9460d0b0..f8d9426042 100644 --- a/epmet-module/gov-access/gov-access-server/pom.xml +++ b/epmet-module/gov-access/gov-access-server/pom.xml @@ -2,7 +2,7 @@ - 0.3.37 + 0.3.38 gov-access com.epmet diff --git a/epmet-module/oper-crm/oper-crm-client/src/main/java/com/epmet/feign/OperCrmOpenFeignClient.java b/epmet-module/oper-crm/oper-crm-client/src/main/java/com/epmet/feign/OperCrmOpenFeignClient.java index 59a01476e7..6048121b9d 100644 --- a/epmet-module/oper-crm/oper-crm-client/src/main/java/com/epmet/feign/OperCrmOpenFeignClient.java +++ b/epmet-module/oper-crm/oper-crm-client/src/main/java/com/epmet/feign/OperCrmOpenFeignClient.java @@ -5,9 +5,11 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.dto.CustomerAppDTO; import com.epmet.dto.CustomerDTO; import com.epmet.dto.form.CustomerAppSecretFormDTO; +import com.epmet.dto.form.CustomerManagerFormDTO; import com.epmet.feign.fallback.OperCrmOpenFeignClientFallback; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import java.util.List; @@ -41,4 +43,14 @@ public interface OperCrmOpenFeignClient { */ @PostMapping("/oper/crm/customerapp/getconfigallapp") Result> getConfigAllApp(); + + /** + * 添加根管理员 + * @author zhaoqifeng + * @date 2020/8/3 15:24 + * @param form + * @return com.epmet.commons.tools.utils.Result + */ + @PostMapping("/oper/crm/customer/addmanager") + Result addManager(@RequestBody CustomerManagerFormDTO form); } diff --git a/epmet-module/oper-crm/oper-crm-client/src/main/java/com/epmet/feign/fallback/OperCrmOpenFeignClientFallback.java b/epmet-module/oper-crm/oper-crm-client/src/main/java/com/epmet/feign/fallback/OperCrmOpenFeignClientFallback.java index 81b74a4f7c..504d2be412 100644 --- a/epmet-module/oper-crm/oper-crm-client/src/main/java/com/epmet/feign/fallback/OperCrmOpenFeignClientFallback.java +++ b/epmet-module/oper-crm/oper-crm-client/src/main/java/com/epmet/feign/fallback/OperCrmOpenFeignClientFallback.java @@ -6,6 +6,7 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.dto.CustomerAppDTO; import com.epmet.dto.CustomerDTO; import com.epmet.dto.form.CustomerAppSecretFormDTO; +import com.epmet.dto.form.CustomerManagerFormDTO; import com.epmet.feign.OperCrmOpenFeignClient; import org.springframework.stereotype.Component; @@ -39,4 +40,9 @@ public class OperCrmOpenFeignClientFallback implements OperCrmOpenFeignClient { public Result> getConfigAllApp() { return ModuleUtils.feignConError(ServiceConstant.OPER_CRM_SERVER, "getConfigAllApp", null); } + + @Override + public Result addManager(CustomerManagerFormDTO form) { + return ModuleUtils.feignConError(ServiceConstant.OPER_CRM_SERVER, "CustomerManagerFormDTO", form); + } } diff --git a/epmet-module/oper-crm/oper-crm-server/deploy/docker-compose-dev.yml b/epmet-module/oper-crm/oper-crm-server/deploy/docker-compose-dev.yml index 270b2e9325..fa922decda 100644 --- a/epmet-module/oper-crm/oper-crm-server/deploy/docker-compose-dev.yml +++ b/epmet-module/oper-crm/oper-crm-server/deploy/docker-compose-dev.yml @@ -2,7 +2,7 @@ version: "3.7" services: oper-crm-server: container_name: oper-crm-server-dev - image: 192.168.1.130:10080/epmet-cloud-dev/oper-crm-server:0.3.58 + image: 192.168.1.130:10080/epmet-cloud-dev/oper-crm-server:0.3.59 ports: - "8090:8090" network_mode: host # 使用现有网络 diff --git a/epmet-module/oper-crm/oper-crm-server/pom.xml b/epmet-module/oper-crm/oper-crm-server/pom.xml index 5900ef04d9..6a90cb6f15 100644 --- a/epmet-module/oper-crm/oper-crm-server/pom.xml +++ b/epmet-module/oper-crm/oper-crm-server/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.3.58 + 0.3.59 com.epmet oper-crm diff --git a/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerServiceImpl.java b/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerServiceImpl.java index 74e4dd8653..560586a971 100644 --- a/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerServiceImpl.java +++ b/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerServiceImpl.java @@ -278,6 +278,19 @@ public class CustomerServiceImpl extends BaseServiceImpl> managersResult = epmetUserFeignClient.getStaffsInRole(staffRoleFormDTO); + if(!managersResult.success()) { + log.error("查询客户根级组织的管理员失败".concat(getRoleResult.toString())); + throw new RenException("查询客户根级组织的管理员失败".concat(getRoleResult.toString())); + } + if(null != managersResult.getData() && managersResult.getData().size() > NumConstant.ZERO) { + log.error("客户已存在管理员".concat(getRoleResult.toString())); + throw new RenException("客户已存在管理员".concat(getRoleResult.toString())); + } + StaffSubmitFromDTO staffSubmitFrom = new StaffSubmitFromDTO(); staffSubmitFrom.setCustomerId(form.getCustomerId()); staffSubmitFrom.setAgencyId(customerRootAgencyResult.getData().getId()); diff --git a/epmet-module/resi-mine/resi-mine-server/deploy/docker-compose-dev.yml b/epmet-module/resi-mine/resi-mine-server/deploy/docker-compose-dev.yml index 72c895307d..8c875a988a 100644 --- a/epmet-module/resi-mine/resi-mine-server/deploy/docker-compose-dev.yml +++ b/epmet-module/resi-mine/resi-mine-server/deploy/docker-compose-dev.yml @@ -2,7 +2,7 @@ version: "3.7" services: resi-mine-server: container_name: resi-mine-server-dev - image: 192.168.1.130:10080/epmet-cloud-dev/resi-mine-server:0.3.33 + image: 192.168.1.130:10080/epmet-cloud-dev/resi-mine-server:0.3.35 ports: - "8094:8094" network_mode: host # 使用现有网络 diff --git a/epmet-module/resi-mine/resi-mine-server/pom.xml b/epmet-module/resi-mine/resi-mine-server/pom.xml index 7b2dbcaf2d..6f369105ae 100644 --- a/epmet-module/resi-mine/resi-mine-server/pom.xml +++ b/epmet-module/resi-mine/resi-mine-server/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.3.33 + 0.3.35 com.epmet resi-mine @@ -90,6 +90,12 @@ 2.0.0 compile + + com.epmet + epmet-third-client + 2.0.0 + compile + diff --git a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/grid/controller/ResiMineGridController.java b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/grid/controller/ResiMineGridController.java index bb6bcc34ae..0b5553599b 100644 --- a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/grid/controller/ResiMineGridController.java +++ b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/grid/controller/ResiMineGridController.java @@ -3,14 +3,13 @@ package com.epmet.modules.grid.controller; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.dto.form.LatestGridInfoFormDTO; import com.epmet.dto.result.AllGridsByUserIdResultDTO; import com.epmet.dto.result.LatestGridInfoResultDTO; import com.epmet.modules.grid.service.ResiMineGridService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -48,4 +47,19 @@ public class ResiMineGridController { public Result> allGrids(@LoginUser TokenDto tokenDto){ return resiMineGridService.allGrids(tokenDto.getUserId()); } + + /** + * @return + * @param formDTO + * @Author sun + * @Description 单客户-获取用户最近访问网格 + * @Date 2020/8/3 + **/ + @PostMapping("latestgridinfo") + public Result latestGridInfo(@LoginUser TokenDto token, @RequestBody LatestGridInfoFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO); + formDTO.setUserId(token.getUserId()); + return new Result().ok(resiMineGridService.latestGridInfo(formDTO)); + } + } diff --git a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/grid/service/ResiMineGridService.java b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/grid/service/ResiMineGridService.java index f4f398306c..0d1c3f3f8f 100644 --- a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/grid/service/ResiMineGridService.java +++ b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/grid/service/ResiMineGridService.java @@ -2,6 +2,7 @@ package com.epmet.modules.grid.service; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.form.LatestGridInfoFormDTO; import com.epmet.dto.result.AllGridsByUserIdResultDTO; import com.epmet.dto.result.LatestGridInfoResultDTO; @@ -29,4 +30,13 @@ public interface ResiMineGridService { * @Author sun **/ Result> allGrids(String userId); + + /** + * @return + * @param formDTO + * @Author sun + * @Description 单客户-获取用户最近访问网格 + * @Date 2020/8/3 + **/ + LatestGridInfoResultDTO latestGridInfo(LatestGridInfoFormDTO formDTO); } diff --git a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/grid/service/impl/ResiMineGridServiceImpl.java b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/grid/service/impl/ResiMineGridServiceImpl.java index 279b7eae9e..7ba79252b2 100644 --- a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/grid/service/impl/ResiMineGridServiceImpl.java +++ b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/grid/service/impl/ResiMineGridServiceImpl.java @@ -1,13 +1,19 @@ package com.epmet.modules.grid.service.impl; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.epmet.commons.tools.constant.AppClientConstant; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.HttpClientManager; import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.PaCustomerDTO; +import com.epmet.dto.form.LatestGridInfoFormDTO; import com.epmet.dto.result.AllGridsByUserIdResultDTO; import com.epmet.dto.result.LatestGridInfoResultDTO; +import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.modules.feign.EpmetUserFeignClient; import com.epmet.modules.feign.GovOrgFeignClient; import com.epmet.modules.grid.service.ResiMineGridService; @@ -20,6 +26,7 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * @Description 居民端用户网格信息service @@ -33,6 +40,8 @@ public class ResiMineGridServiceImpl implements ResiMineGridService { private EpmetUserFeignClient epmetUserFeignClient; @Autowired private GovOrgFeignClient govOrgFeignClient; + @Autowired + private EpmetUserOpenFeignClient epmetUserOpenFeignClient; /** * @param tokenDto @@ -88,4 +97,42 @@ public class ResiMineGridServiceImpl implements ResiMineGridService { } return result.ok(resultGrids.getData()); } + + /** + * @return + * @param formDTO + * @Author sun + * @Description 单客户-获取用户最近访问网格 + * @Date 2020/8/3 + **/ + @Override + public LatestGridInfoResultDTO latestGridInfo(LatestGridInfoFormDTO formDTO) { + logger.info(String.format("居民端获取用户最近访问网格入参%s", JSON.toJSONString(formDTO))); + //1.调用third服务,根据appId获取客户Id + JSONObject jsonObject = new JSONObject(); + String customerMsgUrl = "https://epmet-cloud.elinkservice.cn/api/third/customermp/getcustomermsg/"; + String data = HttpClientManager.getInstance().sendPostByJSON(customerMsgUrl + formDTO.getAppId(), JSON.toJSONString(jsonObject)).getData(); + logger.info("调用third服务,根据appId查询客户信息:httpclient->url:" + customerMsgUrl + ",结果->" + data); + JSONObject toResult = JSON.parseObject(data); + Result mapToResult = ConvertUtils.mapToEntity(toResult, Result.class); + if (!mapToResult.success()) { + logger.error(String.format("根据appId查询客户信息失败,对应appId->" + formDTO.getAppId())); + throw new RenException(mapToResult.getMsg()); + } + Object PublicCustomerResultDTO = mapToResult.getData(); + JSONObject json = JSON.parseObject(PublicCustomerResultDTO.toString()); + Map map = (Map) json.get("customer"); + PaCustomerDTO customer = ConvertUtils.mapToEntity(map, PaCustomerDTO.class); + logger.info("小程序登陆third服务获取客户用户信息PaCustomerDTO->" + customer); + + //2.调用epmet-user服务,根据客户Id和用户Id查询最后一次访问记录 + formDTO.setCustomerId(customer.getId()); + Result userResult = epmetUserOpenFeignClient.latestGridInfo(formDTO); + if (!userResult.success()) { + logger.error(String.format("居民端获取用户最近访问网格失败,接口入参客户Id->%s,appId->%s,调用epmet-user-server服务返回->%s", formDTO.getCustomerId(), formDTO.getAppId(), JSON.toJSONString(userResult))); + } + + return userResult.getData(); + } + } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/LatestGridInfoFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/LatestGridInfoFormDTO.java new file mode 100644 index 0000000000..3df970fc0c --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/LatestGridInfoFormDTO.java @@ -0,0 +1,38 @@ +package com.epmet.dto.form; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Description 单客户-获取用户最近访问网格-接口入参 + * @Auth sun + */ +@Data +public class LatestGridInfoFormDTO implements Serializable { + private static final long serialVersionUID = -6534841370041338474L; + + public interface AddUserInternalGroup { + } + public interface AddUserShowGroup extends CustomerClientShowGroup { + } + + /** + * 小程序绑定的appId + */ + @NotBlank(message = "数据来源不能为空", groups = {LatestGridInfoFormDTO.AddUserInternalGroup.class, LatestGridInfoFormDTO.AddUserShowGroup.class}) + private String appId; + + /** + * 根据appId查询到的客户Id + */ + private String customerId; + + /** + * token中userId + */ + private String userId; + +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java index 857df537c1..8ea872a683 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java @@ -249,4 +249,14 @@ public interface EpmetUserOpenFeignClient { **/ @PostMapping("/epmetuser/userbaseinfo/volunteerbaseinfo") Result volunteerBaseInfo(@RequestBody ResiVolunteerAuthenticateFormDTO param); + + /** + * @return + * @param formDTO + * @Author sun + * @Description 单客户-获取用户最近访问网格 + * @Date 2020/8/3 + **/ + @PostMapping(value = "epmetuser/gridlatest/latestgridinfo") + Result latestGridInfo(@RequestBody LatestGridInfoFormDTO formDTO); } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java index 0be4d08c3d..6e137becc1 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java @@ -178,4 +178,9 @@ public class EpmetUserOpenFeignClientFallback implements EpmetUserOpenFeignClien public Result volunteerBaseInfo(ResiVolunteerAuthenticateFormDTO param) { return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "volunteerBaseInfo", param); } + + @Override + public Result latestGridInfo(LatestGridInfoFormDTO formDTO) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "latestGridInfo", formDTO); + } } diff --git a/epmet-user/epmet-user-server/deploy/docker-compose-dev.yml b/epmet-user/epmet-user-server/deploy/docker-compose-dev.yml index 9b9dc33093..4bd1f6c90b 100644 --- a/epmet-user/epmet-user-server/deploy/docker-compose-dev.yml +++ b/epmet-user/epmet-user-server/deploy/docker-compose-dev.yml @@ -2,7 +2,7 @@ version: "3.7" services: epmet-user-server: container_name: epmet-user-server-dev - image: 192.168.1.130:10080/epmet-cloud-dev/epmet-user-server:0.3.102 + image: 192.168.1.130:10080/epmet-cloud-dev/epmet-user-server:0.3.104 ports: - "8087:8087" network_mode: host # 不会创建新的网络 diff --git a/epmet-user/epmet-user-server/pom.xml b/epmet-user/epmet-user-server/pom.xml index a8810c4f21..9d162cf21c 100644 --- a/epmet-user/epmet-user-server/pom.xml +++ b/epmet-user/epmet-user-server/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.3.102 + 0.3.104 com.epmet epmet-user diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/GridLatestController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/GridLatestController.java index 342300ea58..ba8fd626ce 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/GridLatestController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/GridLatestController.java @@ -27,6 +27,7 @@ import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.dto.GridLatestDTO; import com.epmet.dto.form.CustomerUserFormDTO; +import com.epmet.dto.form.LatestGridInfoFormDTO; import com.epmet.dto.result.CustomerUser4PointResultDTO; import com.epmet.dto.result.LatestGridInfoResultDTO; import com.epmet.excel.GridLatestExcel; @@ -130,4 +131,16 @@ public class GridLatestController { return new Result>().ok(gridLatestService.getCustomerUsers(param)); } + /** + * @return + * @param formDTO + * @Author sun + * @Description 单客户-根据客户Id和userId查询用户最后一次访问的网格 + * @Date 2020/8/3 + **/ + @PostMapping("latestgridinfo") + public Result latestGridInfo(@RequestBody LatestGridInfoFormDTO formDTO){ + return new Result().ok(gridLatestService.latestGridInfo(formDTO)); + } + } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/GridLatestDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/GridLatestDao.java index 2e5b9e7b8f..84450fc6f1 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/GridLatestDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/GridLatestDao.java @@ -19,6 +19,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dto.GridLatestDTO; +import com.epmet.dto.form.LatestGridInfoFormDTO; import com.epmet.dto.result.LatestGridInfoResultDTO; import com.epmet.entity.GridLatestEntity; import org.apache.ibatis.annotations.Mapper; @@ -64,4 +65,13 @@ public interface GridLatestDao extends BaseDao { * @date 2020.07.25 15:26 **/ List selectAllUserByCustomerId(@Param("customerId")String customerId); + + /** + * @return + * @param formDTO + * @Author sun + * @Description 单客户-根据客户Id和userId查询用户最后一次访问的网格 + * @Date 2020/8/3 + **/ + LatestGridInfoResultDTO selectLatestGridInfo(LatestGridInfoFormDTO formDTO); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserRoleDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserRoleDao.java index 58b864bce3..e91e0c8d46 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserRoleDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserRoleDao.java @@ -58,9 +58,9 @@ public interface UserRoleDao extends BaseDao { * 根据用户ID,查询用户所属角色: 多种身份 * * @param userId - * @return com.epmet.commons.tools.utils.Result> + * @return java.util.List * @Author zhangyong * @Date 14:24 2020-07-23 **/ - Result> getUserRoleInfoByUserId(@Param("userId") String userId); + List getUserRoleInfoByUserId(@Param("userId") String userId); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/GridLatestService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/GridLatestService.java index 4298d1ef68..1395099c22 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/GridLatestService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/GridLatestService.java @@ -23,6 +23,7 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.dto.CustomerGridDTO; import com.epmet.dto.GridLatestDTO; import com.epmet.dto.form.CustomerUserFormDTO; +import com.epmet.dto.form.LatestGridInfoFormDTO; import com.epmet.dto.form.VisitedFormDTO; import com.epmet.dto.result.CustomerUser4PointResultDTO; import com.epmet.dto.result.LatestGridInfoResultDTO; @@ -131,4 +132,12 @@ public interface GridLatestService extends BaseService { **/ List getCustomerUsers(CustomerUserFormDTO customerUserFormDTO); + /** + * @return + * @param formDTO + * @Author sun + * @Description 单客户-根据客户Id和userId查询用户最后一次访问的网格 + * @Date 2020/8/3 + **/ + LatestGridInfoResultDTO latestGridInfo(LatestGridInfoFormDTO formDTO); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/GridLatestServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/GridLatestServiceImpl.java index 71c4005717..fbeac02c2b 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/GridLatestServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/GridLatestServiceImpl.java @@ -30,6 +30,7 @@ import com.epmet.dao.UserWechatDao; import com.epmet.dto.CustomerGridDTO; import com.epmet.dto.GridLatestDTO; import com.epmet.dto.form.CustomerUserFormDTO; +import com.epmet.dto.form.LatestGridInfoFormDTO; import com.epmet.dto.form.VisitedFormDTO; import com.epmet.dto.result.CustomerUser4PointResultDTO; import com.epmet.dto.result.LatestGridInfoResultDTO; @@ -204,4 +205,17 @@ public class GridLatestServiceImpl extends BaseServiceImpl> getUserRoleInfoByUserId(String userId) { - return baseDao.getUserRoleInfoByUserId(userId); + List list = baseDao.getUserRoleInfoByUserId(userId); + return new Result>().ok(list); } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserServiceImpl.java index 70f342e4c4..88ad2d8ce0 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserServiceImpl.java @@ -192,7 +192,7 @@ public class UserServiceImpl extends BaseServiceImpl implem Result pointResult = epmetPointOpenFeignClient.myPoint(dto); if(pointResult.success() && null != pointResult.getData()){ //累计积分 - result.setPoint(pointResult.getData().getAccumulatedPoint()); + result.setPoint(pointResult.getData().getUsablePoint()); } return result; } diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/GridLatestDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/GridLatestDao.xml index d98797d043..9a628f87f9 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/GridLatestDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/GridLatestDao.xml @@ -93,4 +93,19 @@ del_flag = '0' AND customer_id = #{customerId} + +