diff --git a/src/main/java/com/sczx/store/Application.java b/src/main/java/com/sczx/store/Application.java index 8aef6c1..8568493 100644 --- a/src/main/java/com/sczx/store/Application.java +++ b/src/main/java/com/sczx/store/Application.java @@ -30,6 +30,6 @@ public class Application { ConfigurableApplicationContext context = SpringApplication.run(Application.class, args); Environment environment = context.getBean(Environment.class); System.out.println("启动成功,后端服务API地址:http://" + ComputerInfo.getIpAddr() + ":" - + environment.getProperty("server.port") + "/doc.html"); + + environment.getProperty("server.port") + "/swagger-ui.html"); } } diff --git a/src/main/java/com/sczx/store/controller/StoreClientController.java b/src/main/java/com/sczx/store/controller/StoreClientController.java new file mode 100644 index 0000000..71a4571 --- /dev/null +++ b/src/main/java/com/sczx/store/controller/StoreClientController.java @@ -0,0 +1,37 @@ +package com.sczx.store.controller; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.sczx.store.dto.CompanyStoreDTO; +import com.sczx.store.dto.req.StoreDistanceReq; +import com.sczx.store.service.StoreService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + *

+ * 门店 前端控制器 + *

+ * + * @author zhangli + * @since 2025-07-08 21:16:36 + */ +@Api(value = "门店用户端接口", tags = "用户端接口") +@RestController +@RequestMapping("/client") +public class StoreClientController { + + @Autowired + private StoreService storeService; + + @ApiOperation(value = "根据经纬度查询门店信息") + @PostMapping("/listStoresByBBoxWithDistance") + ResponseEntity> listStoresByBBoxWithDistance(@RequestParam("pageNo") Integer pageNo, @RequestParam("size") Integer size, @RequestBody StoreDistanceReq storeDistanceReq){ + return ResponseEntity.ok(storeService.listStoresByBBoxWithDistance(storeDistanceReq, pageNo, size)); + } +} diff --git a/src/main/java/com/sczx/store/controller/StoreManageController.java b/src/main/java/com/sczx/store/controller/StoreManageController.java new file mode 100644 index 0000000..60642cf --- /dev/null +++ b/src/main/java/com/sczx/store/controller/StoreManageController.java @@ -0,0 +1,21 @@ +package com.sczx.store.controller; + + +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 门店 前端控制器 + *

+ * + * @author zhangli + * @since 2025-07-08 21:16:36 + */ +@Api(value = "门店管理端接口", produces = "管理端接口") +@RestController +@RequestMapping("/client") +public class StoreManageController { + +} diff --git a/src/main/java/com/sczx/store/dto/CompanyStoreDTO.java b/src/main/java/com/sczx/store/dto/CompanyStoreDTO.java new file mode 100644 index 0000000..65df3af --- /dev/null +++ b/src/main/java/com/sczx/store/dto/CompanyStoreDTO.java @@ -0,0 +1,58 @@ +package com.sczx.store.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "CompanyStoreDTO对象", description = "门店信息") +public class CompanyStoreDTO { + + @ApiModelProperty("主键id") + private Integer id; + + @ApiModelProperty("门店名称") + private String name; + + @ApiModelProperty("联系人") + private String contactPerson; + + @ApiModelProperty("手机号码") + private String phone; + + @ApiModelProperty("联系人2") + private String contactPerson2; + + @ApiModelProperty("手机号码2") + private String phone2; + + + @ApiModelProperty("详细地址") + private String detailedAddress; + + @ApiModelProperty("门店logo") + private String image; + + @ApiModelProperty("纬度") + private Double latitude; + + @ApiModelProperty("经度") + private Double longitude; + + @ApiModelProperty("标签 1.可租车 2.可换电 3.二手车,多个用,号隔开,例如1,2,3") + private String label; + + @ApiModelProperty("运营公司id") + private Integer operatingCompanyId; + + @ApiModelProperty("运营性质 1.直营 0.合作") + private Boolean operatingNature; + + @ApiModelProperty("简介") + private String introduction; + + + @ApiModelProperty("门店编号") + private String storeNumber; + +} diff --git a/src/main/java/com/sczx/store/dto/req/StoreDistanceReq.java b/src/main/java/com/sczx/store/dto/req/StoreDistanceReq.java new file mode 100644 index 0000000..daea646 --- /dev/null +++ b/src/main/java/com/sczx/store/dto/req/StoreDistanceReq.java @@ -0,0 +1,23 @@ +package com.sczx.store.dto.req; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "StoreDistanceReq对象", description = "地图上查询门店信息请求") +@Data +public class StoreDistanceReq { + + @ApiModelProperty(value = "最大纬度") + private Double minLat; + @ApiModelProperty(value = "最小纬度") + private Double maxLat; + @ApiModelProperty(value = "最大经度") + private Double minLng; + @ApiModelProperty(value = "最小经度") + private Double maxLng; + @ApiModelProperty(value = "当前位置纬度") + private Double currentLat; + @ApiModelProperty(value = "当前位置经度") + private Double currentLng; +} diff --git a/src/main/java/com/sczx/store/exception/GlobalExceptionHandler.java b/src/main/java/com/sczx/store/exception/GlobalExceptionHandler.java new file mode 100644 index 0000000..66cb231 --- /dev/null +++ b/src/main/java/com/sczx/store/exception/GlobalExceptionHandler.java @@ -0,0 +1,47 @@ +package com.sczx.store.exception; + + +import lombok.extern.slf4j.Slf4j; + +import org.springframework.http.ResponseEntity; + +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.servlet.http.HttpServletRequest; +import java.util.Map; + +/** + * 应用模块名称

+ *

+ * 代码描述

+ *

+ * Copyright: Copyright (C) 2021 CD Finance Management Co., Ltd. All rights reserved.

+ *

+ * Company: 中和农信项目管理有限公司

+ * + * @author zhonghui + * @since 2021/9/13 2:46 PM + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + + + /** + * 处理自定义的业务异常 + * + * @param req + * @param e + * @return + */ + @ExceptionHandler(value = Exception.class) + @ResponseBody + public ResponseEntity bizExceptionHandler(HttpServletRequest req, Exception e) { + log.error("服务器异常!原因是:{}",e.getMessage(), e); + return ResponseEntity.noContent().build(); + } + + +} diff --git a/src/main/java/com/sczx/store/mapper/CompanyStoreMapper.java b/src/main/java/com/sczx/store/mapper/CompanyStoreMapper.java new file mode 100644 index 0000000..0cb3510 --- /dev/null +++ b/src/main/java/com/sczx/store/mapper/CompanyStoreMapper.java @@ -0,0 +1,23 @@ +package com.sczx.store.mapper; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.sczx.store.dto.CompanyStoreDTO; +import com.sczx.store.dto.req.StoreDistanceReq; +import com.sczx.store.po.CompanyStorePO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 门店 Mapper 接口 + *

+ * + * @author zhangli + * @since 2025-07-08 21:16:36 + */ +public interface CompanyStoreMapper extends BaseMapper { + IPage listStoresByBBoxWithDistance(Page page, @Param("storeDistanceReq") StoreDistanceReq storeDistanceReq); +} diff --git a/src/main/java/com/sczx/store/po/CompanyStorePO.java b/src/main/java/com/sczx/store/po/CompanyStorePO.java new file mode 100644 index 0000000..5227215 --- /dev/null +++ b/src/main/java/com/sczx/store/po/CompanyStorePO.java @@ -0,0 +1,177 @@ +package com.sczx.store.po; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 门店 + *

+ * + * @author zhangli + * @since 2025-07-08 21:16:36 + */ +@Getter +@Setter +@TableName("zc_company_store") +@ApiModel(value = "CompanyStorePO对象", description = "门店") +public class CompanyStorePO implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("门店名称") + private String name; + + @ApiModelProperty("联系人") + private String contactPerson; + + @ApiModelProperty("手机号码") + private String phone; + + @ApiModelProperty("联系人2") + private String contactPerson2; + + @ApiModelProperty("手机号码2") + private String phone2; + + @ApiModelProperty("省份") + private String provinceId; + + @ApiModelProperty("省份") + private String provinceName; + + @ApiModelProperty("城市") + private String cityId; + + @ApiModelProperty("城市") + private String cityName; + + @ApiModelProperty("区县") + private String areaId; + + @ApiModelProperty("城市") + private String areaName; + + @ApiModelProperty("省市区") + private String address; + + @ApiModelProperty("详细地址") + private String detailedAddress; + + @ApiModelProperty("门店logo") + private String image; + + @ApiModelProperty("纬度") + private Double latitude; + + @ApiModelProperty("经度") + private Double longitude; + + @ApiModelProperty("合同签订日期") + private String contractDate; + + @ApiModelProperty("每日营业开关时间") + private String dayTime; + + @ApiModelProperty("每日营业开始时间") + private String startTime; + + @ApiModelProperty("每日营业结束时间") + private String endTime; + + @ApiModelProperty("是否显示") + private Boolean isShow; + + @ApiModelProperty("是否删除") + private Boolean isDel; + + @ApiModelProperty("租车订单分成比例") + private BigDecimal zucheRatio; + + @ApiModelProperty("租电订单分成比例") + private BigDecimal zudianRatio; + + @ApiModelProperty("以租代售分成比例") + private BigDecimal daishouRatio; + + @ApiModelProperty("标签 1.可租车 2.可换电 3.二手车,多个用,号隔开,例如1,2,3") + private String label; + + @ApiModelProperty("运营公司id") + private Integer operatingCompanyId; + + @ApiModelProperty("运营性质 1.直营 0.合作") + private Boolean operatingNature; + + @ApiModelProperty("简介") + private String introduction; + + @ApiModelProperty("对公账号") + private String bankAccount; + + @ApiModelProperty("门店编号") + private String storeNumber; + + @ApiModelProperty("营业执照") + private String businessLicenseImg; + + @ApiModelProperty("审核状态 0.未审核 1.审核通过 2.审核未通过") + private Boolean auditStatus; + + @ApiModelProperty("审核时间") + private LocalDateTime auditTime; + + @ApiModelProperty("审核人id") + private Integer auditorId; + + @ApiModelProperty("所属用户id") + private Integer userId; + + @ApiModelProperty("是否允许回收退租天数 0.不允许 1.允许") + private Boolean isReturnAllowed; + + @ApiModelProperty("企业套餐保证金") + private BigDecimal mealDepositPrice; + + @ApiModelProperty("企业充值订单数限制") + private Integer orderNumLimit; + + @ApiModelProperty("创建人") + private String createBy; + + @ApiModelProperty("添加时间") + private LocalDateTime createTime; + + @ApiModelProperty("修改人") + private String updateBy; + + @ApiModelProperty("更新时间") + private LocalDateTime updateTime; + + private String delFlag; + + private String status; + + private String extend1; + + private String extend2; + + private String extend3; + + private String extend4; + + private String extend5; + + +} diff --git a/src/main/java/com/sczx/store/repository/CompanyStoreRepo.java b/src/main/java/com/sczx/store/repository/CompanyStoreRepo.java new file mode 100644 index 0000000..b3cc660 --- /dev/null +++ b/src/main/java/com/sczx/store/repository/CompanyStoreRepo.java @@ -0,0 +1,22 @@ +package com.sczx.store.repository; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.sczx.store.dto.CompanyStoreDTO; +import com.sczx.store.dto.req.StoreDistanceReq; +import com.sczx.store.po.CompanyStorePO; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 门店 服务类 + *

+ * + * @author zhangli + * @since 2025-07-08 21:16:36 + */ +public interface CompanyStoreRepo extends IService { + + IPage listStoresByBBoxWithDistance(StoreDistanceReq storeDistanceReq,Integer pageNo, Integer size); +} diff --git a/src/main/java/com/sczx/store/repository/impl/CompanyStoreRepoImpl.java b/src/main/java/com/sczx/store/repository/impl/CompanyStoreRepoImpl.java new file mode 100644 index 0000000..8385d24 --- /dev/null +++ b/src/main/java/com/sczx/store/repository/impl/CompanyStoreRepoImpl.java @@ -0,0 +1,33 @@ +package com.sczx.store.repository.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.sczx.store.dto.CompanyStoreDTO; +import com.sczx.store.dto.req.StoreDistanceReq; +import com.sczx.store.po.CompanyStorePO; +import com.sczx.store.mapper.CompanyStoreMapper; +import com.sczx.store.repository.CompanyStoreRepo; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; + +/** + *

+ * 门店 服务实现类 + *

+ * + * @author zhangli + * @since 2025-07-08 21:16:36 + */ +@Service +public class CompanyStoreRepoImpl extends ServiceImpl implements CompanyStoreRepo { + + @Override + public IPage listStoresByBBoxWithDistance(StoreDistanceReq storeDistanceReq, Integer pageNo, Integer size) { + Page page = new Page<>(pageNo, size); + return this.getBaseMapper().listStoresByBBoxWithDistance(page, storeDistanceReq); + } +} diff --git a/src/main/java/com/sczx/store/service/StoreService.java b/src/main/java/com/sczx/store/service/StoreService.java new file mode 100644 index 0000000..d68da1b --- /dev/null +++ b/src/main/java/com/sczx/store/service/StoreService.java @@ -0,0 +1,16 @@ +package com.sczx.store.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.sczx.store.dto.CompanyStoreDTO; +import com.sczx.store.dto.req.StoreDistanceReq; + + +public interface StoreService { + /** + * 根据经纬度获取门店信息 + * + * @param storeDistanceReq + * @return + */ + IPage listStoresByBBoxWithDistance(StoreDistanceReq storeDistanceReq, Integer pageNo, Integer size); +} diff --git a/src/main/java/com/sczx/store/service/impl/StoreServiceImpl.java b/src/main/java/com/sczx/store/service/impl/StoreServiceImpl.java new file mode 100644 index 0000000..82bb2e4 --- /dev/null +++ b/src/main/java/com/sczx/store/service/impl/StoreServiceImpl.java @@ -0,0 +1,23 @@ +package com.sczx.store.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.sczx.store.dto.CompanyStoreDTO; +import com.sczx.store.dto.req.StoreDistanceReq; +import com.sczx.store.repository.CompanyStoreRepo; +import com.sczx.store.service.StoreService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; + +@Service +public class StoreServiceImpl implements StoreService { + + @Autowired + private CompanyStoreRepo companyStoreRepo; + @Override + public IPage listStoresByBBoxWithDistance(StoreDistanceReq storeDistanceReq, Integer pageNo, Integer size) { + return companyStoreRepo.listStoresByBBoxWithDistance(storeDistanceReq,pageNo,size); + } +} diff --git a/src/main/resources/mapper/CompanyStoreMapper.xml b/src/main/resources/mapper/CompanyStoreMapper.xml new file mode 100644 index 0000000..defbbd5 --- /dev/null +++ b/src/main/resources/mapper/CompanyStoreMapper.xml @@ -0,0 +1,56 @@ + + + + + + diff --git a/src/test/java/com/sczx/store/CodeGenerator.java b/src/test/java/com/sczx/store/CodeGenerator.java index b1bb0ec..574dd21 100644 --- a/src/test/java/com/sczx/store/CodeGenerator.java +++ b/src/test/java/com/sczx/store/CodeGenerator.java @@ -25,8 +25,8 @@ public class CodeGenerator { .dateType(DateType.TIME_PACK).commentDate("yyyy-MM-dd HH:mm:ss") .fileOverride()) // 包配置 - .packageConfig(builder -> builder.parent(parentPackage).entity("po.base").service("repository.base").serviceImpl("repository.impl.base").xml("") - .mapper("mapper.base").pathInfo(Collections.singletonMap(OutputFile.mapperXml, System.getProperty("user.dir") + "/src/main/resources/mapper/base"))) + .packageConfig(builder -> builder.parent(parentPackage).entity("po").service("repository").serviceImpl("repository.impl").xml("") + .mapper("mapper").pathInfo(Collections.singletonMap(OutputFile.mapperXml, System.getProperty("user.dir") + "/src/main/resources/mapper"))) // 策略配置 .strategyConfig((scanner, builder) -> builder.addInclude(scanner.apply("请输入表名:"))