Commit d7575e9e by jianan

国家地区查询接口1

parent d62bd948
package com.yd.user.api.controller;
import com.yd.common.result.Result;
import com.yd.user.api.service.ApiMdCountryService;
import com.yd.user.feign.client.mdCountry.ApiMdCountryFeignClient;
import com.yd.user.feign.response.mdCountry.ApiMdCountryGroupResponse;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* 国家地区基础信息
*
* @author jianan
* @since 2025-07-31
*/
@RestController
@RequestMapping("/mdCountry")
public class ApiMdCountryController implements ApiMdCountryFeignClient {
@Resource
private ApiMdCountryService apiMdCountryService;
@Override
public Result<ApiMdCountryGroupResponse> group() {
return apiMdCountryService.group();
}
}
package com.yd.user.api.service;
import com.yd.common.result.Result;
import com.yd.user.feign.response.mdCountry.ApiMdCountryGroupResponse;
public interface ApiMdCountryService {
Result<ApiMdCountryGroupResponse> group();
}
package com.yd.user.api.service.impl;
import com.yd.common.result.Result;
import com.yd.user.api.service.ApiMdCountryService;
import com.yd.user.feign.response.mdCountry.ApiMdCountryGroupResponse;
import com.yd.user.feign.response.mdCountry.ApiMdCountryVO;
import com.yd.user.service.model.MdCountry;
import com.yd.user.service.service.MdCountryService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class ApiMdCountryServiceImpl implements ApiMdCountryService {
@Resource
private MdCountryService mdCountryService;
@Override
public Result<ApiMdCountryGroupResponse> group() {
ApiMdCountryGroupResponse response = new ApiMdCountryGroupResponse();
// 全部国家
List<MdCountry> list = mdCountryService.list();
// model 转 VO
List<ApiMdCountryVO> groupList = list.stream().map(item -> {
ApiMdCountryVO vo = new ApiMdCountryVO();
vo.setName(item.getName());
vo.setCountryCode(item.getCountryCode());
vo.setGroup(item.getGroup());
vo.setAreaCode(item.getAreaCode());
vo.setHotRank(item.getHotRank());
return vo;
}).collect(Collectors.toList());
// 热门国家/地区
List<ApiMdCountryVO> hotList =groupList.stream().filter(item->item.getHotRank()!=9999).collect(Collectors.toList());
response.setHotCountries(hotList);
response.setGroupCountries(groupList);
return Result.success(response);
}
}
...@@ -13,6 +13,14 @@ ...@@ -13,6 +13,14 @@
<dependencies> <dependencies>
<!-- knife4j-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-spring-boot-starter</artifactId>
<version>4.3.0</version>
</dependency>
<dependency> <dependency>
<groupId>com.yd</groupId> <groupId>com.yd</groupId>
<artifactId>yd-feign</artifactId> <artifactId>yd-feign</artifactId>
......
package com.yd.user.feign.client.mdCountry;
import com.yd.common.result.Result;
import com.yd.user.feign.fallback.mdcountry.ApiMdCountryFeignFallbackFactory;
import com.yd.user.feign.response.mdCountry.ApiMdCountryGroupResponse;
import io.swagger.v3.oas.annotations.Operation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
@FeignClient(name = "yd-user-api", fallbackFactory = ApiMdCountryFeignFallbackFactory.class)
public interface ApiMdCountryFeignClient {
/**
* 查询所有国家地区
* @return
*/
@GetMapping("/group")
@Operation(summary = "查询所有国家地区")
Result<ApiMdCountryGroupResponse> group();
}
package com.yd.user.feign.fallback.mdcountry;
import com.yd.common.result.Result;
import com.yd.user.feign.client.mdCountry.ApiMdCountryFeignClient;
import com.yd.user.feign.response.mdCountry.ApiMdCountryGroupResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class ApiMdCountryFeignFallbackFactory implements FallbackFactory<ApiMdCountryFeignClient> {
@Override
public ApiMdCountryFeignClient create(Throwable cause) {
return new ApiMdCountryFeignClient() {
@Override
public Result<ApiMdCountryGroupResponse> group() {
return null;
}
};
}
}
package com.yd.user.feign.response.mdCountry;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Data
public class ApiMdCountryGroupResponse {
/**
* 全部国家
*/
@Schema(description = "全部国家")
private List<ApiMdCountryVO> groupCountries;
/**
* 热门国家/地区
*/
@Schema(description = "热门国家/地区")
private List<ApiMdCountryVO> hotCountries;
}
package com.yd.user.feign.response.mdCountry;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(description = "国家地区信息")
public class ApiMdCountryVO {
/**
* 国家名称
*/
@Schema(description = "国家名称")
private String name;
/**
* 国家代码
*/
@Schema(description = "国家代码")
private String countryCode;
/**
* 国家分组
*/
@Schema(description = "国家分组")
private String group;
/**
* 地区代码
*/
@Schema(description = "地区代码")
private String areaCode;
/**
* 热门排名
*/
@Schema(description = "热门排名")
private Integer hotRank;
}
package com.yd.user.service.dao;
import com.yd.user.service.model.MdCountry;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author Zhang Jianan
* @description 针对表【md_country(国庆地区基础表)】的数据库操作Mapper
* @createDate 2025-09-10 13:34:54
* @Entity generator.domain.MdCountry
*/
public interface MdCountryMapper extends BaseMapper<MdCountry> {
}
package com.yd.user.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 国庆地区基础表
* @TableName md_country
*/
@TableName(value ="md_country")
@Data
public class MdCountry implements Serializable {
/**
*
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 唯一标识(业务ID)
*/
private String countryBizId;
/**
* 国家名称
*/
private String name;
/**
* 国家代码
*/
private String countryCode;
/**
* 联系电话
*/
private String group;
/**
* 地区代码
*/
private String areaCode;
/**
* 热门排名
*/
private Integer hotRank;
/**
* 通用备注
*/
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
private Integer isDeleted;
/**
* 创建人ID
*/
private String creatorId;
/**
* 更新人ID
*/
private String updaterId;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package com.yd.user.service.service;
import com.yd.user.service.model.MdCountry;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @author Zhang Jianan
* @description 针对表【md_country(国庆地区基础表)】的数据库操作Service
* @createDate 2025-09-10 13:34:54
*/
public interface MdCountryService extends IService<MdCountry> {
}
package com.yd.user.service.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yd.user.service.model.MdCountry;
import com.yd.user.service.service.MdCountryService;
import com.yd.user.service.dao.MdCountryMapper;
import org.springframework.stereotype.Service;
/**
* @author Zhang Jianan
* @description 针对表【md_country(国庆地区基础表)】的数据库操作Service实现
* @createDate 2025-09-10 13:34:54
*/
@Service
public class MdCountryServiceImpl extends ServiceImpl<MdCountryMapper, MdCountry>
implements MdCountryService{
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yd.user.service.dao.MdCountryMapper">
<resultMap id="BaseResultMap" type="com.yd.user.service.model.MdCountry">
<id property="id" column="id" />
<result property="countryBizId" column="country_biz_id" />
<result property="name" column="name" />
<result property="countryCode" column="country_code" />
<result property="group" column="group" />
<result property="areaCode" column="area_code" />
<result property="hotRank" column="hot_rank" />
<result property="remark" column="remark" />
<result property="isDeleted" column="is_deleted" />
<result property="creatorId" column="creator_id" />
<result property="updaterId" column="updater_id" />
<result property="createTime" column="create_time" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="Base_Column_List">
id,country_biz_id,name,country_code,group,area_code,
hot_rank,remark,is_deleted,creator_id,updater_id,
create_time,update_time
</sql>
</mapper>
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