Commit 18f6739b authored by hezhen's avatar hezhen

Merge branch 'base-modify' of http://113.105.137.151:22280/youjj/cloud-platform into base-modify

parents 82a4bc51 2e228cf6
...@@ -4,11 +4,12 @@ import java.util.HashMap; ...@@ -4,11 +4,12 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
public enum RegionType { public enum RegionType {
ALL(-1,"全国"),//这一类型不存在db中,只是用于查询所有国家 COUNTRY(-1,"国家"),//这一类型不存在db中,只是用于查询所有国家
COUNTRY(0,"国家"), REGION(0,"地区"),
PROVINCE(1,"省/直辖市"), PROVINCE(1,"省/直辖市"),
CITY(2,"市"), CITY(2,"市"),
TOWN(3,"镇/县"), PREFECTUR(3,"县"),
TOWN(4,"镇"),
; ;
/** /**
......
package com.xxfc.platform.vehicle.entity;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Id;
import java.util.Date;
@Data
public class Area {
/**
* 主键
*/
@Id
private Integer id;
private String name;
/**
* 省份id字符串,多个以逗号隔开
*/
@Column(name = "province_ids")
private String provinceIds;
/**
* 创建时间
*/
@Column(name = "create_time")
private Date createTime;
/**
* 修改时间
*/
@Column(name = "update_time")
private Date updateTime;
}
...@@ -126,7 +126,7 @@ public class AddOrUpdateVehicleVo { ...@@ -126,7 +126,7 @@ public class AddOrUpdateVehicleVo {
/** /**
* 车型 * 车型
*/ */
private Integer modeLId; private Integer modelId;
/** /**
* 车辆状态 * 车辆状态
*/ */
......
package com.xxfc.platform.vehicle.biz;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.xxfc.platform.vehicle.entity.Area;
import com.xxfc.platform.vehicle.mapper.AreaMapper;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Service;
@Service
public class AreaBiz extends BaseBiz<AreaMapper, Area> {
}
...@@ -68,45 +68,53 @@ public class SysRegionBiz extends BaseBiz<SysRegionMapper, SysRegion> { ...@@ -68,45 +68,53 @@ public class SysRegionBiz extends BaseBiz<SysRegionMapper, SysRegion> {
//获取相应地区类型对应在id的位数,作为对应parent查找其下地区的redis key组成部分 //获取相应地区类型对应在id的位数,作为对应parent查找其下地区的redis key组成部分
private String getPrefixOfAgencyId(Integer type,Long parentId){ private String getPrefixOfAgencyId(Integer type,Long parentId){
switch(type){ // switch(type){
case -1: // case -1:
return String.valueOf(-1); // return String.valueOf(0);
case 0: // case 0:
return String.valueOf(0); // return String.valueOf(1);
case 1: // case 1:
return String.valueOf(parentId).substring(0,2); // return String.valueOf(parentId);
case 2: // case 2:
return String.valueOf(parentId).substring(0,4); // return String.valueOf(parentId).substring(0,2);
default: // case 3:
throw new CustomIllegalParamException("not valid region"); // return String.valueOf(parentId).substring(0,4);
} // case 4:
// return String.valueOf(parentId);
// default:
// throw new CustomIllegalParamException("not valid region");
// }
return String.valueOf(parentId);
} }
//获取相应地区类型对应在id的位数,作为对应parent查找其下地区的redis key组成部分 //获取相应地区类型对应在id的位数,作为对应parent查找其下地区的redis key组成部分
private String getPrefixOfAgencyId(Long parentId){ // private String getPrefixOfAgencyId(Long parentId){
Integer type = getTypeFromId(parentId); // Integer type = getTypeFromId(parentId);
return getPrefixOfAgencyId(type,parentId); // return getPrefixOfAgencyId(type,parentId);
} // }
/** /**
* 根据id获得所属类型 * 根据id获得所属类型
* @param id * @param parentId
* @return * @return
*/ */
private Integer getTypeFromId(Long id){ // private Integer getTypeFromId(Long parentId){
if(id == 0){ // if(parentId == 0) {//国家type-1
return RegionType.ALL.getCode(); // return RegionType.COUNTRY.getCode();
}if(id < 10){ // }if (parentId<2){//地区type 0
return RegionType.COUNTRY.getCode(); // return RegionType.REGION.getCode();
}else if(id%100>0){//第1、2非零,即3级地区 // }if(parentId < 20){//省type 1
return RegionType.TOWN.getCode(); // return RegionType.PROVINCE.getCode();
}else if(id%10000>0){//第1、2为零,第3、4位非0,即2级地区 // }else if(parentId%100>0){//第1、2非零,即3级地区 镇一级type 4
return RegionType.CITY.getCode(); // return RegionType.TOWN.getCode();
}else{//第1、2、3、4为零,第5、6位非0,即2级地区 // }else if(parentId%10000>0){//第1、2为零,第3、4位非0,即2级地区 县type 3
return RegionType.PROVINCE.getCode(); // return RegionType.PREFECTUR.getCode();
} // }else{//第1、2、3、4为零,第5、6位非0,即2级地区 市type 2
} // return RegionType.CITY.getCode();
// }
// }
/** /**
* 获取对应redis中的hash的key * 获取对应redis中的hash的key
...@@ -115,7 +123,7 @@ public class SysRegionBiz extends BaseBiz<SysRegionMapper, SysRegion> { ...@@ -115,7 +123,7 @@ public class SysRegionBiz extends BaseBiz<SysRegionMapper, SysRegion> {
*/ */
private String getCacheRedisKey(Long parentId){ private String getCacheRedisKey(Long parentId){
//获取相应地区类型对应在agencyId的位数 //获取相应地区类型对应在agencyId的位数
return RedisKey.SYS_REGION_SONS_CACHE_PREFIX +getPrefixOfAgencyId(parentId); return RedisKey.SYS_REGION_SONS_CACHE_PREFIX +parentId;
} }
/** /**
...@@ -140,10 +148,10 @@ public class SysRegionBiz extends BaseBiz<SysRegionMapper, SysRegion> { ...@@ -140,10 +148,10 @@ public class SysRegionBiz extends BaseBiz<SysRegionMapper, SysRegion> {
return getSonRegionNoCache(id); return getSonRegionNoCache(id);
} }
public List<SysRegion> getSonRegionNoCache(Long id){ public List<SysRegion> getSonRegionNoCache(Long parentId){
//从db中查询 //从db中查询
SysRegion param = new SysRegion(); SysRegion param = new SysRegion();
param.setParentId(id); param.setParentId(parentId);
return mapper.select(param); return mapper.select(param);
} }
...@@ -158,15 +166,15 @@ public class SysRegionBiz extends BaseBiz<SysRegionMapper, SysRegion> { ...@@ -158,15 +166,15 @@ public class SysRegionBiz extends BaseBiz<SysRegionMapper, SysRegion> {
/** /**
* 刷新其孩子节点到缓存,并对其孩子迭代执行此操作 * 刷新其孩子节点到缓存,并对其孩子迭代执行此操作
* @param id * @param parentId
*/ */
private void refreshCacheRegionAndSon(Long id){ private void refreshCacheRegionAndSon(Long parentId){
List<SysRegion> sonRegions = getSonRegionNoCache(id); List<SysRegion> sonRegions = getSonRegionNoCache(parentId);
//把当前节点的子节点数据缓存 //把当前节点的子节点数据缓存
String redisKey = getCacheRedisKey(id); String redisKey = getCacheRedisKey(parentId);
customRedisTemplate.opsForValue().set(redisKey,JSON.toJSON(sonRegions).toString()); customRedisTemplate.opsForValue().set(redisKey,JSON.toJSON(sonRegions).toString());
log.info("完成地区【"+id+"】的子地区数据缓存"); log.info("完成地区【"+parentId+"】的子地区数据缓存");
if(CollectionUtils.isEmpty(sonRegions) || getTypeFromId(id).equals(RegionType.CITY.getCode())){ if(CollectionUtils.isEmpty(sonRegions) || sonRegions.get(0).getType().equals(RegionType.CITY.getCode())){
return; return;
} }
for(SysRegion sonRegion:sonRegions){ for(SysRegion sonRegion:sonRegions){
...@@ -180,7 +188,7 @@ public class SysRegionBiz extends BaseBiz<SysRegionMapper, SysRegion> { ...@@ -180,7 +188,7 @@ public class SysRegionBiz extends BaseBiz<SysRegionMapper, SysRegion> {
* 5分钟内刷新数据到缓存 * 5分钟内刷新数据到缓存
*/ */
@Scheduled(cron = "0 */5 * * * *")//每5分钟刷新一次数据 @Scheduled(cron = "0 */5 * * * *")//每5分钟刷新一次数据
public void refreshCache(){ public void refreshCache(){
String redisLockKey = RedisKey.SYS_REGION_REFRESH_LOCK +(DateTime.now().getMinuteOfDay()/5);//同一日每5分钟只刷新一次 String redisLockKey = RedisKey.SYS_REGION_REFRESH_LOCK +(DateTime.now().getMinuteOfDay()/5);//同一日每5分钟只刷新一次
Boolean suc = customRedisTemplate.opsForValue().setIfAbsent(redisLockKey, String.valueOf(DateTime.now().getMillis())); Boolean suc = customRedisTemplate.opsForValue().setIfAbsent(redisLockKey, String.valueOf(DateTime.now().getMillis()));
...@@ -203,4 +211,15 @@ public class SysRegionBiz extends BaseBiz<SysRegionMapper, SysRegion> { ...@@ -203,4 +211,15 @@ public class SysRegionBiz extends BaseBiz<SysRegionMapper, SysRegion> {
.build()); .build());
return selectByWeekendSql; return selectByWeekendSql;
} }
/**
* 通过属性获取省
* @param type
* @return
*/
public List<SysRegion> getSysRegionByType(Integer type){
SysRegion sysRegion = new SysRegion();
sysRegion.setType(type);
return mapper.select(sysRegion);
}
} }
package com.xxfc.platform.vehicle.mapper;
import com.xxfc.platform.vehicle.entity.Area;
import tk.mybatis.mapper.common.Mapper;
public interface AreaMapper extends Mapper<Area> {
}
...@@ -13,6 +13,7 @@ import com.xxfc.platform.vehicle.pojo.AddOrUpdateAccompanyingItem; ...@@ -13,6 +13,7 @@ import com.xxfc.platform.vehicle.pojo.AddOrUpdateAccompanyingItem;
import com.github.wxiaoqi.security.common.vo.PageDataVO; import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.vehicle.pojo.QueryAccompanyItemVo; import com.xxfc.platform.vehicle.pojo.QueryAccompanyItemVo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
...@@ -23,6 +24,9 @@ import java.util.List; ...@@ -23,6 +24,9 @@ import java.util.List;
@Slf4j @Slf4j
public class AccompanyingItemController extends BaseController<AccompanyingItemBiz> { public class AccompanyingItemController extends BaseController<AccompanyingItemBiz> {
@Autowired
AccompanyingItemBiz accompanyingItemBiz;
@RequestMapping(value ="/{id}",method = RequestMethod.GET) @RequestMapping(value ="/{id}",method = RequestMethod.GET)
private RestResponse<AccompanyingItem> get(@PathVariable Integer id) throws Exception{ private RestResponse<AccompanyingItem> get(@PathVariable Integer id) throws Exception{
return RestResponse.codeAndData(RestResponse.SUC_CODE,baseBiz.get(id)); return RestResponse.codeAndData(RestResponse.SUC_CODE,baseBiz.get(id));
...@@ -30,7 +34,7 @@ public class AccompanyingItemController extends BaseController<AccompanyingItemB ...@@ -30,7 +34,7 @@ public class AccompanyingItemController extends BaseController<AccompanyingItemB
@RequestMapping(value ="/all",method = RequestMethod.GET) @RequestMapping(value ="/all",method = RequestMethod.GET)
private RestResponse<List<AccompanyingItem>> getAll(){ private RestResponse<List<AccompanyingItem>> getAll(){
return RestResponse.codeAndData(RestResponse.SUC_CODE,baseBiz.getAll()); return RestResponse.codeAndData(RestResponse.SUC_CODE,accompanyingItemBiz.getAll());
} }
......
package com.xxfc.platform.vehicle.rest;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.vehicle.biz.AreaBiz;
import com.xxfc.platform.vehicle.common.RestResponse;
import com.xxfc.platform.vehicle.entity.Area;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/area")
@Slf4j
@IgnoreClientToken
public class AreaController extends BaseController<AreaBiz, Area> {
@GetMapping("/findAll")
public RestResponse<List<Area>> findAll(){
return RestResponse.suc(baseBiz.selectListAll());
}
}
...@@ -11,7 +11,10 @@ import com.xxfc.platform.vehicle.common.RestResponse; ...@@ -11,7 +11,10 @@ import com.xxfc.platform.vehicle.common.RestResponse;
import com.xxfc.platform.vehicle.constant.ResCode.ResCode; import com.xxfc.platform.vehicle.constant.ResCode.ResCode;
import com.xxfc.platform.vehicle.entity.SysRegion; import com.xxfc.platform.vehicle.entity.SysRegion;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.assertj.core.util.Arrays;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls;
import java.util.List; import java.util.List;
...@@ -22,12 +25,29 @@ import java.util.List; ...@@ -22,12 +25,29 @@ import java.util.List;
public class SysRegionController extends BaseController<SysRegionBiz> { public class SysRegionController extends BaseController<SysRegionBiz> {
/**
* 父类id获取子类对象
* @param id
* @return
*/
@IgnoreUserToken @IgnoreUserToken
@RequestMapping(value ="/sons/{id}",method = RequestMethod.GET) @RequestMapping(value ="/sons/{id}",method = RequestMethod.GET)
public RestResponse<List<SysRegion>> getSonRegion(@PathVariable Long id){ public RestResponse<List<SysRegion>> getSonRegion(@PathVariable Long id){
return RestResponse.data(baseBiz.getSonRegion(id)); return RestResponse.data(baseBiz.getSonRegion(id));
} }
/**
* 通过属性获取省
* @param type
* @return
*/
@IgnoreUserToken
@RequestMapping(value ="/getSonRegionByType/{type}",method = RequestMethod.GET)
public RestResponse<List<SysRegion>> getSysRegionByType(@PathVariable Integer type){
return RestResponse.data(baseBiz.getSysRegionByType(type));
}
@RequestMapping(value ="",method = RequestMethod.GET) @RequestMapping(value ="",method = RequestMethod.GET)
public RestResponse<List<SysRegion>> getRegion(@RequestParam String idListJson){ public RestResponse<List<SysRegion>> getRegion(@RequestParam String idListJson){
try { try {
...@@ -40,4 +60,19 @@ public class SysRegionController extends BaseController<SysRegionBiz> { ...@@ -40,4 +60,19 @@ public class SysRegionController extends BaseController<SysRegionBiz> {
} }
} }
/**
* 根据多个id查找省份
* @param ids
* @return
*/
@GetMapping("/getSysRegionByIds/{ids}")
public RestResponse getSysRegionByIds(@PathVariable String ids){
Example exam = Example.builder(SysRegion.class)
.where(WeekendSqls.<SysRegion>custom()
.andIn(SysRegion::getId, Arrays.asList(ids.split(",")))).build();
return RestResponse.suc( baseBiz.selectByExample(exam));
}
} }
...@@ -7,6 +7,7 @@ import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig; ...@@ -7,6 +7,7 @@ import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
import com.github.wxiaoqi.security.common.exception.BaseException; import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController; import com.github.wxiaoqi.security.common.rest.BaseController;
import com.github.wxiaoqi.security.common.util.Query;
import com.github.wxiaoqi.security.common.util.process.ResultCode; import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.vehicle.biz.VehicleBiz; import com.xxfc.platform.vehicle.biz.VehicleBiz;
import com.xxfc.platform.vehicle.biz.VehicleCataBiz; import com.xxfc.platform.vehicle.biz.VehicleCataBiz;
...@@ -287,4 +288,15 @@ public class VehicleModelController extends BaseController<VehicleModelBiz, Vehi ...@@ -287,4 +288,15 @@ public class VehicleModelController extends BaseController<VehicleModelBiz, Vehi
return ObjectRestResponse.succ(); return ObjectRestResponse.succ();
} }
@ApiOperation("查询所有")
@RequestMapping(value = "/findAll",method = RequestMethod.GET)
@ResponseBody
public ObjectRestResponse findAll(){
VehicleModel vehicleModel = new VehicleModel();
vehicleModel.setIsdel(0);
return ObjectRestResponse.succ(baseBiz.selectList(vehicleModel));
}
} }
\ No newline at end of file
...@@ -8,21 +8,25 @@ import cn.hutool.core.io.file.FileWriter; ...@@ -8,21 +8,25 @@ import cn.hutool.core.io.file.FileWriter;
import cn.hutool.core.util.PinyinUtil; import cn.hutool.core.util.PinyinUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.ace.cache.annotation.Cache;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.github.stuxuhai.jpinyin.PinyinHelper; import com.github.stuxuhai.jpinyin.PinyinHelper;
import com.github.wxiaoqi.security.common.msg.TableResultResponse; import com.github.wxiaoqi.security.common.msg.TableResultResponse;
import com.github.wxiaoqi.security.common.util.Query; import com.github.wxiaoqi.security.common.util.Query;
import com.xxfc.platform.vehicle.VehicleApplication; import com.xxfc.platform.vehicle.VehicleApplication;
import com.xxfc.platform.vehicle.biz.SysRegionBiz; import com.xxfc.platform.vehicle.biz.SysRegionBiz;
import com.xxfc.platform.vehicle.constant.RedisKey;
import com.xxfc.platform.vehicle.entity.SysRegion; import com.xxfc.platform.vehicle.entity.SysRegion;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import org.joda.time.DateTime;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -32,10 +36,14 @@ import java.util.List; ...@@ -32,10 +36,14 @@ import java.util.List;
@RunWith(SpringJUnit4ClassRunner.class) @RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes={VehicleApplication.class}) @SpringBootTest(classes={VehicleApplication.class})
public class RegionTest { public class RegionTest {
@Autowired
private RedisTemplate customRedisTemplate;
@Autowired @Autowired
SysRegionBiz sysRegionBiz; private SysRegionBiz sysRegionBiz;
// public static final String TEST_REDIS_KEY ="redis:{1}";
private final String TEST_REDIS_KEY ="redis:{1}";
@Data @Data
public class Title{ public class Title{
String title; String title;
...@@ -122,4 +130,35 @@ public class RegionTest { ...@@ -122,4 +130,35 @@ public class RegionTest {
writer.write(JSONUtil.toJsonStr(newCity)); writer.write(JSONUtil.toJsonStr(newCity));
System.out.println("test"); System.out.println("test");
} }
@Test
public void test1() {
int i = DateTime.now().getMinuteOfDay() / 5;
System.out.println("DateTime.now().getMinuteOfDay() / 5++++++++++++"+i);
String redisLockKey = RedisKey.SYS_REGION_REFRESH_LOCK +i;//同一日每5分钟只刷新一次
System.out.println("redisLockKey++++++++++++++++"+redisLockKey);
String s = String.valueOf(DateTime.now().getMillis());
System.out.println("s++++++++++++++++++"+s);
Boolean suc = customRedisTemplate.opsForValue().setIfAbsent(redisLockKey, s);
Boolean test1 = customRedisTemplate.opsForValue().setIfAbsent("1", "2");
Boolean test2 = customRedisTemplate.opsForValue().setIfAbsent("1", "3");
System.out.println("test1///////////////////////////////"+test1);
System.out.println("test2///////////////////////////////"+test2);
System.out.println("suc++++++++++++++++++++"+suc);
}
@Test
public void testRedis() {
SysRegion sysRegion = getSysRegion(1);
System.out.println("sysRegion+++++++++"+sysRegion);
System.out.println("TEST_REDIS_KEY+++++++++++" + TEST_REDIS_KEY);
}
@Cache(key = TEST_REDIS_KEY)
private SysRegion getSysRegion(int id){
SysRegion sysRegion = sysRegionBiz.selectById(2);
return sysRegion;
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment