提交 a792a2b3 作者: 17607474349

feat:

1、添加hutool相关依赖
2、封装对zy常用的工具类(发送请求、获取token)
上级 f773da7a
......@@ -29,12 +29,8 @@ public class LocationTagImportExcel implements Serializable {
@ExcelColumn(index = 1)
String type;
// 所用实体
@ExcelColumn(index = 2)
String entityType;
// 设备编码
@ExcelColumn(index = 3)
@ExcelColumn(index = 2)
String imei;
public LocationTag transform() {
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.location.zy;
import cn.hutool.core.util.StrUtil;
import com.yiring.app.domain.location.LocationTag;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* zy定位标签新增入参
* @author LJ-2204
* @date 2022/4/15
*/
@ApiModel("ZyLocationTagAddParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class ZyLocationTagAddParam implements Serializable {
private static final long serialVersionUID = -8828137320896062620L;
@ApiModelProperty(value = "工厂", example = "100")
String orgId;
@ApiModelProperty(value = "标签类型", example = "蓝牙人员定位卡", required = true)
LocationTag.Type types;
@ApiModelProperty(value = "编号", example = "BTT88888888", required = true)
String tagId;
@ApiModelProperty(value = "实体类型", example = "car", required = true)
String entityType;
public static ZyLocationTagAddParam transform(LocationTag locationTag) {
String entityType = StrUtil.equals(locationTag.getType().name(), "BTT02") ? "car" : "staff";
return ZyLocationTagAddParam
.builder()
.orgId("100")
.tagId(locationTag.getCode())
.types(locationTag.getType())
.entityType(entityType)
.build();
}
}
......@@ -20,43 +20,43 @@ import org.springframework.web.multipart.MultipartFile;
public interface LocationTagService {
/**
* 新增定位标签
* @param param
* @return
* @param param 入参
* @return Result<String>
*/
Result<String> addLocationTag(LocationTagAddParam param);
/**
* 分页查询
* @param param
* @return
* @param param 入参
* @return Result<PageVo<LocationTagVo>>
*/
Result<PageVo<LocationTagVo>> findLocationTagPage(LocationTagFindParam param);
/**
* 销毁定位标签
* @param param
* @return
* @param param 入参
* @return Result<String>
*/
Result<String> deleteLocationTag(LocationTagDeleteParam param);
/**
* 导出定位标签
* @param param
* @param response
* @param param 入参
* @param response 响应信息
*/
void exportLocationTagInfo(LocationTagFindParam param, HttpServletResponse response);
/**
* 导入定位标签
* @param file
* @return
* @param file 文件
* @return Result<String>
*/
Result<String> importLocationTagInfo(MultipartFile file);
/**
* 修改定位标签
* @param param
* @return
* @param param 入参
* @return Result<String>
*/
Result<String> modifyLocationTag(LocationTagModifyParam param, IdParam idParam);
}
......@@ -14,8 +14,10 @@ import com.yiring.app.param.location.LocationTagAddParam;
import com.yiring.app.param.location.LocationTagDeleteParam;
import com.yiring.app.param.location.LocationTagFindParam;
import com.yiring.app.param.location.LocationTagModifyParam;
import com.yiring.app.param.location.zy.ZyLocationTagAddParam;
import com.yiring.app.service.location.LocationTagService;
import com.yiring.app.vo.location.LocationTagVo;
import com.yiring.auth.util.ZyUtil;
import com.yiring.common.core.Result;
import com.yiring.common.core.Status;
import com.yiring.common.param.IdParam;
......@@ -23,6 +25,7 @@ import com.yiring.common.vo.PageVo;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Serializable;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
......@@ -65,6 +68,14 @@ public class LocationTagServiceImpl implements LocationTagService {
if (hasLocationTagInfoByCode(param.getCode())) return Result.no(Status.BAD_REQUEST, "编号已存在");
LocationTag locationTag = param.transform();
locationTagRepository.save(locationTag);
ZyLocationTagAddParam zyLocationTagAddParam = ZyLocationTagAddParam.transform(locationTag);
List<ZyLocationTagAddParam> of = ListUtil.of(zyLocationTagAddParam);
new Thread(() -> {
Result<Serializable> result = ZyUtil.post("/positionApi/api/tag/saveTag", of, 3000);
if (result.getCode() != 200) throw new RuntimeException(result.getMessage());
})
.start();
return Result.ok();
}
......
......@@ -28,7 +28,7 @@ import org.springframework.web.multipart.MultipartFile;
@Slf4j
@Validated
@Api(tags = "职位信息")
@Api(tags = "定位标签")
@RestController
@RequestMapping("/location/tag/")
public class LocationTagController {
......
......@@ -18,12 +18,17 @@ dependencies {
// hutool-core
implementation "cn.hutool:hutool-core:${hutoolVersion}"
// hutool-json
implementation "cn.hutool:hutool-json:${hutoolVersion}"
// hutool-http
implementation "cn.hutool:hutool-http:${hutoolVersion}"
// fastjson
implementation "com.alibaba:fastjson:${fastJsonVersion}"
// myexcel
implementation "com.github.liaochong:myexcel:${myexcelVersion}"
// hutool-http
implementation "cn.hutool:hutool-http:${hutoolVersion}"
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.auth.config;
import java.time.Duration;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializationContext;
import org.springframework.data.redis.serializer.StringRedisSerializer;
/**
* Redis Config
* @author LJ-2204
* @date 2022/4/15
*/
@EnableCaching
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(stringRedisSerializer);
redisTemplate.setHashKeySerializer(stringRedisSerializer);
redisTemplate.setDefaultSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setEnableTransactionSupport(true);
redisTemplate.setConnectionFactory(factory);
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
@Bean
public RedisCacheManager cacheManager(RedisConnectionFactory connectionFactory) {
RedisCacheConfiguration config = RedisCacheConfiguration
.defaultCacheConfig()
.entryTtl(Duration.ofMinutes(5))
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
.serializeValuesWith(
RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer())
)
.disableCachingNullValues();
return RedisCacheManager.builder(connectionFactory).cacheDefaults(config).transactionAware().build();
}
@Bean
public RedisMessageListenerContainer redisMessageListenerContainer(RedisConnectionFactory redisConnectionFactory) {
RedisMessageListenerContainer redisMessageListenerContainer = new RedisMessageListenerContainer();
redisMessageListenerContainer.setConnectionFactory(redisConnectionFactory);
return redisMessageListenerContainer;
}
}
......@@ -17,51 +17,51 @@ import javax.servlet.http.HttpServletResponse;
public interface PostService {
/**
* 新增职位信息
* @param postParam
* @param postParam 入参
* @return Result<String>
*/
Result<String> addPost(PostParam postParam);
/**
* 修改职位信息
* @param postParam
* @param idParam
* @param postParam 入参
* @param idParam id
* @return Result<String>
*/
Result<String> modifyPost(PostParam postParam, IdParam idParam);
/**
* 销毁职位信息
* @param idParam
* @return
* @param idParam id
* @return Result<String>
*/
Result<String> deletePost(IdParam idParam);
/**
* 职位信息分页
* @param param
* @return
* @param param 入参
* @return Result<PageVo<PostVo>>
*/
Result<PageVo<PostVo>> findPostPage(PostFindParam param);
/**
* 详细信息查询
* @param idParam
* @return
* @param idParam id
* @return Result<PostVo>
*/
Result<PostVo> findPostById(IdParam idParam);
/**
* 根据名称判断是否存在职业信息
* @param name
* @return
* @param name 职业名称
* @return T/F
*/
boolean hasPostInfo(String name);
/**
* 导出职位信息
* @param param
* @param response
* @param param 入参
* @param response 响应信息
*/
void exportPostInfo(PostFindParam param, HttpServletResponse response);
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.auth.util;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.Header;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.yiring.common.core.Result;
import com.yiring.common.util.BeanUtils;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import lombok.experimental.UtilityClass;
import org.springframework.data.redis.core.RedisTemplate;
/**
* 真源授权工具
* @author LJ-2204
* @date 2022/4/15
*/
@UtilityClass
public class ZyUtil {
RedisTemplate<String, Object> redisTemplate;
static {
redisTemplate = BeanUtils.getBean("redisTemplate");
}
public final String CLIENT_ID = "sc21080400";
public final String CLIENT_SECRET = "12A14FDC";
public final String GRANT_TYPE = "client_credentials";
public final String KEY = "zy_token";
public final String TOKEN_TYPE = "bearer ";
public final String URL_PREFIX = "http://project.yz-online.com:789";
/**
* 获取token
* @return token
*/
public static String login() {
Object obj = redisTemplate.opsForValue().get(KEY);
if (ObjectUtil.isNotEmpty(obj)) {
return String.valueOf(obj);
}
Map<String, Object> map = MapUtil.createMap(HashMap.class);
map.put("client_id", CLIENT_ID);
map.put("client_secret", CLIENT_SECRET);
map.put("grant_type", GRANT_TYPE);
String json = HttpUtil.get("http://project.yz-online.com:789/positionApi/oauth/token", map);
Map result = JSON.parseObject(json, Map.class);
String access_token = result.get("access_token").toString();
redisTemplate.opsForValue().set(KEY, access_token, 1200, TimeUnit.SECONDS);
return access_token;
}
/**
* 判断token是否有效
* @return T/F
*/
public static boolean getToken() {
return ObjectUtil.isNotEmpty(redisTemplate.opsForValue().get(KEY));
}
/**
* get请求
* @param urlString 路径
* @param obj 参数
* @param timeout 请求时长
* @return json
*/
public static Result get(String urlString, Object obj, int timeout) {
String json = JSONUtil.toJsonStr(obj);
String token = login();
String body = HttpRequest
.get(URL_PREFIX + urlString)
.header(Header.AUTHORIZATION, TOKEN_TYPE + token)
.header(Header.CONTENT_TYPE, "application/json")
.body(json)
.timeout(timeout)
.execute()
.body();
return getResult(body);
}
/**
* post请求
* @param urlString 路径
* @param obj 参数
* @param timeout 请求时长
* @return json
*/
public static Result<Serializable> post(String urlString, Object obj, int timeout) {
String json = JSONUtil.toJsonStr(obj);
String token = login();
String body = HttpRequest
.post(URL_PREFIX + urlString)
.header(Header.AUTHORIZATION, TOKEN_TYPE + token)
.header(Header.CONTENT_TYPE, "application/json")
.body(json)
.timeout(timeout)
.execute()
.body();
return getResult(body);
}
/**
* put请求
* @param urlString 路径
* @param obj 参数
* @param timeout 请求时长
* @return json
*/
public static Result<Serializable> put(String urlString, Object obj, int timeout) {
String json = JSONUtil.toJsonStr(obj);
String token = login();
String body = HttpRequest
.put(URL_PREFIX + urlString)
.header(Header.AUTHORIZATION, TOKEN_TYPE + token)
.header(Header.CONTENT_TYPE, "application/json")
.body(json)
.timeout(timeout)
.execute()
.body();
return getResult(body);
}
/**
* delete请求
* @param urlString 路径
* @param obj 参数
* @param timeout 请求时长
* @return json
*/
public static Result<Serializable> delete(String urlString, Object obj, int timeout) {
String json = JSONUtil.toJsonStr(obj);
String token = login();
String body = HttpRequest
.delete(URL_PREFIX + urlString)
.header(Header.AUTHORIZATION, TOKEN_TYPE + token)
.header(Header.CONTENT_TYPE, "application/json")
.body(json)
.timeout(timeout)
.execute()
.body();
return getResult(body);
}
/**
* 返回类型转换
* @param body json
* @return Result
*/
private static Result<Serializable> getResult(String body) {
Map map = JSONUtil.toBean(body, Map.class);
Integer code = Convert.toInt(map.get("code"));
String msg = Convert.toStr(map.get("msg"));
return Result.builder().code(code).message(msg).build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.common.util;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
@Component
public class BeanUtils implements ApplicationContextAware {
/**
* 以静态变量保存ApplicationContext,可在任意代码中取出ApplicaitonContext.
*/
private static ApplicationContext context;
/**
* 实现ApplicationContextAware接口的context注入函数, 将其存入静态变量.
*/
@Override
public void setApplicationContext(ApplicationContext context) {
BeanUtils.context = context;
}
public static ApplicationContext getApplicationContext() {
return context;
}
/**
* 从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型. 方法返回值的类型由调用者决定
*/
public static <T> T getBean(String name) {
return (T) context.getBean(name);
}
/// 获取当前环境
public String getActiveProfile() {
return context.getEnvironment().getActiveProfiles()[0];
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论