fix(*) 首次提交Feign项目

This commit is contained in:
2023-08-23 16:36:00 +08:00
parent 29b449dbb3
commit 31fb0398bb
39 changed files with 2557 additions and 0 deletions

2
.gitignore vendored
View File

@ -20,3 +20,5 @@
/WXEngine/target/ /WXEngine/target/
/Auth/src/main/resources/application-test.yml /Auth/src/main/resources/application-test.yml
/Auth/src/main/resources/bootstrap-test.yml /Auth/src/main/resources/bootstrap-test.yml
/Feign/src/main/resources/application-test.yml
/Feign/src/main/resources/bootstrap-test.yml

111
Feign/pom.xml Normal file
View File

@ -0,0 +1,111 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.crtech.cloud.feign</groupId>
<artifactId>Feign</artifactId>
<version>1.0.1</version>
<!-- 父工程 -->
<parent>
<groupId>cn.crtech.cloud.dependencies</groupId>
<artifactId>Dependencies</artifactId>
<version>1.0.1</version>
<relativePath/>
</parent>
<!-- 依赖的版本锁定 -->
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<common.version>1.0.1</common.version>
<feign.version>10.7.4</feign.version>
<httpclient.version>4.5.10</httpclient.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
<!-- nacos 客户端-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--提供健康信息接口供监控使用-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<exclusions>
<exclusion>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>${httpclient.version}</version>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-httpclient</artifactId>
<version>${feign.version}</version>
</dependency>
<dependency>
<groupId>cn.crtech.cloud.common</groupId>
<artifactId>Common</artifactId>
<version>${common.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,18 @@
package cn.crtech.feign;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
import org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
@EnableDiscoveryClient
@EnableFeignClients(basePackages = "cn.crtech.feign")
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, RedisAutoConfiguration.class, RedisRepositoriesAutoConfiguration.class})
public class FeignApplication {
public static void main(String[] args) {
SpringApplication.run(FeignApplication.class, args);
}
}

View File

@ -0,0 +1,14 @@
package cn.crtech.feign.config;
import feign.Logger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class FeignConfiguration {
// 日志级别
@Bean
Logger.Level feignLoggerLevel() {
return Logger.Level.FULL;
}
}

View File

@ -0,0 +1,78 @@
package cn.crtech.feign.config;
import feign.RequestInterceptor;
import feign.RequestTemplate;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;
import java.util.LinkedHashMap;
import java.util.Map;
@Slf4j
@Configuration
public class GetHeaderConfiguration {
private static final String X_REQUEST_ID = "Bearer ";
@Bean("requestInterceptor")
public RequestInterceptor requestInterceptor() {
return new RequestInterceptor() {
@Override
public void apply(RequestTemplate template) {
HttpServletRequest httpServletRequest = getHttpServletRequest();
if (httpServletRequest != null) {
//获取头信息
Map<String, String> headers = getHeaders(httpServletRequest);
// 传递所有请求头,防止部分丢失
//将请求的头信息放入到RequestTemplate 的头信息中当使用RequestTemplate发起请求时会自动添加头信息
for (Map.Entry<String, String> entry : headers.entrySet()) {
template.header(entry.getKey(), entry.getValue());
}
// 微服务之间传递的唯一标识,区分大小写所以通过httpServletRequest获取
if (httpServletRequest.getHeader(X_REQUEST_ID) == null) {
template.header(X_REQUEST_ID);
}
}
}
/**
* RequestContextHolder 中获取 HttpServletRequest对象
*
* @return
*/
private HttpServletRequest getHttpServletRequest() {
try {
return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
} catch (Exception e) {
return null;
}
}
/**
* 获取头信息
*
* @param request
* @return
*/
private Map<String, String> getHeaders(HttpServletRequest request) {
Map<String, String> map = new LinkedHashMap<>();
Enumeration<String> enumeration = request.getHeaderNames();
if (enumeration != null) {
while (enumeration.hasMoreElements()) {
String key = enumeration.nextElement();
String value = request.getHeader(key);
map.put(key, value);
}
}
return map;
}
};
}
}

View File

@ -0,0 +1,32 @@
package cn.crtech.feign.controller;
import cn.crtech.cloud.common.dto.Result;
import cn.crtech.feign.pojo.AccountFlow;
import cn.crtech.feign.pojo.CompanyAccount;
import cn.crtech.feign.service.AcctClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class AcctApi {
@Autowired
private AcctClient acctClient;
@PostMapping("/acct/account/flow")
public Result accountFlowCreate(@RequestBody AccountFlow accountFlow) {
return acctClient.accountFlowCreate(accountFlow);
}
@RequestMapping(value = "/acct/companyAccount/insertCompanyAccount")
public Result insertCompanyAccount(@RequestBody CompanyAccount companyAccount) {
return acctClient.insertCompanyAccount(companyAccount);
}
@RequestMapping(value = "/acct/companyAccount/updateCompanyAccount")
public Result updateCompanyAccount(@RequestBody CompanyAccount companyAccount) {
return acctClient.updateCompanyAccount(companyAccount);
}
}

View File

@ -0,0 +1,34 @@
package cn.crtech.feign.controller;
import cn.crtech.cloud.common.dto.Result;
import cn.crtech.feign.service.AuthClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* auth模块服务间调用Api
*
* @author TYP
* @since 2023-08-11 14:44
*/
@RestController
public class AuthApi {
private AuthClient authClient;
@Autowired
public AuthApi(AuthClient authClient) {
this.authClient = authClient;
}
/**
* 权限数据刷新
*
* @return 返回处理结果
*/
@PostMapping("/oauth/initRedis")
public Result initRedis() {
return authClient.initRedis();
}
}

View File

@ -0,0 +1,44 @@
package cn.crtech.feign.controller;
import cn.crtech.cloud.common.dto.Result;
import cn.crtech.feign.dto.ChainUserDto;
import cn.crtech.feign.service.LsErpClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class LsErpApi {
@Autowired
private LsErpClient lsErpClient;
/**
* 获取连锁公司选项
*
* @return 返回查询结果
*/
@PostMapping("/ls/erp/loadChainOption")
public Result loadChainOption() {
try {
return lsErpClient.loadChainOption();
} catch (Exception e) {
return Result.error("查询失败");
}
}
/**
* 连锁用户注册
*
* @param userDto 注册信息对象
* @return 返回注册结果
*/
@PostMapping("/ls/erp/registerUser")
public Result registerUser(@RequestBody ChainUserDto userDto) {
try {
return lsErpClient.registerUser(userDto);
} catch (Exception e) {
return Result.error("查询失败");
}
}
}

View File

@ -0,0 +1,87 @@
package cn.crtech.feign.controller;
import cn.crtech.cloud.common.dto.Result;
import cn.crtech.feign.dto.MessageDto;
import cn.crtech.feign.pojo.WxMpMessage;
import cn.crtech.feign.service.MnsClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
@RestController
public class MnsApi {
@Autowired
private MnsClient mnsClient;
@PostMapping("/mns/sendSystemMessage")
public Result sendSystemMessage(@RequestBody MessageDto message) {
return mnsClient.sendSystemMessage(message);
}
@PostMapping("/mns/sendWxMpTempMessage")
public Result sendWxMpTempMessage(@RequestBody WxMpMessage wxMpMessage) {
return mnsClient.sendWxMpTempMessage(wxMpMessage);
}
@GetMapping("/mns/sendSMS/{type}/{mobile}")
public Result sendSystemMessage(@PathVariable("type") String type, @PathVariable("mobile") String mobile) {
return mnsClient.sendSMS(type, mobile);
}
/**
* 分页条件查询系统消息内容
*
* @param params 参数对象
* @return 返回查询结果
*/
@PostMapping("/mns/systemMessage/listQueryByPage")
Result listQueryByPage(Map<String, Object> params) {
return mnsClient.listQueryByPage(params);
}
/**
* 更新系统消息状态
*
* @param params 参数对象
* @return 返回执行结果
*/
@PostMapping("/mns/systemMessage/updateSystemMessageStatus")
Result updateSystemMessageStatus(Map<String, Object> params) {
return mnsClient.updateSystemMessageStatus(params);
}
/**
* 查询系统消息
*
* @param params 参数对象
* @return 返回查询结果
*/
@PostMapping("/mns/systemMessage/listByParams")
Result listByParams(Map<String, Object> params) {
return mnsClient.listByParams(params);
}
/**
* 发送(新增)系统消息
*
* @param params 参数对象
* @return 返回执行结果
*/
@PostMapping("/mns/systemMessage/sendPlatForm")
Result sendPlatForm(Map<String, Object> params) {
return mnsClient.sendPlatForm(params);
}
/**
* 更新系统消息
*
* @param params 参数对象
* @return 返回执行结果
*/
@PostMapping("/mns/systemMessage/update")
Result update(Map<String, Object> params) {
return mnsClient.update(params);
}
}

View File

@ -0,0 +1,72 @@
package cn.crtech.feign.controller;
import cn.crtech.cloud.common.api.CommonResult;
import cn.crtech.cloud.common.dto.Result;
import cn.crtech.feign.service.ResourceClient;
import feign.Response;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.Map;
@Controller
public class ResourceApi {
@Autowired
private ResourceClient resourceClient;
@RequestMapping(value = "/rm/upload", method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@ResponseBody
public CommonResult addFile(@RequestPart(name = "file") MultipartFile file,
@RequestParam(name = "path") String path,
@RequestParam(name = "name") String name,
@RequestParam(name = "description") String description) {
return resourceClient.addFile(file, path, name, description);
}
@GetMapping("/rm/s/{fileId}")
@ResponseBody
public CommonResult showUrl(@PathVariable(value = "fileId") String fileId) {
return resourceClient.showUrl(fileId);
}
@PostMapping("/rm/s/much")
@ResponseBody
public CommonResult showMuchUrl(@RequestBody Map<String, Object> params) {
return resourceClient.showMuchUrl(params);
}
@GetMapping("/rm/d/{fileId}")
@ResponseBody
public CommonResult downloadUrl(@PathVariable(value = "fileId") String fileId) {
return resourceClient.downloadUrl(fileId);
}
@PostMapping("/rm/remove")
@ResponseBody
public CommonResult remove(@RequestBody List<String> fileIds) {
return resourceClient.remove(fileIds);
}
@GetMapping("/getFileStream")
public Response getFileStream(@RequestParam("fileId")String fileId) {
return resourceClient.getFileStream(fileId);
}
@GetMapping(value = {"/rm/byte/res/stream/{fileId}", "/rm/byte/down/stream/{fileId}"}, produces = "application/json;charset=utf-8")
@ResponseBody
public CommonResult getFileStreamByFileId(@PathVariable("fileId") String fileId) {
return resourceClient.getFileStreamByFileId(fileId);
}
@GetMapping("/rm/copyOfMinIoFile")
@ResponseBody
public Result copyOfMinIoFile(@RequestParam(value = "fileId") String fileId) {
return resourceClient.copyOfMinIoFile(fileId);
}
}

View File

@ -0,0 +1,562 @@
package cn.crtech.feign.controller;
import cn.crtech.cloud.common.dto.Result;
import cn.crtech.feign.dto.RegisterDto;
import cn.crtech.feign.service.CloudMisClient;
import cn.crtech.feign.service.TmClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
public class UserApi {
private TmClient tmClient;
private CloudMisClient cloudMisClient;
@Autowired
public UserApi(TmClient tmClient, CloudMisClient cloudMisClient) {
this.tmClient = tmClient;
this.cloudMisClient = cloudMisClient;
}
/************************************* 公司角色 start *******************************************/
/**
* 条件查询公司角色数据
*
* @param obj 参数对象
* @return 返回查询结果
*/
@PostMapping("/misFeign/comRole/loadComRoleByPage")
public Result loadComRoleByPage(@RequestBody Map<String, Object> obj) {
return cloudMisClient.loadComRoleByPage(obj);
}
/**
* 创建公司角色数据信息
*
* @param obj 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/comRole/createComRole")
public Result createComRole(@RequestBody Map<String, Object> obj) {
return cloudMisClient.createComRole(obj);
}
/**
* 修改公司角色数据信息
*
* @param obj 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/comRole/updateComRole")
public Result updateComRole(@RequestBody Map<String, Object> obj) {
return cloudMisClient.updateComRole(obj);
}
/**
* 删除公司角色
*
* @param obj 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/comRole/delComRole")
public Result delComRole(@RequestBody Map<String, Object> obj) {
return cloudMisClient.delComRole(obj);
}
/**
* 公司角色设定管理员
*
* @param obj 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/comRole/setComAdminRole")
public Result setComAdminRole(@RequestBody Map<String, Object> obj) {
return cloudMisClient.setComAdminRole(obj);
}
/**
* 查询获取公司已授权绑定的产品数据
*
* @param obj 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/comRole/loadComBindSeriesApp")
public Result loadComBindSeriesApp(@RequestBody Map<String, Object> obj) {
return cloudMisClient.loadComBindSeriesApp(obj);
}
/**
* 查询获取公司已授权绑定产品的菜单数据
*
* @param obj 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/comRole/loadComAppPopedom")
public Result loadComAppPopedom(@RequestBody Map<String, Object> obj) {
return cloudMisClient.loadComAppPopedom(obj);
}
/**
* 查询获取公司已授权绑定产品菜单特殊权限数据
*
* @param obj 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/comRole/loadComAppPopAuthority")
public Result loadComAppPopAuthority(@RequestBody Map<String, Object> obj) {
return cloudMisClient.loadComAppPopAuthority(obj);
}
/**
* 角色绑定授权
*
* @param params 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/comRole/roleBindAuth")
public Result roleBindAuth(@RequestBody Map<String, Object> params) {
return cloudMisClient.roleBindAuth(params);
}
/**
* 查询角色绑定用户信息
*
* @param params 参数对象
* @return 返回查询结果
*/
@PostMapping("/misFeign/comRole/loadComRoleUser")
public Result loadComRoleUser(@RequestBody Map<String, Object> params) {
return cloudMisClient.loadComRoleUser(params);
}
/**
* 角色绑定用户信息
*
* @param params 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/comRole/comRoleBindUser")
public Result comRoleBindUser(@RequestBody Map<String, Object> params) {
return cloudMisClient.comRoleBindUser(params);
}
/************************************* 公司角色 end *******************************************/
/************************************* 授权默认角色 start *******************************************/
/**
* 条件分页查询企业授权产品默认角色
*
* @param params 参数对象
* @return 返回查询结果
*/
@PostMapping("/misFeign/defaultRole/loadComAuthDefaultRoleByPage")
Result loadComAuthDefaultRoleByPage(@RequestBody Map<String, Object> params) {
return cloudMisClient.loadComAuthDefaultRoleByPage(params);
}
/**
* 查询默认角色授权数据
*
* @param params 参数对象
* @return 返回查询结果
*/
@PostMapping("/misFeign/defaultRole/loadDefaultRoleAuth")
Result loadDefaultRoleAuth(@RequestBody Map<String, Object> params) {
return cloudMisClient.loadDefaultRoleAuth(params);
}
/**
* 获取当前角色未绑定用户数据
*
* @param params 参数对象
* @return 返回查询结果
*/
@PostMapping("/misFeign/defaultRole/loadUnbindDefaultRoleUser")
Result loadUnbindDefaultRoleUser(@RequestBody Map<String, Object> params) {
return cloudMisClient.loadUnbindDefaultRoleUser(params);
}
/**
* 角色批量绑定用户
*
* @param params 参数对象
* @return 返回查询结果
*/
@PostMapping("/misFeign/defaultRole/defaultRoleBindUser")
Result defaultRoleBindUser(@RequestBody Map<String, Object> params) {
return cloudMisClient.defaultRoleBindUser(params);
}
/************************************* 授权默认角色 end *******************************************/
/************************************* 企业用户 start *******************************************/
/**
* 条件分页查询企业用户信息
*
* @param params 参数对象
* @return 返回查询结果
*/
@PostMapping("/misFeign/comUser/loadComUserByPage")
public Result loadComUserByPage(@RequestBody Map<String, Object> params) {
return cloudMisClient.loadComUserByPage(params);
}
/**
* 用户注册新增
*
* @param registerDto 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/comUser/createComUser")
public Result createComUser(@RequestBody Map<String, Object> registerDto) {
return cloudMisClient.createComUser(registerDto);
}
/**
* 更新企业用户信息
*
* @param params 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/comUser/updateComUser")
public Result updateComUser(@RequestBody Map<String, Object> params) {
return cloudMisClient.updateComUser(params);
}
/**
* 企业用户状态修改
*
* @param params 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/comUser/changeComUserState")
public Result changeComUserState(@RequestBody Map<String, Object> params) {
return cloudMisClient.changeComUserState(params);
}
/**
* 获取企业角色内容
*
* @param params 参数对象
* @return 返回查询结果
*/
@PostMapping("/misFeign/comUser/loadComUserRoleData")
public Result loadComUserRoleData(@RequestBody Map<String, Object> params) {
return cloudMisClient.loadComUserRoleData(params);
}
/**
* 用户绑定角色
*
* @param params 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/comUser/comUserBindRole")
public Result comUserBindRole(@RequestBody Map<String, Object> params) {
return cloudMisClient.comUserBindRole(params);
}
/************************************* 企业用户 end *******************************************/
/************************************* 企业信息 start *******************************************/
/**
* 获取企业信息
*
* @param params 参数对象
* <ul>
* <li>companyCode: 公司标识</li>
* </ul>
* @return 返回查询结果
*/
@PostMapping("/misFeign/com/loadComInfo")
public Result loadComInfo(@RequestBody Map<String, Object> params) {
return cloudMisClient.loadComInfo(params);
}
/************************************* 企业信息 end *******************************************/
/************************************* 个人企业 start *******************************************/
/**
* 修改用户默认企业
*
* @param params 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/comUser/setDefaultCompany")
public Result setDefaultCompany(@RequestBody Map<String, Object> params) {
return cloudMisClient.setDefaultCompany(params);
}
/************************************* 个人企业 end *******************************************/
/************************************* 个人技能证书 start *******************************************/
/**
* 用户技能证书提交
*
* @param params 参数对象
* @return 返回结果
*/
@PostMapping("/misFeign/userSkill/uploadCertificate")
public Result uploadCertificate(@RequestBody Map<String, Object> params) {
return cloudMisClient.uploadCertificate(params);
}
/**
* 查询个人技能证书
*
* @param params 参数对象
* <ul>
* <li>userId: 用户ID</li>
* </ul>
* @return 返回查询结果
*/
@PostMapping("/misFeign/userSkill/loadSelfCertificate")
public Result loadSelfCertificate(@RequestBody Map<String, Object> params) {
return cloudMisClient.loadSelfCertificate(params);
}
/**
* 删除个人技能证书
*
* @param params 参数对象
* <ul>
* <li>id: 技能内容ID</li>
* </ul>
* @return 返回操作结果
*/
@PostMapping("/misFeign/userSkill/delSelfCertificate")
public Result delSelfCertificate(@RequestBody Map<String, Object> params) {
return cloudMisClient.delSelfCertificate(params);
}
/**
* 条件获取字典数据信息
*
* @param params 参数对象
* <ul>
* <li>typeCode: 字典类型标识</li>
* <li>code: 字典数据标识</li>
* <li>name: 字典数据名称</li>
* </ul>
* @return 返回查询结果
*/
@PostMapping("/misFeign/dict/loadDictDataByCondition")
public Result loadDictDataByCondition(@RequestBody Map<String, Object> params) {
return cloudMisClient.loadDictDataByCondition(params);
}
/************************************* 个人技能证书 end *******************************************/
/************************************* 安全中心 start *******************************************/
/**
* 用户密码修改
*
* @param obj 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/user/updateUserPwd")
public Result updateUserPwd(@RequestBody Map<String, Object> obj) {
return cloudMisClient.updateUserPwd(obj);
}
/************************************* 安全中心 end *******************************************/
/************************************* 个人中心 start *******************************************/
/**
* 更新用户信息
*
* @param params 参数对象
* <ul>
* <li>id: 用户ID</li>
* <li>email: 邮箱地址</li>
* <li>name: 名称</li>
* <li>state: 企业用户状态</li>
* </ul>
* @return 返回操作结果
*/
@PostMapping("/misFeign/user/renewUserInfo")
public Result renewUserInfo(@RequestBody Map<String, Object> params) {
try {
cloudMisClient.renewUserInfo(params);
;
tmClient.updateStaffInfo(params);
} catch (Exception e) {
return Result.error("修改人员失败");
}
return Result.success();
}
/**
* 获取团队管理用户信息
*
* @param params 参数对象
* @return 返回查询结果
*/
@PostMapping("/user/staff/queryById")
public Result queryStaffById(@RequestBody Map<String, Object> params) {
return tmClient.queryStaffById(params);
}
/************************************* 个人中心 end *******************************************/
/************************************* 其他调用内容 start **************************************/
/**
* 条件查询所有满足条件的所有用户数据(产品标识及公司标识)
*
* @param params 参数对象
* <ul>
* <li>applicationCode: 产品标识</li>
* <li>companyCode: 公司标识</li>
* </ul>
* @return 返回查询结果
*/
@PostMapping("/misFeign/user/queryAll")
public Result queryAllUser(@RequestParam Map<String, Object> params) {
return cloudMisClient.queryAllUser(params);
}
/**
* 条件查询所有满足条件的所有用户数据(公司标识)
*
* @param params 参数对象
* <ul>
* <li>companyCode: 公司标识</li>
* </ul>
* @return 返回查询结果
*/
@PostMapping("/misFeign/user/queryUserByCompanyCode")
public Result queryUserByCompanyCode(@RequestParam Map<String, Object> params) {
return cloudMisClient.queryUserByCompanyCode(params);
}
/**
* 根据手机号码查询用户信息
*
* @param mobile 用户手机号码
* @return 返回查询结果
*/
@PostMapping("/misFeign/user/queryUserByMobile")
public Result queryUserByMobile(@RequestParam String mobile) {
Map<String, Object> params = new HashMap<>();
params.put("mobile", mobile);
return cloudMisClient.queryUserByMobile(params);
}
/**
* 客户端用户注册
*
* @param user 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/user/clientRegister")
Result clientRegister(@RequestBody Map<String, Object> user) {
return cloudMisClient.clientRegister(user);
}
/**
* 条件查询所有满足条件的所有用户数据(角色标识)
*
* @param params 参数对象
* <ul>
* <li>pageNum: 分页页码</li>
* <li>pageSize: 数据个数</li>
* <li>roleCode: 对应角色标识集合</li>
* <li>nickName: 用户别名</li>
* <li>companyName: 企业名称</li>
* <li>mobile: 手机号码</li>
* </ul>
* @return 返回查询结果
*/
@PostMapping("/misFeign/user/queryUserByRoleCode")
Result queryUserByRoleCode(@RequestBody Map<String, Object> params) {
return cloudMisClient.queryUserByRoleCode(params);
}
/**
* 查询非公司用户
*
* @return 返回查询结果
*/
@PostMapping("/misFeign/user/queryNotCompanyUser")
Result queryNotCompanyUser() {
return cloudMisClient.queryNotCompanyUser();
}
/**
* 查询已创建的公司医院信息
*
* @return 返回查询结果
*/
@PostMapping("/misFeign/company/queryHospitalInfo")
Result queryHospitalInfo() {
return cloudMisClient.queryHospitalInfo();
}
/**
* 授权数据信息查询
*
* @param obj 参数对象
* @return 返回查询结果
*/
@PostMapping("/misFeign/comApp/loadRoleApp")
Result loadComAuthApp(@RequestBody Map<String, Object> obj) {
return cloudMisClient.loadComAuthApp(obj);
}
/**
* 更新用户信息(团队管理)
*
* @param params 参数对象
* <ul>
* <li>userName: 用户名称</li>
* <li>serialNo: 员工编号</li>
* <li>userId: 用户ID</li>
* <li>mobile: 手机号码</li>
* </ul>
* @return 返回操作结果
*/
@PostMapping("/misFeign/user/updateUserInfoByTm")
Result updateUserInfoByTm(@RequestBody Map<String, Object> params) {
return cloudMisClient.updateUserInfoByTm(params);
}
/**
* 获取连锁数据集合
*
* @param params 参数对象
* <ul>
* <li>chainName: 连锁名称</li>
* <li>chainCode: 连锁标识</li>
* <li>mechanismName: 机构名称</li>
* <li>mechanismCode: 机构标识</li>
* <li>isHeadOffice: 是否连锁总店</li>
* <li>isSystemCompany: 是否存在关联公司</li>
* </ul>
* @return 返回查询结果
*/
@PostMapping("/misFeign/chain/getChainList")
Result getChainList(@RequestBody Map<String, Object> params) {
return cloudMisClient.getChainList(params);
}
/**
* 批量新增用户
*
* @param registerDtos 用户数据集合
* @return 返回操作结果
*/
@PostMapping("/misFeign/comUser/batchRegister")
public Result batchRegister(@RequestBody List<RegisterDto> registerDtos) {
return cloudMisClient.batchRegister(registerDtos);
}
/**
* 初始化企业用户团队管理用户信息
*
* @param objectList 用户信息数据集合
* @return 返回操作结果
*/
@PostMapping("/user/staff/initTMStaff")
public Result initTMStaff(@RequestBody List<Map<String, Object>> objectList) {
return tmClient.initTMStaff(objectList);
}
}

View File

@ -0,0 +1,27 @@
package cn.crtech.feign.dto;
import lombok.*;
import java.io.Serializable;
/**
* 连锁主界面用户注册DTO对象
*
* @author TYP
* @since 2023-02-23 16:18
*/
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class ChainUserDto implements Serializable {
private Integer companyId;
private String name;
private String mobile;
private String email;
private String zhiyid;
private String lgnname;
private String password;
}

View File

@ -0,0 +1,15 @@
package cn.crtech.feign.dto;
import cn.crtech.feign.pojo.Message;
import cn.crtech.feign.pojo.MessageList;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class MessageDto implements Serializable {
private Message message;
private List<MessageList> messageLists;
}

View File

@ -0,0 +1,23 @@
package cn.crtech.feign.dto;
import lombok.Data;
/**
* @author lzjyz
*/
@Data
public class RegisterDto {
private String name;
private String mobile;
private String email;
private String password;
private String checkPassword;
private String companyCode;
private String serialNo;
}

View File

@ -0,0 +1,30 @@
package cn.crtech.feign.fallback;
import cn.crtech.cloud.common.dto.Result;
import cn.crtech.feign.pojo.AccountFlow;
import cn.crtech.feign.pojo.CompanyAccount;
import cn.crtech.feign.service.AcctClient;
import org.springframework.cloud.openfeign.FallbackFactory;
public class AcctClientFallbackFactory implements FallbackFactory<AcctClient> {
@Override
public AcctClient create(Throwable cause) {
return new AcctClient() {
@Override
public Result accountFlowCreate(AccountFlow accountFlow) {
return Result.error("", "fallback;reason was : " + cause.getMessage());
}
@Override
public Result insertCompanyAccount(CompanyAccount companyAccount) {
return Result.error(companyAccount, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result updateCompanyAccount(CompanyAccount companyAccount) {
return Result.error(companyAccount, "fallback;reason was : " + cause.getMessage());
}
};
}
}

View File

@ -0,0 +1,17 @@
package cn.crtech.feign.fallback;
import cn.crtech.cloud.common.dto.Result;
import cn.crtech.feign.service.AuthClient;
import org.springframework.cloud.openfeign.FallbackFactory;
public class AuthClientFallbackFactory implements FallbackFactory<AuthClient> {
@Override
public AuthClient create(Throwable cause) {
return new AuthClient() {
@Override
public Result initRedis() {
return Result.error("", "fallback;reason was : " + cause.getMessage());
}
};
}
}

View File

@ -0,0 +1,216 @@
package cn.crtech.feign.fallback;
import cn.crtech.cloud.common.dto.Result;
import cn.crtech.feign.dto.RegisterDto;
import cn.crtech.feign.service.CloudMisClient;
import org.springframework.cloud.openfeign.FallbackFactory;
import java.util.List;
import java.util.Map;
public class CloudMisFallbackFactory implements FallbackFactory<CloudMisClient> {
@Override
public CloudMisClient create(Throwable cause) {
return new CloudMisClient() {
@Override
public Result loadComRoleByPage(Map<String, Object> obj) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result createComRole(Map<String, Object> obj) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result updateComRole(Map<String, Object> obj) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result delComRole(Map<String, Object> obj) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result setComAdminRole(Map<String, Object> obj) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result loadComBindSeriesApp(Map<String, Object> obj) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result loadComAppPopedom(Map<String, Object> obj) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result loadComAppPopAuthority(Map<String, Object> obj) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result roleBindAuth(Map<String, Object> params) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result loadComAuthDefaultRoleByPage(Map<String, Object> params) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result loadDefaultRoleAuth(Map<String, Object> params) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result loadUnbindDefaultRoleUser(Map<String, Object> params) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result defaultRoleBindUser(Map<String, Object> params) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result loadComRoleUser(Map<String, Object> params) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result comRoleBindUser(Map<String, Object> params) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result loadComUserByPage(Map<String, Object> params) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result createComUser(Map<String, Object> registerDto) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result updateComUser(Map<String, Object> params) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result changeComUserState(Map<String, Object> params) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result loadComUserRoleData(Map<String, Object> params) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result comUserBindRole(Map<String, Object> params) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result loadComInfo(Map<String, Object> params) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result setDefaultCompany(Map<String, Object> params) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result uploadCertificate(Map<String, Object> params) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result loadSelfCertificate(Map<String, Object> params) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result delSelfCertificate(Map<String, Object> params) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result loadDictDataByCondition(Map<String, Object> params) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result updateUserPwd(Map<String, Object> obj) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result renewUserInfo(Map<String, Object> params) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result queryAllUser(Map<String, Object> params) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result queryUserByCompanyCode(Map<String, Object> params) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result queryUserByMobile(Map<String, Object> params) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result clientRegister(Map<String, Object> user) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result queryUserByRoleCode(Map<String, Object> params) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result queryNotCompanyUser() {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result queryHospitalInfo() {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result loadComAuthApp(Map<String, Object> obj) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result updateUserInfoByTm(Map<String, Object> params) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result getChainList(Map<String, Object> params) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result batchRegister(List<RegisterDto> registerDtos) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
};
}
}

View File

@ -0,0 +1,23 @@
package cn.crtech.feign.fallback;
import cn.crtech.cloud.common.dto.Result;
import cn.crtech.feign.dto.ChainUserDto;
import cn.crtech.feign.service.LsErpClient;
import org.springframework.cloud.openfeign.FallbackFactory;
public class LsErpClientFallbackFactory implements FallbackFactory<LsErpClient> {
@Override
public LsErpClient create(Throwable cause) {
return new LsErpClient() {
@Override
public Result loadChainOption() {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result registerUser(ChainUserDto userDto) {
return Result.error(null, "fallback;reason was : " + cause.getMessage());
}
};
}
}

View File

@ -0,0 +1,56 @@
package cn.crtech.feign.fallback;
import cn.crtech.cloud.common.dto.Result;
import cn.crtech.feign.dto.MessageDto;
import cn.crtech.feign.pojo.WxMpMessage;
import cn.crtech.feign.service.MnsClient;
import org.springframework.cloud.openfeign.FallbackFactory;
import java.util.Map;
public class MnsClientFallbackFactory implements FallbackFactory<MnsClient> {
@Override
public MnsClient create(Throwable cause) {
return new MnsClient() {
@Override
public Result sendSystemMessage(MessageDto obj) {
return Result.error(obj, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result sendWxMpTempMessage(WxMpMessage obj) {
return Result.error(obj, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result sendSMS(String type, String mobile) {
return Result.error(mobile, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result listQueryByPage(Map<String, Object> params) {
return Result.error(params, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result updateSystemMessageStatus(Map<String, Object> params) {
return Result.error(params, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result listByParams(Map<String, Object> params) {
return Result.error(params, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result sendPlatForm(Map<String, Object> params) {
return Result.error(params, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result update(Map<String, Object> params) {
return Result.error(params, "fallback;reason was : " + cause.getMessage());
}
};
}
}

View File

@ -0,0 +1,59 @@
package cn.crtech.feign.fallback;
import cn.crtech.cloud.common.api.CommonResult;
import cn.crtech.cloud.common.dto.Result;
import cn.crtech.feign.service.ResourceClient;
import feign.Response;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.Map;
public class ResourceClientFallbackFactory implements FallbackFactory<ResourceClient> {
@Override
public ResourceClient create(Throwable cause) {
return new ResourceClient() {
@Override
public CommonResult addFile(MultipartFile file, String path, String name, String description) {
return CommonResult.failed("fallback;reason was : " + cause.getMessage());
}
@Override
public CommonResult showUrl(String fileId) {
return CommonResult.failed("fallback;reason was : " + cause.getMessage());
}
@Override
public CommonResult showMuchUrl(Map<String, Object> params) {
return CommonResult.failed("fallback;reason was : " + cause.getMessage());
}
@Override
public CommonResult downloadUrl(String fileId) {
return CommonResult.failed("fallback;reason was : " + cause.getMessage());
}
@Override
public CommonResult remove(List<String> fileIds) {
return CommonResult.failed("fallback;reason was : " + cause.getMessage());
}
@Override
public CommonResult getFileStreamByFileId(String fileId) {
return CommonResult.failed("fallback;reason was : " + cause.getMessage());
}
@Override
public Response getFileStream(String fileId) {
return null;
}
@Override
public Result copyOfMinIoFile(String fileId) {
return Result.error("fallback;reason was : " + cause.getMessage());
}
};
}
}

View File

@ -0,0 +1,45 @@
package cn.crtech.feign.fallback;
import cn.crtech.cloud.common.dto.Result;
import cn.crtech.feign.service.TmClient;
import org.springframework.cloud.openfeign.FallbackFactory;
import java.util.List;
import java.util.Map;
public class TmClientFallbackFactory implements FallbackFactory<TmClient> {
@Override
public TmClient create(Throwable cause) {
return new TmClient() {
@Override
public Result updateStaffInfo(Map<String, Object> params) {
return Result.error(params, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result updateStaffFormCompany(Map<String, Object> params) {
return Result.error(params, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result getByTypeCodeParams(Map<String, Object> params) {
return Result.error(params, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result queryStaffById(Map<String, Object> params) {
return Result.error(params, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result initTMStaff(List<Map<String, Object>> params) {
return Result.error(params, "fallback;reason was : " + cause.getMessage());
}
@Override
public Result changeState(Map<String, Object> params) {
return Result.error(params, "fallback;reason was : " + cause.getMessage());
}
};
}
}

View File

@ -0,0 +1,52 @@
package cn.crtech.feign.pojo;
import cn.crtech.cloud.common.annotation.DataExportAnnotation;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* Created by rxy on 2023-01-29 10:59:27
*/
@Data
@Table(name = "account_flow")
@DataExportAnnotation("资金流水")
public class AccountFlow implements Serializable {
@DataExportAnnotation("主键")
private Integer id;
@DataExportAnnotation("业务id")
private String bizId;
@DataExportAnnotation("业务类型code")
private String bizTypeCode;
@DataExportAnnotation("来源")
private String source;
@DataExportAnnotation("操作金额")
private BigDecimal operationAmount;
@DataExportAnnotation("企业标识")
private String companyCode;
@DataExportAnnotation("企业名称")
private String companyName;
@DataExportAnnotation("账户金额")
private BigDecimal accountAmount;
@DataExportAnnotation("备注")
private String remark;
@DataExportAnnotation("详情地址")
private String url;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS", timezone = "GMT+8")
@DataExportAnnotation("时间")
private Date created;
private Integer userId;
private String userName;
@DataExportAnnotation("状态")
private Integer status;
@Transient
@DataExportAnnotation("业务类型名称")
private String bizTypeName;
@DataExportAnnotation("流水编号")
private String serialNo;
}

View File

@ -0,0 +1,33 @@
package cn.crtech.feign.pojo;
import cn.crtech.cloud.common.annotation.DataExportAnnotation;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import javax.persistence.Table;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* Created by rxy on 2023-01-29 10:57:29
*/
@Data
@Table(name = "company_account")
@DataExportAnnotation("企业账户")
public class CompanyAccount implements Serializable {
@DataExportAnnotation("主键")
private String id;
@DataExportAnnotation("企业名称")
private String companyName;
@DataExportAnnotation("企业编码")
private String companyCode;
@DataExportAnnotation("金额")
private BigDecimal account;
@DataExportAnnotation("1.启用 0.失效")
private Integer status;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DataExportAnnotation("创建时间")
private Date created;
}

View File

@ -0,0 +1,87 @@
package cn.crtech.feign.pojo;
import cn.crtech.cloud.common.annotation.DataExportAnnotation;
import cn.crtech.cloud.common.utils.IDGenerator;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import tk.mybatis.mapper.annotation.KeySql;
import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.io.Serializable;
import java.util.Date;
/**
* Created by rxy on 2023-03-01 11:05:49
*/
@Data
@Table(name = "cr_message")
@DataExportAnnotation("消息")
public class Message implements Serializable {
@Id
@KeySql(genId = IDGenerator.class)
@DataExportAnnotation("主键")
private String id;
@Column(name = "category_id")
@DataExportAnnotation("消息类型")
private String categoryId;
@Column(name = "sender_id")
@DataExportAnnotation("发送人")
private String senderId;
@Column(name = "sender_name")
@DataExportAnnotation("发送人名称")
private String senderName;
@Column(name = "title")
@DataExportAnnotation("标题")
private String title;
@Column(name = "content")
@DataExportAnnotation("内容")
private String content;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@Column(name = "created")
@DataExportAnnotation("创建时间")
private Date created;
@Column(name = "send_way")
@DataExportAnnotation("0:内部消息1APP2短信3:App+短信")
private Integer sendWay;
@Column(name = "application_code")
@DataExportAnnotation("业务系统标识")
private String applicationCode;
@Column(name = "application_name")
@DataExportAnnotation("业务系统名称")
private String applicationName;
@Column(name = "biz_id")
@DataExportAnnotation("业务标识")
private String bizId;
@Column(name = "biz_code")
@DataExportAnnotation("业务code")
private String bizCode;
@Column(name = "route")
@DataExportAnnotation("route")
private String route;
@Column(name = "hospital_id")
@DataExportAnnotation("企业标识")
private String hospitalId;
@Column(name = "hospital_name")
@DataExportAnnotation("企业名称")
private String hospitalName;
@Transient
private String typeCode;
@Transient
private String typeName;
@Transient
private String code;
@Transient
private String bizName;
@Transient
private Integer receiverId;
@Transient
private String receiverName;
}

View File

@ -0,0 +1,37 @@
package cn.crtech.feign.pojo;
import cn.crtech.cloud.common.annotation.DataExportAnnotation;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;
/**
* Created by rxy on 2023-03-01 11:12:32
*/
@Data
@Table(name = "cr_message_list")
@DataExportAnnotation("消息")
public class MessageList implements Serializable {
@DataExportAnnotation("主键")
private String id;
@DataExportAnnotation("消息id")
private String messageId;
@DataExportAnnotation("接收人")
private Integer receiverId;
@DataExportAnnotation("接收人")
private String receiverName;
@DataExportAnnotation("0:内部消息1App2短信3:App+短信")
private Integer sendWay;
@DataExportAnnotation("状态 0 未读 1 已读")
private Integer status;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DataExportAnnotation("读取时间")
private Date readDate;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DataExportAnnotation("创建时间")
private Date created;
}

View File

@ -0,0 +1,24 @@
package cn.crtech.feign.pojo;
import lombok.Data;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
@Data
public class WxMpMessage implements Serializable {
private String appId;
private String typeCode;
private String toUserOpenId;
private String wxAppletAppid;
private String pagePath;
private Boolean usePath;
private Map<String, Object> content = new HashMap<>();
}

View File

@ -0,0 +1,22 @@
package cn.crtech.feign.service;
import cn.crtech.cloud.common.dto.Result;
import cn.crtech.feign.config.FeignConfiguration;
import cn.crtech.feign.fallback.AcctClientFallbackFactory;
import cn.crtech.feign.pojo.AccountFlow;
import cn.crtech.feign.pojo.CompanyAccount;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@FeignClient(value = "crtech-cloud-acct", fallbackFactory = AcctClientFallbackFactory.class, configuration = FeignConfiguration.class)
public interface AcctClient {
@PostMapping("/accountflow/create")
Result accountFlowCreate(@RequestBody AccountFlow accountFlow);
@PostMapping(value = "/companyAccount/create")
Result insertCompanyAccount(@RequestBody CompanyAccount companyAccount);
@PostMapping(value = "/companyAccount/update")
Result updateCompanyAccount(@RequestBody CompanyAccount companyAccount);
}

View File

@ -0,0 +1,13 @@
package cn.crtech.feign.service;
import cn.crtech.cloud.common.dto.Result;
import cn.crtech.feign.config.FeignConfiguration;
import cn.crtech.feign.fallback.AuthClientFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
@FeignClient(value = "crtech-cloud-auth", fallbackFactory = AuthClientFallbackFactory.class, configuration = FeignConfiguration.class)
public interface AuthClient {
@PostMapping("/oauth/initRedis")
Result initRedis();
}

View File

@ -0,0 +1,433 @@
package cn.crtech.feign.service;
import cn.crtech.cloud.common.dto.Result;
import cn.crtech.feign.config.FeignConfiguration;
import cn.crtech.feign.dto.RegisterDto;
import cn.crtech.feign.fallback.CloudMisFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
import java.util.Map;
/**
* desc
*
* @author TYP
* @since 2023-08-02 15:52
*/
@FeignClient(value = "crtech-cloud-mis", fallbackFactory = CloudMisFallbackFactory.class,
configuration = FeignConfiguration.class)
public interface CloudMisClient {
/**
* 条件查询公司角色数据
*
* @param obj 参数对象
* @return 返回查询结果
*/
@PostMapping("/misFeign/comRole/loadComRoleByPage")
Result loadComRoleByPage(@RequestBody Map<String, Object> obj);
/**
* 创建公司角色数据信息
*
* @param obj 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/comRole/createComRole")
Result createComRole(@RequestBody Map<String, Object> obj);
/**
* 修改公司角色数据信息
*
* @param obj 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/comRole/updateComRole")
Result updateComRole(@RequestBody Map<String, Object> obj);
/**
* 删除公司角色
*
* @param obj 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/comRole/delComRole")
Result delComRole(@RequestBody Map<String, Object> obj);
/**
* 公司角色设定管理员
*
* @param obj 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/comRole/setComAdminRole")
Result setComAdminRole(@RequestBody Map<String, Object> obj);
/**
* 查询获取公司已授权绑定的产品数据
*
* @param obj 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/comRole/loadComBindSeriesApp")
Result loadComBindSeriesApp(@RequestBody Map<String, Object> obj);
/**
* 查询获取公司已授权绑定产品的菜单数据
*
* @param obj 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/comRole/loadComAppPopedom")
Result loadComAppPopedom(@RequestBody Map<String, Object> obj);
/**
* 查询获取公司已授权绑定产品菜单特殊权限数据
*
* @param obj 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/comRole/loadComAppPopAuthority")
Result loadComAppPopAuthority(@RequestBody Map<String, Object> obj);
/**
* 角色绑定授权
*
* @param params 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/comRole/roleBindAuth")
Result roleBindAuth(@RequestBody Map<String, Object> params);
/**
* 查询角色绑定用户信息
*
* @param params 参数对象
* @return 返回查询结果
*/
@PostMapping("/misFeign/comRole/loadComRoleUser")
Result loadComRoleUser(@RequestBody Map<String, Object> params);
/**
* 角色绑定用户信息
*
* @param params 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/comRole/comRoleBindUser")
Result comRoleBindUser(@RequestBody Map<String, Object> params);
/**
* 条件分页查询企业授权产品默认角色
*
* @param params 参数对象
* @return 返回查询结果
*/
@PostMapping("/misFeign/defaultRole/loadComAuthDefaultRoleByPage")
Result loadComAuthDefaultRoleByPage(@RequestBody Map<String, Object> params);
/**
* 查询默认角色授权数据
*
* @param params 参数对象
* @return 返回查询结果
*/
@PostMapping("/misFeign/defaultRole/loadDefaultRoleAuth")
Result loadDefaultRoleAuth(@RequestBody Map<String, Object> params);
/**
* 获取当前角色未绑定用户数据
*
* @param params 参数对象
* @return 返回查询结果
*/
@PostMapping("/misFeign/defaultRole/loadUnbindDefaultRoleUser")
Result loadUnbindDefaultRoleUser(@RequestBody Map<String, Object> params);
/**
* 角色批量绑定用户
*
* @param params 参数对象
* @return 返回查询结果
*/
@PostMapping("/misFeign/defaultRole/defaultRoleBindUser")
Result defaultRoleBindUser(@RequestBody Map<String, Object> params);
/**
* 条件分页查询企业用户信息
*
* @param params 参数对象
* @return 返回查询结果
*/
@PostMapping("/misFeign/comUser/loadComUserByPage")
Result loadComUserByPage(@RequestBody Map<String, Object> params);
/**
* 用户注册新增
*
* @param registerDto 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/comUser/createComUser")
Result createComUser(@RequestBody Map<String, Object> registerDto);
/**
* 更新企业用户信息
*
* @param params 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/comUser/updateComUser")
Result updateComUser(@RequestBody Map<String, Object> params);
/**
* 企业用户状态修改
*
* @param params 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/comUser/changeComUserState")
Result changeComUserState(@RequestBody Map<String, Object> params);
/**
* 获取企业角色内容
*
* @param params 参数对象
* @return 返回查询结果
*/
@PostMapping("/misFeign/comUser/loadComUserRoleData")
Result loadComUserRoleData(@RequestBody Map<String, Object> params);
/**
* 用户绑定角色
*
* @param params 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/comUser/comUserBindRole")
Result comUserBindRole(@RequestBody Map<String, Object> params);
/**
* 获取企业信息
*
* @param params 参数对象
* <ul>
* <li>companyCode: 公司标识</li>
* </ul>
* @return 返回查询结果
*/
@PostMapping("/misFeign/com/loadComInfo")
Result loadComInfo(Map<String, Object> params);
/**
* 修改用户默认企业
*
* @param params 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/comUser/setDefaultCompany")
Result setDefaultCompany(Map<String, Object> params);
/**
* 用户技能证书提交
*
* @param params 参数对象
* @return 返回结果
*/
@PostMapping("/misFeign/userSkill/uploadCertificate")
Result uploadCertificate(@RequestBody Map<String, Object> params);
/**
* 查询个人技能证书
*
* @param params 参数对象
* <ul>
* <li>userId: 用户ID</li>
* </ul>
* @return 返回查询结果
*/
@PostMapping("/misFeign/userSkill/loadSelfCertificate")
Result loadSelfCertificate(@RequestBody Map<String, Object> params);
/**
* 删除个人技能证书
*
* @param params 参数对象
* <ul>
* <li>id: 技能内容ID</li>
* </ul>
* @return 返回操作结果
*/
@PostMapping("/misFeign/userSkill/delSelfCertificate")
Result delSelfCertificate(@RequestBody Map<String, Object> params);
/**
* 条件获取字典数据信息
*
* @param params 参数对象
* <ul>
* <li>typeCode: 字典类型标识</li>
* <li>code: 字典数据标识</li>
* <li>name: 字典数据名称</li>
* </ul>
* @return 返回查询结果
*/
@PostMapping("/misFeign/dict/loadDictDataByCondition")
Result loadDictDataByCondition(@RequestBody Map<String, Object> params);
/**
* 用户密码修改
*
* @param obj 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/user/updateUserPwd")
Result updateUserPwd(@RequestBody Map<String, Object> obj);
/**
* 更新用户信息
*
* @param params 参数对象
* <ul>
* <li>id: 用户ID</li>
* <li>email: 邮箱地址</li>
* <li>name: 名称</li>
* <li>state: 企业用户状态</li>
* </ul>
* @return 返回操作结果
*/
@PostMapping("/misFeign/user/renewUserInfo")
Result renewUserInfo(@RequestBody Map<String, Object> params);
/**
* 条件查询所有满足条件的所有用户数据(产品标识及公司标识)
*
* @param params 参数对象
* <ul>
* <li>applicationCode: 产品标识</li>
* <li>companyCode: 公司标识</li>
* </ul>
* @return 返回查询结果
*/
@PostMapping("/misFeign/user/queryAll")
Result queryAllUser(@RequestBody Map<String, Object> params);
/**
* 条件查询所有满足条件的所有用户数据(公司标识)
*
* @param params 参数对象
* <ul>
* <li>companyCode: 公司标识</li>
* </ul>
* @return 返回查询结果
*/
@PostMapping("/misFeign/user/queryUserByCompanyCode")
Result queryUserByCompanyCode(@RequestBody Map<String, Object> params);
/**
* 根据手机号码查询用户信息
*
* @param params 参数对象
* <ul>
* <li>mobile: 用户手机号码</li>
* </ul>
* @return 返回查询结果
*/
@PostMapping("/misFeign/user/queryUserByMobile")
Result queryUserByMobile(@RequestBody Map<String, Object> params);
/**
* 客户端用户注册
*
* @param user 参数对象
* @return 返回操作结果
*/
@PostMapping("/misFeign/user/clientRegister")
Result clientRegister(@RequestBody Map<String, Object> user);
/**
* 条件查询所有满足条件的所有用户数据(角色标识)
*
* @param params 参数对象
* <ul>
* <li>pageNum: 分页页码</li>
* <li>pageSize: 数据个数</li>
* <li>roleCode: 对应角色标识集合</li>
* <li>nickName: 用户别名</li>
* <li>companyName: 企业名称</li>
* <li>mobile: 手机号码</li>
* </ul>
* @return 返回查询结果
*/
@PostMapping("/misFeign/user/queryUserByRoleCode")
Result queryUserByRoleCode(@RequestBody Map<String, Object> params);
/**
* 查询非公司用户
*
* @return 返回查询结果
*/
@PostMapping("/misFeign/user/queryNotCompanyUser")
Result queryNotCompanyUser();
/**
* 查询已创建的公司医院信息
*
* @return 返回查询结果
*/
@PostMapping("/misFeign/company/queryHospitalInfo")
Result queryHospitalInfo();
/**
* 授权数据信息查询
*
* @param obj 参数对象
* @return 返回查询结果
*/
@PostMapping("/misFeign/comApp/loadRoleApp")
Result loadComAuthApp(@RequestBody Map<String, Object> obj);
/**
* 更新用户信息(团队管理)
*
* @param params 参数对象
* <ul>
* <li>userName: 用户名称</li>
* <li>serialNo: 员工编号</li>
* <li>userId: 用户ID</li>
* <li>mobile: 手机号码</li>
* </ul>
* @return 返回操作结果
*/
@PostMapping("/misFeign/user/updateUserInfoByTm")
Result updateUserInfoByTm(@RequestBody Map<String, Object> params);
/**
* 获取连锁数据集合
*
* @param params 参数对象
* <ul>
* <li>chainName: 连锁名称</li>
* <li>chainCode: 连锁标识</li>
* <li>mechanismName: 机构名称</li>
* <li>mechanismCode: 机构标识</li>
* <li>isHeadOffice: 是否连锁总店</li>
* <li>isSystemCompany: 是否存在关联公司</li>
* </ul>
* @return 返回查询结果
*/
@PostMapping("/misFeign/chain/getChainList")
Result getChainList(@RequestBody Map<String, Object> params);
/**
* 批量新增用户
*
* @param registerDtos 用户数据集合
* @return 返回操作结果
*/
@PostMapping("/misFeign/comUser/batchRegister")
Result batchRegister(@RequestBody List<RegisterDto> registerDtos);
}

View File

@ -0,0 +1,18 @@
package cn.crtech.feign.service;
import cn.crtech.cloud.common.dto.Result;
import cn.crtech.feign.config.FeignConfiguration;
import cn.crtech.feign.dto.ChainUserDto;
import cn.crtech.feign.fallback.LsErpClientFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
@FeignClient(value = "crtech-cloud-mis", fallbackFactory = LsErpClientFallbackFactory.class, configuration = FeignConfiguration.class, contextId = "lsErpApi")
public interface LsErpClient {
@PostMapping("/ls/erp/loadChainOption")
Result loadChainOption();
@PostMapping("/ls/erp/registerUser")
Result registerUser(ChainUserDto userDto);
}

View File

@ -0,0 +1,71 @@
package cn.crtech.feign.service;
import cn.crtech.cloud.common.dto.Result;
import cn.crtech.feign.config.FeignConfiguration;
import cn.crtech.feign.dto.MessageDto;
import cn.crtech.feign.fallback.MnsClientFallbackFactory;
import cn.crtech.feign.pojo.WxMpMessage;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.Map;
@FeignClient(value = "crtech-cloud-mns", fallbackFactory = MnsClientFallbackFactory.class, configuration = FeignConfiguration.class)
public interface MnsClient {
@PostMapping("/sendSystemMessage")
Result sendSystemMessage(@RequestBody MessageDto obj);
@PostMapping("/sendWxMpTempMessage")
Result sendWxMpTempMessage(@RequestBody WxMpMessage obj);
@GetMapping("/sendSMS/{type}/{mobile}")
Result sendSMS(@PathVariable("type") String type, @PathVariable("mobile") String mobile);
/**
* 分页条件查询系统消息内容
*
* @param params 参数对象
* @return 返回查询结果
*/
@PostMapping("/mns/systemMessage/listQueryByPage")
Result listQueryByPage(Map<String, Object> params);
/**
* 更新系统消息状态
*
* @param params 参数对象
* @return 返回执行结果
*/
@PostMapping("/mns/systemMessage/updateSystemMessageStatus")
Result updateSystemMessageStatus(Map<String, Object> params);
/**
* 查询系统消息
*
* @param params 参数对象
* @return 返回查询结果
*/
@PostMapping("/mns/systemMessage/listByParams")
Result listByParams(Map<String, Object> params);
/**
* 发送(新增)系统消息
*
* @param params 参数对象
* @return 返回执行结果
*/
@PostMapping("/mns/systemMessage/sendPlatForm")
Result sendPlatForm(Map<String, Object> params);
/**
* 更新系统消息
*
* @param params 参数对象
* @return 返回执行结果
*/
@PostMapping("/mns/systemMessage/update")
Result update(Map<String, Object> params);
}

View File

@ -0,0 +1,47 @@
package cn.crtech.feign.service;
import cn.crtech.cloud.common.api.CommonResult;
import cn.crtech.cloud.common.dto.Result;
import cn.crtech.feign.config.FeignConfiguration;
import cn.crtech.feign.fallback.ResourceClientFallbackFactory;
import feign.Response;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.Map;
@FeignClient(value = "crtech-cloud-resmanager", fallbackFactory = ResourceClientFallbackFactory.class, configuration = FeignConfiguration.class)
public interface ResourceClient {
@RequestMapping(value = "/upload", method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
CommonResult addFile(@RequestPart(name = "file") MultipartFile file,
@RequestParam(name = "path") String path,
@RequestParam(name = "name") String name,
@RequestParam(name = "description") String description);
@GetMapping("/s/{fileId}")
CommonResult showUrl(@PathVariable(value = "fileId") String fileId);
@PostMapping("/s/much")
CommonResult showMuchUrl(@RequestBody Map<String, Object> params);
@GetMapping("/s/{fileId}")
CommonResult downloadUrl(@PathVariable(value = "fileId") String fileId);
@PostMapping("/remove")
CommonResult remove(@RequestBody List<String> fileIds);
@GetMapping("/byte/down/stream/{fileId}")
CommonResult getFileStreamByFileId(@PathVariable("fileId") String fileId);
@GetMapping("/getFileStream")
Response getFileStream(@RequestParam("fileId") String fileId);
@GetMapping("/copyOfMinIoFile")
Result copyOfMinIoFile(@RequestParam("fileId") String fileId);
}

View File

@ -0,0 +1,33 @@
package cn.crtech.feign.service;
import cn.crtech.cloud.common.dto.Result;
import cn.crtech.feign.config.FeignConfiguration;
import cn.crtech.feign.fallback.TmClientFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
import java.util.Map;
@FeignClient(value = "crtech-cloud-pivas-tm", fallbackFactory = TmClientFallbackFactory.class, configuration = FeignConfiguration.class)
public interface TmClient {
@PostMapping("/staff/modify")
Result updateStaffInfo(Map<String, Object> params);
@PostMapping("/staff/updateStaffFormCompany")
Result updateStaffFormCompany(Map<String, Object> params);
@PostMapping("/dictionarydata/getByTypeCodeParams")
Result getByTypeCodeParams(Map<String, Object> params);
@RequestMapping("/staff/queryById")
Result queryStaffById(@RequestBody Map<String, Object> params);
@PostMapping("/staff/initTMStaff")
Result initTMStaff(@RequestBody List<Map<String, Object>> objectList);
@PostMapping("/staff/changeState")
Result changeState(@RequestBody Map<String, Object> params);
}

View File

@ -0,0 +1,18 @@
server:
port: 8997
feign:
httpclient:
enabled: true
compression:
request:
enabled: true
mime-types: text/xml,application/xml,application/json
min-request-size: 2048
response:
enabled: true
logging:
config: classpath:logback.xml
file:
path: logs/crtech-feign-provider.log
level:
com.crtech.feign: debug

View File

@ -0,0 +1,18 @@
server:
port: 8997
feign:
httpclient:
enabled: true
compression:
request:
enabled: true
mime-types: text/xml,application/xml,application/json
min-request-size: 2048
response:
enabled: true
logging:
config: classpath:logback.xml
file:
path: logs/crtech-feign-provider.log
level:
com.crtech.feign: debug

View File

@ -0,0 +1,12 @@
spring:
application:
name: crtech-feign-provider
servlet:
multipart:
enabled: true
max-file-size: 100MB
max-request-size: 1024MB
cloud:
nacos:
discovery:
server-addr: localhost:8848

View File

@ -0,0 +1,12 @@
spring:
application:
name: crtech-feign-provider
servlet:
multipart:
enabled: true
max-file-size: 100MB
max-request-size: 1024MB
cloud:
nacos:
discovery:
server-addr: http://api.yaoxunk.com:28848

View File

@ -0,0 +1,6 @@
spring:
profiles:
active: dev

View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/crtech-feign-provider.%d{yyyy-MM-dd}.log
</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd_HH:mm:ss} %logger{18} -%msg%n
</pattern>
</encoder>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
</pattern>
</encoder>
</appender>
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>0</discardingThreshold>
<queueSize>1000</queueSize>
<appender-ref ref="FILE" />
</appender>
<logger name="org" level="info" additivity="false">
<appender-ref ref="FILE"></appender-ref>
<appender-ref ref="STDOUT"></appender-ref>
</logger>
<logger name="com" level="info" additivity="false">
<appender-ref ref="FILE"></appender-ref>
<appender-ref ref="STDOUT"></appender-ref>
</logger>
<logger name="net" level="info" additivity="false">
<appender-ref ref="FILE"></appender-ref>
<appender-ref ref="STDOUT"></appender-ref>
</logger>
<logger name="com.netflix" level="debug" additivity="false">
<appender-ref ref="STDOUT"></appender-ref>
<appender-ref ref="FILE"></appender-ref>
</logger>
<logger name="cn.crtech.feign" level="debug" additivity="false">
<appender-ref ref="STDOUT"></appender-ref>
<appender-ref ref="FILE"></appender-ref>
</logger>
<root level="INFO">
<appender-ref ref="ASYNC" />
</root>
</configuration>