diff --git a/epmet-auth/deploy/docker-compose-dev.yml b/epmet-auth/deploy/docker-compose-dev.yml index 03a7a57ee3..edf73a05cc 100644 --- a/epmet-auth/deploy/docker-compose-dev.yml +++ b/epmet-auth/deploy/docker-compose-dev.yml @@ -2,7 +2,7 @@ version: "3.7" services: epmet-auth-server: container_name: epmet-auth-server-dev - image: 192.168.1.130:10080/epmet-cloud-dev/epmet-auth:0.3.44 + image: 192.168.1.130:10080/epmet-cloud-dev/epmet-auth:0.3.48 ports: - "8081:8081" network_mode: host # 使用现有网络 diff --git a/epmet-auth/pom.xml b/epmet-auth/pom.xml index 7c5f5d6a62..fb25b63090 100644 --- a/epmet-auth/pom.xml +++ b/epmet-auth/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.3.44 + 0.3.48 com.epmet epmet-cloud @@ -182,6 +182,8 @@ wx3d1372029eb816a3 651f02d71ed3f123dfb584b8bf0f4d8b + diff --git a/epmet-auth/src/main/java/com/epmet/dto/form/GovWxmpEnteOrgFormDTO.java b/epmet-auth/src/main/java/com/epmet/dto/form/GovWxmpEnteOrgFormDTO.java index e68df77236..8951235a94 100644 --- a/epmet-auth/src/main/java/com/epmet/dto/form/GovWxmpEnteOrgFormDTO.java +++ b/epmet-auth/src/main/java/com/epmet/dto/form/GovWxmpEnteOrgFormDTO.java @@ -38,5 +38,11 @@ public class GovWxmpEnteOrgFormDTO implements Serializable { */ @NotBlank(message = "组织id不能为空",groups = {AddUserInternalGroup.class}) private String rootAgencyId; + + /** + * 客户appId(exJson文件中获取) + */ + @NotBlank(message = "appId不能为空",groups = {AddUserInternalGroup.class}) + private String appId; } diff --git a/epmet-auth/src/main/java/com/epmet/service/impl/GovLoginServiceImpl.java b/epmet-auth/src/main/java/com/epmet/service/impl/GovLoginServiceImpl.java index 092a327312..406ae0fe6f 100644 --- a/epmet-auth/src/main/java/com/epmet/service/impl/GovLoginServiceImpl.java +++ b/epmet-auth/src/main/java/com/epmet/service/impl/GovLoginServiceImpl.java @@ -19,12 +19,10 @@ import com.epmet.constant.SmsTemplateConstant; import com.epmet.dto.CustomerAgencyDTO; import com.epmet.dto.CustomerStaffDTO; import com.epmet.dto.GovStaffRoleDTO; +import com.epmet.dto.UserWechatDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; -import com.epmet.feign.EpmetMessageOpenFeignClient; -import com.epmet.feign.EpmetUserFeignClient; -import com.epmet.feign.EpmetUserOpenFeignClient; -import com.epmet.feign.GovOrgFeignClient; +import com.epmet.feign.*; import com.epmet.jwt.JwtTokenProperties; import com.epmet.jwt.JwtTokenUtils; import com.epmet.redis.CaptchaRedis; @@ -67,6 +65,8 @@ public class GovLoginServiceImpl implements GovLoginService { private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient; @Autowired private EpmetUserOpenFeignClient userOpenFeignClient; + @Autowired + private EpmetThirdFeignClient epmetThirdFeignClient; /** * @param formDTO @@ -272,8 +272,24 @@ public class GovLoginServiceImpl implements GovLoginService { throw new RenException(customerStaffDTOResult.getCode()); } CustomerStaffDTO customerStaff = customerStaffDTOResult.getData(); - //2、解析微信用户 - WxMaJscode2SessionResult wxMaJscode2SessionResult = loginService.getWxMaUser(LoginConstant.APP_GOV, formDTO.getWxCode()); + /*//2、解析微信用户 + WxMaJscode2SessionResult wxMaJscode2SessionResult = loginService.getWxMaUser(LoginConstant.APP_GOV, formDTO.getWxCode());*/ + //2020.7.24 获取微信信息接口调整,改调用微信api的方式 sun + //2.调用epmet_third服务,校验appId是否有效以及是否授权,校验通过的调用微信API获取用户基本信息 + WxLoginFormDTO resiLoginFormDTO = new WxLoginFormDTO(); + resiLoginFormDTO.setAppId(formDTO.getAppId()); + resiLoginFormDTO.setWxCode(formDTO.getWxCode()); + Result result = epmetThirdFeignClient.resiAndWorkLogin(resiLoginFormDTO); + if (!result.success()) { + logger.error("工作端小程序登陆,调用epmet_third服务获取数据失败"); + throw new RenException(result.getCode()); + } + UserWechatDTO userWechatDTO = result.getData(); + WxMaJscode2SessionResult wxMaJscode2SessionResult = new WxMaJscode2SessionResult(); + wxMaJscode2SessionResult.setOpenid(userWechatDTO.getWxOpenId()); + wxMaJscode2SessionResult.setSessionKey(userWechatDTO.getSessionKey()); + wxMaJscode2SessionResult.setUnionid(""); + //3、记录staff_wechat,并记录用户激活状态,激活时间 this.savestaffwechat(customerStaff.getUserId(), wxMaJscode2SessionResult.getOpenid()); //4、记录登录日志 @@ -437,7 +453,7 @@ public class GovLoginServiceImpl implements GovLoginService { govTokenDto.setUserId(staffId); govTokenDto.setOpenId(wxMaJscode2SessionResult.getOpenid()); govTokenDto.setSessionKey(wxMaJscode2SessionResult.getSessionKey()); - govTokenDto.setUnionId(wxMaJscode2SessionResult.getUnionid()); + govTokenDto.setUnionId(null == wxMaJscode2SessionResult.getUnionid() ? "" : wxMaJscode2SessionResult.getUnionid()); govTokenDto.setToken(token); govTokenDto.setUpdateTime(System.currentTimeMillis()); govTokenDto.setExpireTime(jwtTokenUtils.getExpiration(token).getTime()); diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/FileUtils.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/FileUtils.java new file mode 100644 index 0000000000..a9623b7cde --- /dev/null +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/FileUtils.java @@ -0,0 +1,37 @@ +package com.epmet.commons.tools.utils; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; + +public class FileUtils { + + /** + * 创建临时文件. + * + * @param inputStream 输入文件流 + * @param name 文件名 + * @param ext 扩展名 + * @param tmpDirFile 临时文件夹目录 + */ + public static File createTmpFile(InputStream inputStream, String name, String ext, File tmpDirFile) throws IOException { + File resultFile = File.createTempFile(name, '.' + ext, tmpDirFile); + + resultFile.deleteOnExit(); + org.apache.commons.io.FileUtils.copyToFile(inputStream, resultFile); + return resultFile; + } + + /** + * 创建临时文件. + * + * @param inputStream 输入文件流 + * @param name 文件名 + * @param ext 扩展名 + */ + public static File createTmpFile(InputStream inputStream, String name, String ext) throws IOException { + return createTmpFile(inputStream, name, ext, Files.createTempDirectory("weixin-java-tools-temp").toFile()); + } + +} 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 6d91832472..3ac99f4741 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 @@ -8,9 +8,8 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.http.HttpEntity; -import org.apache.http.HttpStatus; -import org.apache.http.NameValuePair; +import org.apache.http.*; +import org.apache.http.client.HttpResponseException; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; @@ -52,6 +51,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.UUID; /** * desc: http 工具类 @@ -314,7 +314,7 @@ public class HttpClientManager { * * @author: jianjun liu */ - public Result sendGetFile(String url, Map params) { + public Result sendGetFile(String url, Map params) { try { URIBuilder builder = new URIBuilder(url); @@ -329,11 +329,73 @@ public class HttpClientManager { return executeToByte(httpGet); } catch (Exception e) { log.error("sendGet exception", e); - return new Result().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg()); + return new Result().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg()); } } - private Result executeToByte(HttpRequestBase httpMethod) { + private Result executeToByte(HttpRequestBase httpMethod) { + CloseableHttpResponse response = null; + try { + response = httpclient.execute(httpMethod); + log.debug("http send response:{}", JSON.toJSONString(response)); + if (response != null && response.getStatusLine() != null) { + if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { + InputStream inputStream = InputStreamResponseHandler.INSTANCE.handleResponse(response); + Header[] contentTypeHeader = response.getHeaders("Content-Type"); + if (contentTypeHeader != null && contentTypeHeader.length > 0) { + // 出错 + if (ContentType.TEXT_PLAIN.getMimeType() + .equals(ContentType.parse(contentTypeHeader[0].getValue()).getMimeType())) { + String responseContent = Utf8ResponseHandler.INSTANCE.handleResponse(response); + } + } + File file = FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), "jpg"); + return new Result().ok(file); + } else { + log.warn("execute http method fail,httpStatus:{0}", response.getStatusLine().getStatusCode()); + } + } + } catch (Exception e) { + log.error("execute exception", e); + return new Result().error(EpmetErrorCode.SERVER_ERROR.getCode(), e.getMessage()); + } finally { + httpMethod.releaseConnection(); + try { + if (response != null) { + response.close(); + } + } catch (IOException e) { + } + } + return new Result().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg()); + } + + /** + * 获取下载文件的字节数组 + * @param url + * @param params + * @return + */ + public Result getDownloadFilebytes(String url, Map params) { + + try { + URIBuilder builder = new URIBuilder(url); + if (!CollectionUtils.isEmpty(params)) { + Set set = params.keySet(); + for (String key : set) { + builder.setParameter(key, params.get(key) == null ? "" : String.valueOf(params.get(key))); + } + } + HttpGet httpGet = new HttpGet(builder.build()); + httpGet.setConfig(requestConfig); + return executeTobyte(httpGet); + } 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 { response = httpclient.execute(httpMethod); @@ -347,14 +409,14 @@ public class HttpClientManager { 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()); } else { log.warn("execute http method fail,httpStatus:{0}", response.getStatusLine().getStatusCode()); } } } catch (Exception e) { log.error("execute exception", e); - return new Result().error(EpmetErrorCode.SERVER_ERROR.getCode(), e.getMessage()); + return new Result().error(EpmetErrorCode.SERVER_ERROR.getCode(), e.getMessage()); } finally { httpMethod.releaseConnection(); try { @@ -364,7 +426,7 @@ public class HttpClientManager { } catch (IOException e) { } } - return new Result().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg()); + return new Result().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg()); } private static SSLContext createIgnoreVerifySSL() throws NoSuchAlgorithmException, KeyManagementException { diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/InputStreamResponseHandler.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/InputStreamResponseHandler.java new file mode 100644 index 0000000000..75c16053fb --- /dev/null +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/InputStreamResponseHandler.java @@ -0,0 +1,33 @@ +package com.epmet.commons.tools.utils; + +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.StatusLine; +import org.apache.http.client.HttpResponseException; +import org.apache.http.client.ResponseHandler; +import org.apache.http.util.EntityUtils; + +import java.io.IOException; +import java.io.InputStream; + +/** + * 输入流响应处理器. + * + * @author Daniel Qian + */ +public class InputStreamResponseHandler implements ResponseHandler { + public static final ResponseHandler INSTANCE = new InputStreamResponseHandler(); + private static final int STATUS_CODE_300 = 300; + + @Override + public InputStream handleResponse(final HttpResponse response) throws IOException { + final StatusLine statusLine = response.getStatusLine(); + final HttpEntity entity = response.getEntity(); + if (statusLine.getStatusCode() >= STATUS_CODE_300) { + EntityUtils.consume(entity); + throw new HttpResponseException(statusLine.getStatusCode(), statusLine.getReasonPhrase()); + } + return entity == null ? null : entity.getContent(); + } + +} diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/Utf8ResponseHandler.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/Utf8ResponseHandler.java new file mode 100644 index 0000000000..107dc3cbdf --- /dev/null +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/Utf8ResponseHandler.java @@ -0,0 +1,33 @@ +package com.epmet.commons.tools.utils; + +import org.apache.http.Consts; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.StatusLine; +import org.apache.http.client.HttpResponseException; +import org.apache.http.client.ResponseHandler; +import org.apache.http.util.EntityUtils; + +import java.io.IOException; + +/** + * copy from {@link org.apache.http.impl.client.BasicResponseHandler} + * + * @author Daniel Qian + */ +public class Utf8ResponseHandler implements ResponseHandler { + + public static final ResponseHandler INSTANCE = new Utf8ResponseHandler(); + + @Override + public String handleResponse(final HttpResponse response) throws IOException { + final StatusLine statusLine = response.getStatusLine(); + final HttpEntity entity = response.getEntity(); + if (statusLine.getStatusCode() >= 300) { + EntityUtils.consume(entity); + throw new HttpResponseException(statusLine.getStatusCode(), statusLine.toString()); + } + return entity == null ? null : EntityUtils.toString(entity, Consts.UTF_8); + } + +} diff --git a/epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/dto/QrCodeDTO.java b/epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/dto/QrCodeDTO.java new file mode 100644 index 0000000000..a154d381a4 --- /dev/null +++ b/epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/dto/QrCodeDTO.java @@ -0,0 +1,18 @@ +package com.epmet.dto; + +import lombok.Data; +import org.springframework.web.multipart.MultipartFile; + +import java.io.Serializable; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/7/24 10:10 + */ +@Data +public class QrCodeDTO implements Serializable { + private static final long serialVersionUID = -1787470699926486609L; + private byte[] qrCode; + private MultipartFile media; +} diff --git a/epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/feign/OssFeignClient.java b/epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/feign/OssFeignClient.java index a22f95bf71..0d200a7177 100644 --- a/epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/feign/OssFeignClient.java +++ b/epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/feign/OssFeignClient.java @@ -9,16 +9,13 @@ package com.epmet.feign; import com.epmet.commons.tools.constant.ServiceConstant; -import feign.codec.Encoder; -import feign.form.spring.SpringFormEncoder; import com.epmet.commons.tools.utils.Result; -import com.epmet.dto.UploadDTO; +import com.epmet.dto.QrCodeDTO; +import com.epmet.dto.result.UploadImgResultDTO; +import com.epmet.feign.fallback.OssFeignClientFallback; import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.context.annotation.Bean; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestPart; -import org.springframework.web.multipart.MultipartFile; /** * OSS @@ -26,22 +23,18 @@ import org.springframework.web.multipart.MultipartFile; * @author Mark sunlightcs@gmail.c om * @since 1.1.0 */ -@FeignClient(name = ServiceConstant.EPMET_OSS_SERVER, configuration = OssFeignClient.MultipartSupportConfig.class) +@FeignClient(name = ServiceConstant.EPMET_OSS_SERVER, fallback = OssFeignClientFallback.class) public interface OssFeignClient { /** * 文件上传 - * @param file 文件 + * @param dto 文件 * @return 返回路径 */ - @PostMapping(value = "oss/file/upload", produces = {MediaType.APPLICATION_JSON_UTF8_VALUE}, - consumes = MediaType.MULTIPART_FORM_DATA_VALUE) - Result upload(@RequestPart("file") MultipartFile file); + @PostMapping(value = "oss/file/uploadwximg", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + Result uploadWxImg(QrCodeDTO dto); - class MultipartSupportConfig { - @Bean - public Encoder feignFormEncoder() { - return new SpringFormEncoder(); - } - } + + @PostMapping(value ="oss/file/uploadqrcode", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + Result uploadQrCode(QrCodeDTO dto ); } diff --git a/epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/feign/fallback/OssFeignClientFallback.java b/epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/feign/fallback/OssFeignClientFallback.java index f1bb26a963..eb8f1b4b8b 100644 --- a/epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/feign/fallback/OssFeignClientFallback.java +++ b/epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/feign/fallback/OssFeignClientFallback.java @@ -8,8 +8,12 @@ package com.epmet.feign.fallback; +import com.epmet.commons.tools.constant.ServiceConstant; +import com.epmet.commons.tools.utils.ModuleUtils; import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.QrCodeDTO; import com.epmet.dto.UploadDTO; +import com.epmet.dto.result.UploadImgResultDTO; import com.epmet.feign.OssFeignClient; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; @@ -24,7 +28,12 @@ import org.springframework.web.multipart.MultipartFile; public class OssFeignClientFallback implements OssFeignClient { @Override - public Result upload(MultipartFile file) { - return new Result().error(); + public Result uploadWxImg(QrCodeDTO dto) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_OSS_SERVER, "uploadWxImg", dto); + } + + @Override + public Result uploadQrCode(QrCodeDTO dto) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_OSS_SERVER, "uploadQrCode", dto); } } diff --git a/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/controller/OssController.java b/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/controller/OssController.java index 4367e4e62e..e9f05c53cd 100644 --- a/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/controller/OssController.java +++ b/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/controller/OssController.java @@ -18,6 +18,7 @@ import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.group.AliyunGroup; import com.epmet.commons.tools.validator.group.QcloudGroup; import com.epmet.commons.tools.validator.group.QiniuGroup; +import com.epmet.dto.QrCodeDTO; import com.epmet.dto.UploadDTO; import com.epmet.dto.result.UploadImgResultDTO; import com.epmet.entity.OssEntity; @@ -98,7 +99,7 @@ public class OssController { @PostMapping("upload") @ApiOperation(value = "上传文件") - public Result upload(@RequestParam("file") MultipartFile file) throws Exception { + public Result upload(@RequestPart("file") MultipartFile file) throws Exception { if (file.isEmpty()) { return new Result().error(ModuleErrorCode.UPLOAD_FILE_EMPTY); } @@ -141,6 +142,18 @@ public class OssController { return ossService.uploadImg(file); } + @PostMapping("uploadwximg") + public Result uploadWxImg(QrCodeDTO dto) { + return ossService.uploadImg(dto.getMedia()); + } + + @PostMapping("uploadqrcode") + public Result uploadQrCode(QrCodeDTO dto) { + String url = OssFactory.build().uploadSuffix(dto.getQrCode(), "jpg"); + UploadImgResultDTO result = new UploadImgResultDTO(); + result.setUrl(url); + return new Result().ok(result); + } /** * 上传客户logo(考虑到以后可能会针对不同的业务有不同的限制条件,这里不再使用通用的接口 * 针对每一个业务新建上传接口) diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/CodeCustomerDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/CodeCustomerDTO.java index 2a4c2227fc..458176f17d 100644 --- a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/CodeCustomerDTO.java +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/CodeCustomerDTO.java @@ -83,6 +83,11 @@ public class CodeCustomerDTO implements Serializable { */ private String status; + /** + * 二维码 + */ + private String qrCode; + /** * 乐观锁 */ diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/CodeCommonFormDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/CodeCommonFormDTO.java index e854b15992..2806aa1145 100644 --- a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/CodeCommonFormDTO.java +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/CodeCommonFormDTO.java @@ -20,6 +20,7 @@ public class CodeCommonFormDTO implements Serializable { * 代码ID */ private String codeId; - private Integer page; - private Integer limit; + private String path; + private Integer page = 1; + private Integer limit = 999; } diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/OpenAppIdFormDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/OpenAppIdFormDTO.java new file mode 100644 index 0000000000..a4ac48fe47 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/OpenAppIdFormDTO.java @@ -0,0 +1,25 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @CreateTime 2020/7/24 16:31 + */ +@Data +public class OpenAppIdFormDTO implements Serializable { + + private static final long serialVersionUID = 4181403694668558506L; + + /** + * 客户端类型 + */ + private String clientType; + + /** + * 客户ID + */ + private String customerId; +} diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/RemoveBindFormDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/RemoveBindFormDTO.java new file mode 100644 index 0000000000..c83dbcc97b --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/RemoveBindFormDTO.java @@ -0,0 +1,26 @@ +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; + +/** + * @Author zxc + * @CreateTime 2020/7/23 9:09 + */ +@Data +public class RemoveBindFormDTO implements Serializable { + + private static final long serialVersionUID = 1920195626466407047L; + + public interface RemoveBind extends CustomerClientShowGroup {} + + /** + * 客户端类型 resi:居民端 , work:工作端 + */ + @NotBlank(message = "客户端类型不能为空",groups = {RemoveBindFormDTO.RemoveBind.class}) + private String clientType; + +} diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/SubmitAuditFormDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/SubmitAuditFormDTO.java index 82867159cf..222250510f 100644 --- a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/SubmitAuditFormDTO.java +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/SubmitAuditFormDTO.java @@ -39,7 +39,7 @@ public class SubmitAuditFormDTO implements Serializable { /** * 预览信息(小程序页面截图和操作录屏) */ - private List previewInfo; + private PreviewInfoBean previewInfo; /** * 用户生成内容场景(UGC)信息安全声明 */ 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 de278b5785..cb770c9a05 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.48 + image: 192.168.1.130:10080/epmet-cloud-dev/epmet-third-server:0.0.58 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 2efc3df332..3677cfa944 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.48 + 0.0.58 com.epmet diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/AppLetAuthorizationController.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/AppLetAuthorizationController.java index 45c8a65cb4..0ef2d05e5a 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/AppLetAuthorizationController.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/AppLetAuthorizationController.java @@ -5,6 +5,8 @@ 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.GoToAuthFormDTO; +import com.epmet.dto.form.OpenAppIdFormDTO; +import com.epmet.dto.form.RemoveBindFormDTO; import com.epmet.dto.result.GoToAuthResultDTO; import com.epmet.service.AppLetAuthorizationService; import org.springframework.beans.factory.annotation.Autowired; @@ -36,4 +38,28 @@ public class AppLetAuthorizationController { return new Result().ok(goToAuthResultDTO); } + /** + * @Description 将公众号/小程序从开放平台帐号下解绑 + * @param tokenDto + * @param formDTO + * @author zxc + */ + @PostMapping("removeBind") + public Result removeBind(@LoginUser TokenDto tokenDto , @RequestBody RemoveBindFormDTO formDTO){ + ValidatorUtils.validateEntity(formDTO,RemoveBindFormDTO.RemoveBind.class); + appLetAuthorizationService.removeBind(tokenDto,formDTO); + return new Result(); + } + + /** + * @Description 查看小程序绑定的开放平台账号 + * @param formDTO + * @author zxc + */ + @PostMapping("getopenappidbyauthappid") + public Result getOpenAppId( @RequestBody OpenAppIdFormDTO formDTO){ + String openAppId = appLetAuthorizationService.getOpenAppId(formDTO); + return new Result().ok(openAppId); + } + } diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/CodeController.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/CodeController.java index e2b7901ed6..0c61ff9ac2 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/CodeController.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/CodeController.java @@ -161,9 +161,9 @@ public class CodeController { * @date 2020/7/16 10:16 */ @PostMapping("history") - public Result history(@RequestBody CodeCommonFormDTO formDTO) { + public Result> history(@RequestBody CodeCommonFormDTO formDTO) { PageData result = codeService.history(formDTO); - return new Result().ok(result); + return new Result>().ok(result.getList()); } /** diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/WarrantController.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/WarrantController.java index 1cb35bb666..2760162a5c 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/WarrantController.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/WarrantController.java @@ -26,9 +26,9 @@ public class WarrantController { private WarrantService warrantService; @RequestMapping(value ="/{APPID}/callback") - public void acceptMessageAndEvent(HttpServletRequest request, @PathVariable("APPID") String appid, + public String acceptMessageAndEvent(HttpServletRequest request, @PathVariable("APPID") String appid, HttpServletResponse response)throws IOException, DocumentException, AesException { - warrantService.acceptMessageAndEvent(request, appid, response); + return warrantService.acceptMessageAndEvent(request, appid, response); } } diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/BindingAccountDao.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/BindingAccountDao.java index 4ea9771d2c..2d6b624400 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/BindingAccountDao.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/BindingAccountDao.java @@ -21,6 +21,7 @@ import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dto.form.BindingAccountFormDTO; import com.epmet.entity.BindingAccountEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * 公众号/小程序绑定开放平台帐号表 @@ -37,5 +38,13 @@ public interface BindingAccountDao extends BaseDao { * @author zxc */ void insertBindingAccount(BindingAccountFormDTO formDTO); + + /** + * @Description 更新绑定状态 + * @param customerId + * @param authAppId + * @author zxc + */ + void updateBindStatus(@Param("customerId")String customerId,@Param("authAppId")String authAppId); } \ No newline at end of file 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 ae1fb6ebf7..3b3a4ee9b8 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 @@ -58,7 +58,7 @@ public interface CustomerMpDao extends BaseDao { * @param customerId * @author zxc */ - List selectAuthCount(@Param("customerId")String customerId); + Integer selectAuthCount(@Param("customerId")String customerId); /** * @Description 回填customer_mp的appId @@ -115,4 +115,12 @@ public interface CustomerMpDao extends BaseDao { * @author zxc */ Integer checkBind(String authAppId,String clientType); + + /** + * @Description 根据客户Id和客户端类型查询AppId + * @param customerId + * @param clientType + * @author zxc + */ + String getAppId(@Param("customerId")String customerId,@Param("clientType")String clientType); } \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/CodeCustomerEntity.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/CodeCustomerEntity.java index 5bd2485033..3f84ef9a4a 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/CodeCustomerEntity.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/CodeCustomerEntity.java @@ -83,4 +83,10 @@ public class CodeCustomerEntity extends BaseEpmetEntity { */ private String status; + /** + * 二维码 + */ + private String qrCode; + + } diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/redis/RedisThird.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/redis/RedisThird.java index e367e13227..50de85c556 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/redis/RedisThird.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/redis/RedisThird.java @@ -126,4 +126,15 @@ public class RedisThird { redisUtils.hMSet(key, map,NOT_EXPIRE); } + /** + * @Description 获取授权信息 + * @param customerId + * @param clientType + * @author zxc + */ + public Map getAuthInfo(String customerId,String clientType){ + String key = ThirdRedisKeyConstant.AUTH_INFO_REDIS_KEY + customerId + ThirdRedisKeyConstant.COLON + clientType; + return redisUtils.hGetAll(key); + } + } diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/AppLetAuthorizationService.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/AppLetAuthorizationService.java index 30fa445a54..fd659764b9 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/AppLetAuthorizationService.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/AppLetAuthorizationService.java @@ -2,6 +2,8 @@ package com.epmet.service; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.dto.form.GoToAuthFormDTO; +import com.epmet.dto.form.OpenAppIdFormDTO; +import com.epmet.dto.form.RemoveBindFormDTO; import com.epmet.dto.result.GoToAuthResultDTO; /** @@ -17,4 +19,19 @@ public interface AppLetAuthorizationService { */ GoToAuthResultDTO goToAuth(TokenDto tokenDto, GoToAuthFormDTO formDTO); + /** + * @Description 将公众号/小程序从开放平台帐号下解绑 + * @param tokenDto + * @param formDTO + * @author zxc + */ + void removeBind(TokenDto tokenDto, RemoveBindFormDTO formDTO); + + /** + * @Description 查看小程序绑定的开放平台账号 + * @param formDTO + * @author zxc + */ + String getOpenAppId(OpenAppIdFormDTO formDTO); + } diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/WarrantService.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/WarrantService.java index 4ae4cfd5e1..9393704594 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/WarrantService.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/WarrantService.java @@ -13,6 +13,6 @@ import java.io.IOException; */ public interface WarrantService { - void acceptMessageAndEvent(HttpServletRequest request,String appid,HttpServletResponse response)throws IOException, DocumentException, AesException; + String acceptMessageAndEvent(HttpServletRequest request,String appid,HttpServletResponse response)throws IOException, DocumentException, AesException; } diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/AppLetAuthorizationServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/AppLetAuthorizationServiceImpl.java index a80fe2b76a..ba3c63d941 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/AppLetAuthorizationServiceImpl.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/AppLetAuthorizationServiceImpl.java @@ -1,9 +1,22 @@ package com.epmet.service.impl; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +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.HttpClientManager; +import com.epmet.constant.ModuleConstant; +import com.epmet.dao.BindingAccountDao; +import com.epmet.dao.CustomerMpDao; +import com.epmet.dao.OpenPlatformAccountDao; import com.epmet.dao.PaCustomerAgencyDao; import com.epmet.dto.form.GoToAuthFormDTO; +import com.epmet.dto.form.OpenAppIdFormDTO; +import com.epmet.dto.form.RemoveBindFormDTO; +import com.epmet.dto.result.AuthorizationInfoResultDTO; import com.epmet.dto.result.GoToAuthResultDTO; +import com.epmet.redis.RedisThird; import com.epmet.service.AppLetAuthorizationService; import com.epmet.service.ComponentVerifyTicketService; import com.epmet.wxapi.constant.WxMaCodeConstant; @@ -12,6 +25,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import java.util.Map; + /** * @Author zxc * @CreateTime 2020/7/10 15:52 @@ -24,6 +39,17 @@ public class AppLetAuthorizationServiceImpl implements AppLetAuthorizationServic private PaCustomerAgencyDao paCustomerAgencyDao; @Autowired private ComponentVerifyTicketService componentVerifyTicketService; + @Autowired + private ComponentVerifyTicketServiceImpl componentVerifyTicketServiceImpl; + @Autowired + private OpenPlatformAccountDao openPlatformAccountDao; + @Autowired + private CustomerMpDao customerMpDao; + @Autowired + private RedisThird redisThird; + @Autowired + private BindingAccountDao bindingAccountDao; + @Value("${third.platform.appId}") private String componentAppId; @@ -44,4 +70,55 @@ public class AppLetAuthorizationServiceImpl implements AppLetAuthorizationServic result.setUrl(authUrl); return result; } + + /** + * @Description 将公众号/小程序从开放平台帐号下解绑 + * @param tokenDto + * @param formDTO + * @author zxc + */ + @Override + public void removeBind(TokenDto tokenDto, RemoveBindFormDTO formDTO) { + String customerId = componentVerifyTicketServiceImpl.getLoginUserCustomerId(tokenDto); + String clientType = formDTO.getClientType(); + //查询openAppId + String openAppId = openPlatformAccountDao.selectOpenAppIdByCustomerId(customerId); + //查询appId + String authAppId = customerMpDao.getAppId(customerId, clientType); + Map authInfo = redisThird.getAuthInfo(customerId, clientType); + AuthorizationInfoResultDTO authorizationInfo = componentVerifyTicketServiceImpl.mapToEntity(authInfo, AuthorizationInfoResultDTO.class); + JSONObject jsonObject = new JSONObject(); + jsonObject.put(ModuleConstant.LOW_APP_ID,authAppId); + jsonObject.put(ModuleConstant.OPEN_APP_ID,openAppId); + String data = HttpClientManager.getInstance().sendPostByJSON(WxMaCodeConstant.UN_BIND + authorizationInfo.getAuthorizer_access_token(), JSON.toJSONString(jsonObject)).getData(); + Map map = JSON.parseObject(data, Map.class); + if (!map.get(ModuleConstant.ERR_CODE).equals(NumConstant.ZERO_STR)){ + log.error("解绑失败" + data); + throw new RenException("解绑失败" + data); + } + bindingAccountDao.updateBindStatus(customerId,authAppId); + + } + + /** + * @Description 查看小程序绑定的开放平台账号 + * @param formDTO + * @author zxc + */ + @Override + public String getOpenAppId(OpenAppIdFormDTO formDTO) { + String customerId = formDTO.getCustomerId(); + String clientType = formDTO.getClientType(); + String authAppId = customerMpDao.getAppId(customerId, clientType); + Map authInfo = redisThird.getAuthInfo(customerId, clientType); + AuthorizationInfoResultDTO authorizationInfo = componentVerifyTicketServiceImpl.mapToEntity(authInfo, AuthorizationInfoResultDTO.class); + JSONObject jsonObject = new JSONObject(); + jsonObject.put(ModuleConstant.LOW_APP_ID,authAppId); + String data = HttpClientManager.getInstance().sendPostByJSON(WxMaCodeConstant.UN_BIND + authorizationInfo.getAuthorizer_access_token(), JSON.toJSONString(jsonObject)).getData(); + Map map = JSON.parseObject(data, Map.class); + if (map.containsKey(ModuleConstant.OPEN_APP_ID)){ + return map.get(ModuleConstant.OPEN_APP_ID).toString(); + } + return map.get(ModuleConstant.ERR_MSG).toString(); + } } diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java index 8e18dadcbf..aa2076ec75 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java @@ -6,17 +6,13 @@ import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.DateUtils; -import com.epmet.commons.tools.utils.MultipartFileToFileUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.CodeConstant; import com.epmet.dao.AuthorizationInfoDao; import com.epmet.dao.ComponentAccessTokenDao; import com.epmet.dto.*; import com.epmet.dto.form.*; -import com.epmet.dto.result.CodeHistoryResultDTO; -import com.epmet.dto.result.QrCodeResultDTO; -import com.epmet.dto.result.ReasonResultDTO; -import com.epmet.dto.result.TemplateListResultDTO; +import com.epmet.dto.result.*; import com.epmet.feign.OperCrmOpenFeignClient; import com.epmet.feign.OssFeignClient; import com.epmet.service.*; @@ -33,6 +29,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.io.File; +import java.io.FileOutputStream; +import java.io.OutputStream; +import java.nio.file.Files; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -67,6 +66,10 @@ public class CodeServiceImpl implements CodeService { private CodeExtService codeExtService; @Autowired private OssFeignClient ossFeignClient; + @Autowired + private PaCustomerService paCustomerService; + @Autowired + private WxMaCodeService wxsMaCodeService; @Override public List templateList() { @@ -141,16 +144,13 @@ public class CodeServiceImpl implements CodeService { //获取客户信息 CustomerDTO customerDTO = new CustomerDTO(); customerDTO.setId(formDTO.getCustomerId()); - Result customerInfo = operCrmOpenFeignClient.getCustomerInfo(customerDTO); - if (!customerInfo.success()) { - throw new RenException(customerInfo.getCode(), customerInfo.getMsg()); - } + PaCustomerDTO paCustomerDTO = paCustomerService.get(formDTO.getCustomerId()); //将之前上传信息删除 codeCustomerService.deleteCode(formDTO.getCustomerId(), formDTO.getClientType()); //将上传信息存入表中 CodeCustomerDTO codeCustomerDTO = ConvertUtils.sourceToTarget(formDTO, CodeCustomerDTO.class); - codeCustomerDTO.setCustomerName(customerInfo.getData().getCustomerName()); + codeCustomerDTO.setCustomerName(paCustomerDTO.getCustomerName()); codeCustomerDTO.setExtJson(formDTO.getExtJson()); codeCustomerDTO.setAppId(authInfo.getAuthorizerAppid()); codeCustomerDTO.setStatus(CodeConstant.UNAUDITED); @@ -211,6 +211,7 @@ public class CodeServiceImpl implements CodeService { if (null == authInfo) { throw new RenException("未授权"); } + //调用微信API上提交审核 WxMaCodeSubmitAuditRequest request = new WxMaCodeSubmitAuditRequest(); request.setVersionDesc(formDTO.getVersionDesc()); @@ -225,13 +226,20 @@ public class CodeServiceImpl implements CodeService { wxResult.getErrorMsg()); throw new RenException(wxResult.getErrorCode(), wxResult.getErrorMsg()); } - //将数据存入代码审核表 - CodeAuditResultDTO codeAuditResultDTO = new CodeAuditResultDTO(); - codeAuditResultDTO.setCustomerId(codeCustomerDTO.getCustomerId()); - codeAuditResultDTO.setCodeId(codeCustomerDTO.getId()); - codeAuditResultDTO.setAuditId(wxResult.getData()); - codeAuditResultDTO.setResult(CodeConstant.AUDITING); - codeAuditResultService.save(codeAuditResultDTO); + //获取审核结果信息 + CodeAuditResultDTO codeAuditResultDTO = codeAuditResultService.getAuditResultByCodeId(formDTO.getCodeId()); + if (null == codeAuditResultDTO) { + //将数据存入代码审核表 + codeAuditResultDTO = new CodeAuditResultDTO(); + codeAuditResultDTO.setCustomerId(codeCustomerDTO.getCustomerId()); + codeAuditResultDTO.setCodeId(codeCustomerDTO.getId()); + codeAuditResultDTO.setAuditId(wxResult.getData()); + codeAuditResultDTO.setResult(CodeConstant.AUDITING); + codeAuditResultService.save(codeAuditResultDTO); + } else { + codeAuditResultDTO.setResult(CodeConstant.AUDITING); + codeAuditResultService.update(codeAuditResultDTO); + } //更新代码表状态 codeCustomerDTO.setStatus(CodeConstant.AUDITING); codeCustomerService.update(codeCustomerDTO); @@ -354,6 +362,10 @@ public class CodeServiceImpl implements CodeService { QrCodeResultDTO result = new QrCodeResultDTO(); //获取上传代码信息 CodeCustomerDTO codeCustomerDTO = codeCustomerService.get(formDTO.getCodeId()); + if (null != codeCustomerDTO.getQrCode()) { + result.setQrcode(codeCustomerDTO.getQrCode()); + return result; + } //是否授权 if (!customerMpService.getAuthFlag(codeCustomerDTO.getCustomerId(), codeCustomerDTO.getClientType())) { throw new RenException("未授权"); @@ -361,11 +373,20 @@ public class CodeServiceImpl implements CodeService { //获取小程序调用令牌 AuthorizationInfoDTO authInfo = authorizationInfoDao.getAuthInfoByCustomer(codeCustomerDTO.getCustomerId(), codeCustomerDTO.getClientType()); //调用微信API获取获取体验版二维码 - WxResult wxResult = wxMaCodeService.getQrCode(authInfo.getAuthorizerAccessToken(), null); + WxResult wxResult = wxMaCodeService.getQrCode(authInfo.getAuthorizerAccessToken(), formDTO.getPath()); + QrCodeDTO qrCodeDTO = new QrCodeDTO(); + try { + qrCodeDTO.setQrCode(Files.readAllBytes(wxResult.getData().toPath())); + Result uploadResult = ossFeignClient.uploadQrCode(qrCodeDTO); + codeCustomerDTO.setQrCode(uploadResult.getData().getUrl()); + codeCustomerService.update(codeCustomerDTO); + result.setQrcode(uploadResult.getData().getUrl()); + } catch (Exception e) { + throw new RenException(e.getMessage()); + } if (!wxResult.success()) { throw new RenException(wxResult.getErrorCode(), wxResult.getErrorMsg()); } - result.setQrcode(wxResult.getData()); return result; } @@ -382,8 +403,10 @@ public class CodeServiceImpl implements CodeService { @Override public String mediaUpload(MediaUploadFormDTO formDTO) { try { -// Result uploadDTOResult = ossFeignClient.upload(formDTO.getMedia()); - File file = MultipartFileToFileUtils.multipartFileToFile(formDTO.getMedia()); + QrCodeDTO dto = new QrCodeDTO(); + dto.setMedia(formDTO.getMedia()); + Result uploadDTOResult = ossFeignClient.uploadWxImg(dto); + File file = new File(uploadDTOResult.getData().getUrl()); //获取上传代码信息 CodeCustomerDTO codeCustomerDTO = codeCustomerService.get(formDTO.getCodeId()); //获取小程序调用令牌 @@ -433,5 +456,33 @@ public class CodeServiceImpl implements CodeService { } } + private byte[] toPrimitives(Byte[] oBytes) { + byte[] bytes = new byte[oBytes.length]; + + for (int i = 0; i < oBytes.length; i++) { + bytes[i] = oBytes[i]; + } + return bytes; + } + private void byteToFile(byte[] bytes) + { + try + { + // 根据绝对路径初始化文件 + File localFile = new File("."); + if (!localFile.exists()) + { + localFile.createNewFile(); + } + // 输出流 + OutputStream os = new FileOutputStream(localFile); + os.write(bytes); + os.close(); + } + catch (Exception e) + { + e.printStackTrace(); + } + } } 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 69302821e7..4bcf98a9e3 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 @@ -525,12 +525,12 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe boolean bindStatus = bindInfo.containsKey(ModuleConstant.OPEN_APP_ID); if (bindStatus != true) { log.info(CREATE_AND_BIND_SUCCESS); - List authCount = customerMpDao.selectAuthCount(customerId); + Integer authCount = customerMpDao.selectAuthCount(customerId); String openPlatformId = null; - if (authCount.size() > 0) { + if (authCount > 0) { openPlatformId = openPlatformAccountDao.selectOpenAppIdByCustomerId(customerId); } - if (authCount.size() == NumConstant.ZERO) { + if (authCount == NumConstant.ZERO) { log.info("未查询到该客户授权信息,先创建开放平台账号,再绑定"); //没有任何一个小程序/公众号授权,【先创建,再绑定】 JSONObject jsonObject = new JSONObject(); @@ -560,7 +560,7 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe case ModuleConstant.EIGHTY_NINE_THOUSAND: throw new RenException(ACCOUNT_HAS_BOUND_OPEN); } - } else if (authCount.size() > NumConstant.ZERO && !authCount.contains(authAppId)) { + } else if (authCount > NumConstant.ZERO) { log.info("该客户已创建过开放平台账号,直接绑定"); JSONObject jsonObject = new JSONObject(); jsonObject.put(ModuleConstant.LOW_APP_ID, authAppId); 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 b49c04788e..d5a3d500af 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 @@ -65,14 +65,14 @@ public class WarrantServiceImpl implements WarrantService { */ @Transactional(rollbackFor = Exception.class) @Override - public void acceptMessageAndEvent(HttpServletRequest request, String appId, HttpServletResponse response)throws IOException, DocumentException, AesException { + public String acceptMessageAndEvent(HttpServletRequest request, String appId, HttpServletResponse response)throws IOException, DocumentException, AesException { log.info("appId:"+ appId); request.setCharacterEncoding(ModuleConstant.UTF8); String msgSignature = request.getParameter(ModuleConstant.MSG_SIGNATURE); String timeStamp = request.getParameter(ModuleConstant.TIMESTAMP); String nonce = request.getParameter(ModuleConstant.NONCE); if (!StringUtils.isNotBlank(msgSignature)) { - return;// 微信推送给第三方开放平台的消息一定是加过密的,无消息加密无法解密消息 + return ModuleConstant.SUCCESS;// 微信推送给第三方开放平台的消息一定是加过密的,无消息加密无法解密消息 } InputStream inputStream; String postData = null; @@ -119,5 +119,6 @@ public class WarrantServiceImpl implements WarrantService { } String codeCustomerId = codeCustomerDao.selectCodeCustomerId(codeAuditRecord); codeAuditResultDao.updateAuditResult(customerId,codeCustomerId,codeResult); + return ModuleConstant.SUCCESS; } } 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 8ec83ac350..9302f876ff 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 @@ -56,6 +56,16 @@ public interface WxMaCodeConstant { */ String API_BIND_OPEN = "https://api.weixin.qq.com/cgi-bin/open/bind?access_token="; + /** + *公众号/小程序从开放平台帐号下解绑 + */ + String UN_BIND = "https://api.weixin.qq.com/cgi-bin/open/unbind?access_token="; + + /** + * 获取公众号/小程序所绑定的开放平台帐号 + */ + String OPEN_GET = "https://api.weixin.qq.com/cgi-bin/open/get?access_token="; + /** * 获取授权方的帐号基本信息 */ diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxMaCodeSubmitAuditRequest.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxMaCodeSubmitAuditRequest.java index 1c63b9ed3a..38a074576f 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxMaCodeSubmitAuditRequest.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxMaCodeSubmitAuditRequest.java @@ -42,7 +42,7 @@ public class WxMaCodeSubmitAuditRequest implements Serializable { * 预览信息(小程序页面截图和操作录屏) */ @SerializedName("preview_info") - private List previewInfo; + private SubmitAuditFormDTO.PreviewInfoBean previewInfo; /** * 用户生成内容场景(UGC)信息安全声明 */ diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/WxMaCodeService.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/WxMaCodeService.java index 111dff5f06..eea4649219 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/WxMaCodeService.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/WxMaCodeService.java @@ -48,7 +48,7 @@ public interface WxMaCodeService { * @author zhaoqifeng * @date 2020/7/10 15:25 */ - WxResult getQrCode(String accessToken, String path); + WxResult getQrCode(String accessToken, String path); /** * 获取授权小程序帐号的可选类目. diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxLoginServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxLoginServiceImpl.java index 6edf2fbbd0..ed715cb344 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxLoginServiceImpl.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxLoginServiceImpl.java @@ -57,7 +57,11 @@ public class WxLoginServiceImpl implements WxLoginService { String openid = hashMap.get("openid"); String sessionKey = hashMap.get("session_key"); - //2.换取用户基本信息 + UserWechatDTO dto = new UserWechatDTO(); + dto.setWxOpenId(openid); + dto.setSessionKey(sessionKey); + + /*//2.换取用户基本信息 //小程序access_token Map accessMap = redisUtils.hGetAll(ThirdRedisKeyConstant.AUTH_INFO_REDIS_KEY + ":" + customerId + ":" + clientType); if(null==accessMap.get("authorizer_access_token")){ @@ -86,7 +90,7 @@ public class WxLoginServiceImpl implements WxLoginService { dto.setCountry(resultMap.get("country")); dto.setProvince(resultMap.get("province")); dto.setCity(resultMap.get("city")); - dto.setLanguage(resultMap.get("language")); + dto.setLanguage(resultMap.get("language"));*/ return dto; } 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 e0ae3823e5..5808634523 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 @@ -10,10 +10,8 @@ import com.epmet.wxapi.result.*; import com.epmet.wxapi.service.WxMaCodeService; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import com.google.gson.JsonObject; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.io.File; @@ -21,8 +19,6 @@ import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.Arrays; import java.util.List; /** @@ -74,8 +70,8 @@ public class WxMaCodeServiceImpl implements WxMaCodeService { } @Override - public WxResult getQrCode(String accessToken, String path) { - WxResult result = new WxResult<>(); + public WxResult getQrCode(String accessToken, String path) { + WxResult result = new WxResult<>(); StringBuilder url = new StringBuilder(WxMaCodeConstant.GET_QRCODE_URL).append("?access_token").append(accessToken); if (StringUtils.isNotBlank(path)) { try { @@ -84,7 +80,7 @@ public class WxMaCodeServiceImpl implements WxMaCodeService { e.printStackTrace(); } } - Result qrCodeResult = HttpClientManager.getInstance().sendGetFile(url.toString(), null); + Result qrCodeResult = HttpClientManager.getInstance().sendGetFile(url.toString(), null); if (!qrCodeResult.success()) { result.setErrorCode(qrCodeResult.getCode()); result.setErrorMsg(WxMaErrorMsgEnum.findMsgByCode(qrCodeResult.getCode())); diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/BindingAccountDao.xml b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/BindingAccountDao.xml index d0d3d49815..c745f40578 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/BindingAccountDao.xml +++ b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/BindingAccountDao.xml @@ -21,4 +21,13 @@ NOW() ) + + + + UPDATE binding_account + SET del_flag = 1 + WHERE + customer_id = #{customerId} + AND client_type = #{clientType} + \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/CodeOperationHistoryDao.xml b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/CodeOperationHistoryDao.xml index 66041c4ea0..2e18d09f58 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/CodeOperationHistoryDao.xml +++ b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/CodeOperationHistoryDao.xml @@ -25,7 +25,7 @@ - SELECT app_id AS authAppId FROM - customer_mp + open_platform_account WHERE - del_flag = '0' + del_flag = 0 AND customer_id = #{customerId} - AND authorization_flag = 1 @@ -127,4 +126,16 @@ AND client != #{clientType} + + + \ No newline at end of file diff --git a/epmet-module/gov-mine/gov-mine-client/src/main/java/com/epmet/dto/form/GovFootBarFormDTO.java b/epmet-module/gov-mine/gov-mine-client/src/main/java/com/epmet/dto/form/GovFootBarFormDTO.java new file mode 100644 index 0000000000..79951ec2a3 --- /dev/null +++ b/epmet-module/gov-mine/gov-mine-client/src/main/java/com/epmet/dto/form/GovFootBarFormDTO.java @@ -0,0 +1,11 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class GovFootBarFormDTO { + //@NotBlank(message = "客户ID不能为空") + private String customerId; +} \ No newline at end of file diff --git a/epmet-module/gov-mine/gov-mine-server/deploy/docker-compose-dev.yml b/epmet-module/gov-mine/gov-mine-server/deploy/docker-compose-dev.yml index f1539c2d78..cb7563abee 100644 --- a/epmet-module/gov-mine/gov-mine-server/deploy/docker-compose-dev.yml +++ b/epmet-module/gov-mine/gov-mine-server/deploy/docker-compose-dev.yml @@ -2,7 +2,7 @@ version: "3.7" services: gov-mine-server: container_name: gov-mine-server-dev - image: 192.168.1.130:10080/epmet-cloud-dev/gov-mine-server:0.3.32 + image: 192.168.1.130:10080/epmet-cloud-dev/gov-mine-server:0.3.33 ports: - "8098:8098" network_mode: host # 使用现有网络 diff --git a/epmet-module/gov-mine/gov-mine-server/pom.xml b/epmet-module/gov-mine/gov-mine-server/pom.xml index 53ce3a23bc..7a38a7a7e5 100644 --- a/epmet-module/gov-mine/gov-mine-server/pom.xml +++ b/epmet-module/gov-mine/gov-mine-server/pom.xml @@ -2,7 +2,7 @@ - 0.3.32 + 0.3.33 com.epmet gov-mine diff --git a/epmet-module/gov-mine/gov-mine-server/src/main/java/com/epmet/controller/AppController.java b/epmet-module/gov-mine/gov-mine-server/src/main/java/com/epmet/controller/AppController.java index 93fef03372..d1ab11b618 100644 --- a/epmet-module/gov-mine/gov-mine-server/src/main/java/com/epmet/controller/AppController.java +++ b/epmet-module/gov-mine/gov-mine-server/src/main/java/com/epmet/controller/AppController.java @@ -1,9 +1,11 @@ package com.epmet.controller; +import com.epmet.commons.tools.constant.AppClientConstant; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.CustomerFootBarDTO; import com.epmet.dto.form.CustomerFootBarFormDTO; -import com.epmet.feign.OperCustomizeFeignClient; +import com.epmet.dto.form.GovFootBarFormDTO; +import com.epmet.feign.OperCustomizeOpenFeignClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.PostMapping; @@ -18,19 +20,21 @@ import java.util.List; public class AppController { @Autowired - private OperCustomizeFeignClient operCustomizeFeign; + private OperCustomizeOpenFeignClient operCustomizeFeign; /** * 查询 - * @param formDTO * @return */ @PostMapping("getcustomerfootbars") - public Result> getCustomerFootBars(@RequestBody CustomerFootBarFormDTO formDTO) { - Result> result = operCustomizeFeign.getCustomerfootbars(formDTO); + public Result> getCustomerFootBars(@RequestBody GovFootBarFormDTO input) { + CustomerFootBarFormDTO form = new CustomerFootBarFormDTO(); + form.setCustomerId(input.getCustomerId()); + form.setAppType(AppClientConstant.APP_GOV); + Result> result = operCustomizeFeign.getCustomerfootbars(form); if (CollectionUtils.isEmpty(result.getData())) { - formDTO.setCustomerId("default"); - result = operCustomizeFeign.getCustomerfootbars(formDTO); + form.setCustomerId("default"); + result = operCustomizeFeign.getCustomerfootbars(form); } return result; } diff --git a/epmet-module/gov-mine/gov-mine-server/src/main/java/com/epmet/feign/OperCustomizeFeignClient.java b/epmet-module/gov-mine/gov-mine-server/src/main/java/com/epmet/feign/OperCustomizeFeignClient.java deleted file mode 100644 index a645d0d44b..0000000000 --- a/epmet-module/gov-mine/gov-mine-server/src/main/java/com/epmet/feign/OperCustomizeFeignClient.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.epmet.feign; - -import com.epmet.commons.tools.constant.ServiceConstant; -import com.epmet.commons.tools.utils.Result; -import com.epmet.dto.CustomerFootBarDTO; -import com.epmet.dto.form.CustomerFootBarFormDTO; -import com.epmet.feign.fallback.OperCustomizeFeignClientFallBack; -import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.http.MediaType; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; - -import java.util.List; - -@FeignClient(name = ServiceConstant.OPER_CUSTOMIZE_SERVER, fallback = OperCustomizeFeignClientFallBack.class) -public interface OperCustomizeFeignClient { - - @PostMapping(value = "/oper/customize/customerfootbar/customerfootbars", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE) - Result> getCustomerfootbars(@RequestBody CustomerFootBarFormDTO formDTO); - -} diff --git a/epmet-module/gov-mine/gov-mine-server/src/main/java/com/epmet/feign/fallback/OperCustomizeFeignClientFallBack.java b/epmet-module/gov-mine/gov-mine-server/src/main/java/com/epmet/feign/fallback/OperCustomizeFeignClientFallBack.java deleted file mode 100644 index 6f343f3857..0000000000 --- a/epmet-module/gov-mine/gov-mine-server/src/main/java/com/epmet/feign/fallback/OperCustomizeFeignClientFallBack.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.epmet.feign.fallback; - -import com.epmet.commons.tools.constant.ServiceConstant; -import com.epmet.commons.tools.utils.ModuleUtils; -import com.epmet.commons.tools.utils.Result; -import com.epmet.dto.CustomerFootBarDTO; -import com.epmet.dto.form.CustomerFootBarFormDTO; -import com.epmet.dto.form.CustomerHomeFormDTO; -import com.epmet.dto.result.HomeDesignByCustomerResultDTO; -import com.epmet.feign.OperCustomizeFeignClient; -import org.springframework.stereotype.Component; - -import java.util.List; - -@Component -public class OperCustomizeFeignClientFallBack implements OperCustomizeFeignClient { - - @Override - public Result> getCustomerfootbars(CustomerFootBarFormDTO formDTO) { - return ModuleUtils.feignConError(ServiceConstant.OPER_CUSTOMIZE_SERVER, "getCustomerfootbars",formDTO); - } -} 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 1c4f6845ca..c401ef7909 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.28 + image: 192.168.1.130:10080/epmet-cloud-dev/oper-crm-server:0.3.30 ports: - "8090:8090" network_mode: host # 使用现有网络 diff --git a/epmet-module/oper-crm/oper-crm-server/deploy/docker-compose-test.yml b/epmet-module/oper-crm/oper-crm-server/deploy/docker-compose-test.yml index ddaa785107..ef1e3d8974 100644 --- a/epmet-module/oper-crm/oper-crm-server/deploy/docker-compose-test.yml +++ b/epmet-module/oper-crm/oper-crm-server/deploy/docker-compose-test.yml @@ -2,7 +2,7 @@ version: "3.7" services: oper-crm-server: container_name: oper-crm-server-test - image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-release/oper-crm-server:0.3.25 + image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-release/oper-crm-server:0.3.29 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 d1eaf5367f..6f9b5a7942 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.28 + 0.3.30 com.epmet oper-crm diff --git a/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/controller/CustomerController.java b/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/controller/CustomerController.java index c8c17dcfad..508f0ba09b 100644 --- a/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/controller/CustomerController.java +++ b/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/controller/CustomerController.java @@ -197,7 +197,7 @@ public class CustomerController { /** * - * 添加管理员 + * 添加根管理员(不能被取消角色的管理员) * @param form * @return */ 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 2dc57cd47f..238a90a94a 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 @@ -158,7 +158,7 @@ public class CustomerServiceImpl extends BaseServiceImpl>> managersResult = epmetUserFeignClient.getStaffsInRoleOfOrgs(staffRoleFormDTO); if (managersResult.success()) { Map> rootAgencyManagerMap = managersResult.getData(); @@ -250,7 +250,8 @@ public class CustomerServiceImpl extends BaseServiceImpl getRoleResult = epmetUserFeignClient.getRoleOfCustomer(customerRoleForm); if (!getRoleResult.success()) { log.error("查询客户具有指定RoleKey的角色信息失败:".concat(getRoleResult.toString())); diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/CustomerFootBarFormDTO.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/CustomerFootBarFormDTO.java index 73b4c7b500..1d5218fd4b 100644 --- a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/CustomerFootBarFormDTO.java +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/CustomerFootBarFormDTO.java @@ -10,4 +10,8 @@ public class CustomerFootBarFormDTO { //@NotBlank(message = "客户ID不能为空") private String customerId; + // 哪一个端:gov,resi + @NotBlank(message = "app类型不能为空") + private String appType; + } diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java index 81a0e35046..62c90892f6 100644 --- a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java @@ -1,10 +1,20 @@ package com.epmet.feign; +import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.CustomerFootBarDTO; +import com.epmet.dto.form.CustomerFootBarFormDTO; +import org.springframework.cloud.openfeign.FeignClient; + import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.form.CustomerFunctionListFormDTO; import com.epmet.dto.result.DefaultFunctionListResultDTO; import com.epmet.feign.fallback.OperCustomizeOpenFeignClientFallback; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.List; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.PostMapping; @@ -20,6 +30,10 @@ import java.util.List; */ @FeignClient(name = ServiceConstant.OPER_CUSTOMIZE_SERVER, fallback = OperCustomizeOpenFeignClientFallback.class) public interface OperCustomizeOpenFeignClient { + + @PostMapping(value = "/oper/customize/customerfootbar/customerfootbars", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE) + Result> getCustomerfootbars(@RequestBody CustomerFootBarFormDTO formDTO); + @PostMapping(value = "/oper/customize/customerfunction/getOpenedFunctionList", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE) Result> getOpenedFunctionList(@RequestBody CustomerFunctionListFormDTO formDTO); } diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java index ba959f424b..3958e89268 100644 --- a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java @@ -1,5 +1,10 @@ package com.epmet.feign.fallback; +import com.epmet.commons.tools.constant.ServiceConstant; +import com.epmet.commons.tools.utils.ModuleUtils; +import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.CustomerFootBarDTO; +import com.epmet.dto.form.CustomerFootBarFormDTO; import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.utils.ModuleUtils; import com.epmet.commons.tools.utils.Result; @@ -18,6 +23,10 @@ import java.util.List; */ @Component public class OperCustomizeOpenFeignClientFallback implements OperCustomizeOpenFeignClient { + @Override + public Result> getCustomerfootbars(CustomerFootBarFormDTO formDTO) { + return ModuleUtils.feignConError(ServiceConstant.OPER_CUSTOMIZE_SERVER, "getCustomerfootbars", formDTO); + } /** * 获取客户已开通的功能列表 * diff --git a/epmet-module/oper-customize/oper-customize-server/deploy/docker-compose-dev.yml b/epmet-module/oper-customize/oper-customize-server/deploy/docker-compose-dev.yml index 3ddc8108ca..859970bc4c 100644 --- a/epmet-module/oper-customize/oper-customize-server/deploy/docker-compose-dev.yml +++ b/epmet-module/oper-customize/oper-customize-server/deploy/docker-compose-dev.yml @@ -2,7 +2,7 @@ version: "3.7" services: oper-customize-server: container_name: oper-customize-server-dev - image: 192.168.1.130:10080/epmet-cloud-dev/oper-customize-server:0.3.23 + image: 192.168.1.130:10080/epmet-cloud-dev/oper-customize-server:0.3.24 ports: - "8089:8089" network_mode: host # 使用现有网络 diff --git a/epmet-module/oper-customize/oper-customize-server/pom.xml b/epmet-module/oper-customize/oper-customize-server/pom.xml index 47611b8c4a..73c01696fa 100644 --- a/epmet-module/oper-customize/oper-customize-server/pom.xml +++ b/epmet-module/oper-customize/oper-customize-server/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.3.23 + 0.3.24 com.epmet oper-customize diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/CustomerFootBarController.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/CustomerFootBarController.java index 895cbf6840..1be0943b60 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/CustomerFootBarController.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/CustomerFootBarController.java @@ -35,6 +35,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.NotBlank; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -104,8 +105,9 @@ public class CustomerFootBarController { public Result> getCustomerfootbars(@RequestBody CustomerFootBarFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO); String customerId = formDTO.getCustomerId(); + String appType = formDTO.getAppType(); - List footbars = customerFootBarService.listCustomerFootBars(customerId); + List footbars = customerFootBarService.listCustomerFootBars(customerId, appType); List barDTOS = new LinkedList<>(); footbars.forEach(barEntity -> { CustomerFootBarDTO barDTO = new CustomerFootBarDTO(); diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/CustomerFootBarDao.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/CustomerFootBarDao.java index f22bc917ad..480e148b60 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/CustomerFootBarDao.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/CustomerFootBarDao.java @@ -33,5 +33,6 @@ import java.util.List; @Mapper public interface CustomerFootBarDao extends BaseDao { - List listCustomerFootBars(@Param("customerId") String customerId); + List listCustomerFootBars(@Param("customerId") String customerId, + @Param("appType") String appType); } \ No newline at end of file diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/entity/CustomerFootBarEntity.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/entity/CustomerFootBarEntity.java index 8bfc92afb1..2161fc4bdc 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/entity/CustomerFootBarEntity.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/entity/CustomerFootBarEntity.java @@ -48,6 +48,8 @@ public class CustomerFootBarEntity extends BaseEpmetEntity { */ private String barKey; + private String appType; + /** * 页面标题 */ @@ -63,4 +65,6 @@ public class CustomerFootBarEntity extends BaseEpmetEntity { */ private String selectedIconPath; + private Integer order; + } diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/CustomerFootBarService.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/CustomerFootBarService.java index f3a793793d..f38eab950d 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/CustomerFootBarService.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/CustomerFootBarService.java @@ -93,5 +93,5 @@ public interface CustomerFootBarService extends BaseService listCustomerFootBars(String customerId); + List listCustomerFootBars(String customerId, String appType); } \ No newline at end of file diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/CustomerFootBarServiceImpl.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/CustomerFootBarServiceImpl.java index 15336d92fc..417555be13 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/CustomerFootBarServiceImpl.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/CustomerFootBarServiceImpl.java @@ -102,8 +102,8 @@ public class CustomerFootBarServiceImpl extends BaseServiceImpl listCustomerFootBars(String customerId) { - return baseDao.listCustomerFootBars(customerId); + public List listCustomerFootBars(String customerId, String appType) { + return baseDao.listCustomerFootBars(customerId, appType); } } \ No newline at end of file diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/resources/db/migration/V0.0.2__add_footbar_columns.sql b/epmet-module/oper-customize/oper-customize-server/src/main/resources/db/migration/V0.0.2__add_footbar_columns.sql new file mode 100644 index 0000000000..dc5ac2da3f --- /dev/null +++ b/epmet-module/oper-customize/oper-customize-server/src/main/resources/db/migration/V0.0.2__add_footbar_columns.sql @@ -0,0 +1,11 @@ +alter table customer_foot_bar add column `app_type` varchar(20) not null after `CUSTOMER_ID`; +alter table customer_foot_bar add column `order` int(2) not null after `SELECTED_ICON_PATH`; + +update customer_foot_bar set `app_type`='gov' , `order`=1 where CUSTOMER_ID='default' and BAR_KEY='work'; +update customer_foot_bar set `app_type`='gov' , `order`=2 where CUSTOMER_ID='default' and BAR_KEY='org'; +update customer_foot_bar set `app_type`='gov' , `order`=3 where CUSTOMER_ID='default' and BAR_KEY='data'; +update customer_foot_bar set `app_type`='gov' , `order`=4 where CUSTOMER_ID='default' and BAR_KEY='find'; + +INSERT INTO epmet_oper_customize.customer_foot_bar (ID, CUSTOMER_ID, app_type, BAR_KEY, BAR_NAME, PAGE_TITLE, ICON_PATH, SELECTED_ICON_PATH, `order`, DEL_FLAG, REVISION, CREATED_BY, CREATED_TIME, UPDATED_BY, UPDATED_TIME) VALUES (uuid(), 'default', 'resi', 'garden', '党建园地', '党建园地', null, null, 1, 0, 0, 'APP_USER', now(), 'APP_USER', now()); +INSERT INTO epmet_oper_customize.customer_foot_bar (ID, CUSTOMER_ID, app_type, BAR_KEY, BAR_NAME, PAGE_TITLE, ICON_PATH, SELECTED_ICON_PATH, `order`, DEL_FLAG, REVISION, CREATED_BY, CREATED_TIME, UPDATED_BY, UPDATED_TIME) VALUES (uuid(), 'default', 'resi', 'issue', '党群议事', '党群议事', null, null, 2, 0, 0, 'APP_USER', now(), 'APP_USER', now()); +INSERT INTO epmet_oper_customize.customer_foot_bar (ID, CUSTOMER_ID, app_type, BAR_KEY, BAR_NAME, PAGE_TITLE, ICON_PATH, SELECTED_ICON_PATH, `order`, DEL_FLAG, REVISION, CREATED_BY, CREATED_TIME, UPDATED_BY, UPDATED_TIME) VALUES (uuid(), 'default', 'resi', 'group', '楼院小组', '楼院小组', null, null, 3, 0, 0, 'APP_USER', now(), 'APP_USER', now()); diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/CustomerFootBarDao.xml b/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/CustomerFootBarDao.xml index a11df38ba6..e41b42ddb3 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/CustomerFootBarDao.xml +++ b/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/CustomerFootBarDao.xml @@ -7,9 +7,11 @@ + + @@ -21,13 +23,31 @@ diff --git a/epmet-module/resi-mine/resi-mine-client/src/main/java/com/epmet/resi/mine/dto/from/ResiFootBarFormDTO.java b/epmet-module/resi-mine/resi-mine-client/src/main/java/com/epmet/resi/mine/dto/from/ResiFootBarFormDTO.java new file mode 100644 index 0000000000..b29c4099d7 --- /dev/null +++ b/epmet-module/resi-mine/resi-mine-client/src/main/java/com/epmet/resi/mine/dto/from/ResiFootBarFormDTO.java @@ -0,0 +1,10 @@ +package com.epmet.resi.mine.dto.from; + +import lombok.Data; + +@Data +public class ResiFootBarFormDTO { + + private String customerId; + +} 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 8e4d0f9d56..7863b22fa0 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.29 + image: 192.168.1.130:10080/epmet-cloud-dev/resi-mine-server:0.3.30 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 37e10716a0..73700bf6ec 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.29 + 0.3.30 com.epmet resi-mine @@ -83,6 +83,13 @@ 2.0.0 compile + + + com.epmet + oper-customize-client + 2.0.0 + compile + diff --git a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/app/controller/AppController.java b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/app/controller/AppController.java new file mode 100644 index 0000000000..a446f0dc1b --- /dev/null +++ b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/app/controller/AppController.java @@ -0,0 +1,39 @@ +package com.epmet.modules.app.controller; + +import com.epmet.commons.tools.constant.AppClientConstant; +import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.CustomerFootBarDTO; +import com.epmet.dto.form.CustomerFootBarFormDTO; +import com.epmet.feign.OperCustomizeOpenFeignClient; +import com.epmet.resi.mine.dto.from.ResiFootBarFormDTO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequestMapping("app") +public class AppController { + + @Autowired + private OperCustomizeOpenFeignClient operCustomizeFeign; + + @PostMapping("footbar") + public Result getResiFootBars(@RequestBody ResiFootBarFormDTO input) { + CustomerFootBarFormDTO form = new CustomerFootBarFormDTO(); + form.setCustomerId(input.getCustomerId()); + form.setAppType(AppClientConstant.APP_RESI); + Result> result = operCustomizeFeign.getCustomerfootbars(form); + if (CollectionUtils.isEmpty(result.getData())) { + form.setCustomerId("default"); + result = operCustomizeFeign.getCustomerfootbars(form); + } + return result; + + } + +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/constant/RoleKeyConstants.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/constant/RoleKeyConstants.java index 4d82df0d1f..3a8361be2c 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/constant/RoleKeyConstants.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/constant/RoleKeyConstants.java @@ -9,6 +9,11 @@ public class RoleKeyConstants { */ public static final String ROLE_KEY_MANAGER = "manager"; + /** + * 根管理员(不能通过工作端取消的角色,且不会再工作端显示) + */ + public static final String ROLE_KEY_ROOT_MANAGER = "root_manager"; + /** * 党建负责人 */ 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 a16884cdcd..f6cc6fc0ea 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.77 + image: 192.168.1.130:10080/epmet-cloud-dev/epmet-user-server:0.3.79 ports: - "8087:8087" network_mode: host # 不会创建新的网络 diff --git a/epmet-user/epmet-user-server/deploy/docker-compose-test.yml b/epmet-user/epmet-user-server/deploy/docker-compose-test.yml index 0cc2683457..c0efd1fb64 100644 --- a/epmet-user/epmet-user-server/deploy/docker-compose-test.yml +++ b/epmet-user/epmet-user-server/deploy/docker-compose-test.yml @@ -2,7 +2,7 @@ version: "3.7" services: epmet-user-server: container_name: epmet-user-server-test - image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-release/epmet-user-server:0.3.75 + image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-release/epmet-user-server:0.3.79 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 9ec79e461e..bf248b8b05 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.77 + 0.3.79 com.epmet epmet-user diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/StaffRoleDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/StaffRoleDao.java index 5cf2cd03b7..6de16bc4f8 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/StaffRoleDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/StaffRoleDao.java @@ -98,4 +98,6 @@ public interface StaffRoleDao extends BaseDao { * @return java.util.List */ List selectStaffRoles(@Param("staffId") String staffId); + + List listStaffRoleEntytiesByStaffIdAndOrgId(@Param("agencyId") String agencyId, @Param("staffId") String staffId); } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/StaffRoleService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/StaffRoleService.java index f3913d588b..e6c238a53f 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/StaffRoleService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/StaffRoleService.java @@ -148,4 +148,6 @@ public interface StaffRoleService extends BaseService { * @return java.util.List */ List getStaffRoles(String staffId); + + List getStaffRoleEntytiesByStaffIdAndOrgId(String agencyId, String staffId); } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/CustomerStaffServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/CustomerStaffServiceImpl.java index a0f3aab8e2..6be1620f68 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/CustomerStaffServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/CustomerStaffServiceImpl.java @@ -31,6 +31,7 @@ import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.CpUserDetailRedis; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.CustomerStaffConstant; +import com.epmet.constant.RoleKeyConstants; import com.epmet.constant.UserConstant; import com.epmet.constant.UserRoleConstant; import com.epmet.dao.CustomerStaffDao; @@ -55,6 +56,7 @@ import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.Arrays; @@ -244,14 +246,17 @@ public class CustomerStaffServiceImpl extends BaseServiceImpl roleList = govStaffRoleService.getGovStaffRoleList(govStaffRoleDTO); //获取工作人员角色 List staffRoles = govStaffRoleService.listRolesByStaffId(fromDTO.getStaffId(), fromDTO.getAgencyId()); - List staffRoleList = roleList.stream().map(p -> { - StaffRoleResultDTO staffRoleResultDTO = new StaffRoleResultDTO(); - staffRoleResultDTO.setRoleId(p.getId()); - staffRoleResultDTO.setRoleName(p.getRoleName()); - staffRoleResultDTO.setFullTimeOnly(p.getFullTimeOnly()); - staffRoleResultDTO.setSelected(false); - return staffRoleResultDTO; - }).collect(Collectors.toList()); + List staffRoleList = roleList + .stream() + .filter(p -> !RoleKeyConstants.ROLE_KEY_ROOT_MANAGER.equals(p.getRoleKey())) + .map(p -> { + StaffRoleResultDTO staffRoleResultDTO = new StaffRoleResultDTO(); + staffRoleResultDTO.setRoleId(p.getId()); + staffRoleResultDTO.setRoleName(p.getRoleName()); + staffRoleResultDTO.setFullTimeOnly(p.getFullTimeOnly()); + staffRoleResultDTO.setSelected(false); + return staffRoleResultDTO; + }).collect(Collectors.toList()); staffRoleList.forEach(role -> staffRoles.forEach(staffRole -> { if (role.getRoleId().equals(staffRole.getId())) { @@ -337,11 +342,18 @@ public class CustomerStaffServiceImpl extends BaseServiceImpl staffRoleEntytiesByStaffIdAndOrgId = staffRoleService.getStaffRoleEntytiesByStaffIdAndOrgId(fromDTO.getAgencyId(), fromDTO.getStaffId()); + List roleIds = new ArrayList<>(); + if (!CollectionUtils.isEmpty(staffRoleEntytiesByStaffIdAndOrgId)) { + roleIds = staffRoleEntytiesByStaffIdAndOrgId.stream().map(sr -> sr.getRoleId()).collect(Collectors.toList()); + } + // redis缓存角色修改 UpdateCachedRolesFormDTO updateRolesForm = new UpdateCachedRolesFormDTO(); updateRolesForm.setOrgId(fromDTO.getAgencyId()); updateRolesForm.setStaffId(fromDTO.getStaffId()); - updateRolesForm.setRoleIds(fromDTO.getRoles()); + updateRolesForm.setRoleIds(roleIds); try { Result result = authFeignClient.updateCachedRoles(updateRolesForm); if (!result.success()) { diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StaffRoleServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StaffRoleServiceImpl.java index 38a4924eef..231ab010ea 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StaffRoleServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StaffRoleServiceImpl.java @@ -19,7 +19,6 @@ package com.epmet.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.epmet.commons.mybatis.annotation.DataFilter; import com.epmet.commons.mybatis.entity.DataScope; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.NumConstant; @@ -36,9 +35,7 @@ import com.epmet.dto.form.RolesUsersListFormDTO; import com.epmet.dto.result.CustomerStaffRoleResultDTO; import com.epmet.dto.result.CustomerStaffRoleListResultDTO; import com.epmet.dto.result.GovStaffRoleResultDTO; -import com.epmet.dto.result.GovStaffRoleTemplateDTO; import com.epmet.dto.result.StaffRolesResultDTO; -import com.epmet.entity.GovStaffRoleEntity; import com.epmet.entity.StaffRoleEntity; import com.epmet.redis.StaffRoleRedis; import com.epmet.service.StaffRoleService; @@ -180,4 +177,9 @@ public class StaffRoleServiceImpl extends BaseServiceImpl getStaffRoleEntytiesByStaffIdAndOrgId(String agencyId, String staffId) { + return baseDao.listStaffRoleEntytiesByStaffIdAndOrgId(agencyId, staffId); + } + } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.4__add_rootmanager.sql b/epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.4__add_rootmanager.sql new file mode 100644 index 0000000000..31f2f20fdb --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.4__add_rootmanager.sql @@ -0,0 +1 @@ +INSERT INTO epmet_user.gov_staff_role_template (ID, ROLE_KEY, ROLE_NAME, ORG_TYPE, FULL_TIME_ONLY, DEL_FLAG, REVISION, CREATED_BY, CREATED_TIME, UPDATED_BY, UPDATED_TIME) VALUES (uuid(), 'root_manager', '根管理员', 'agency', 1, 0, 0, 'APP_USER', now(), 'APP_USER', now()); \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/StaffRoleDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/StaffRoleDao.xml index 94ae4b700d..b02425c697 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/StaffRoleDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/StaffRoleDao.xml @@ -17,11 +17,11 @@ update - staff_role - set DEL_FLAG = '1' - where STAFF_ID = #{staffId} - and ORG_ID = #{orgId} - and DEL_FLAG = '0' + staff_role sr inner join gov_staff_role gsr on (sr.ROLE_ID = gsr.ID and gsr.ROLE_KEY != 'root_manager') + set sr.DEL_FLAG = '1' + where sr.STAFF_ID = #{staffId} + and sr.ORG_ID = #{orgId} + and sr.DEL_FLAG = '0' @@ -156,4 +156,12 @@ AND gsr.del_flag = '0' AND sr.staff_id = #{staffId} + + \ No newline at end of file