package com.xiaopeng.operation.controller; import com.xiaopeng.api.model.operation.XpOpenCity; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.web.controller.BaseController; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.common.log.annotation.AdminOperationLog; import com.xiaopeng.common.log.enums.AdminBusinessType; import com.xiaopeng.common.log.enums.AdminOperationType; import com.xiaopeng.operation.dto.OpenCityAddDTO; import com.xiaopeng.operation.dto.OpenCityEditDTO; import com.xiaopeng.operation.query.OpenCityPageQuery; import com.xiaopeng.operation.service.XpOpenCityService; import com.xiaopeng.operation.vo.OpenCityListVO; import com.xiaopeng.operation.vo.XpOpenCityNextVo; import com.xiaopeng.operation.vo.XpOpenCityVo; import com.xiaopeng.unifiedverification.interceptor.XpClientCheck; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import com.xiaopeng.common.log.annotation.AdminOperationLog; import com.xiaopeng.common.log.enums.AdminBusinessType; import com.xiaopeng.common.log.enums.AdminOperationType; @Slf4j @RestController @RequestMapping("") @Api(tags = "开通城市模块") public class XpOpenCityController extends BaseController { private final XpOpenCityService xpOpenCityService; public XpOpenCityController(XpOpenCityService xpOpenCityService) { this.xpOpenCityService = xpOpenCityService; } /** * 获取开通城市列表 * @return */ @ApiOperation(value = "获取开通城市列表",tags = {"小程序-开通城市列表"},response = XpOpenCityVo.class) @GetMapping("/base/v1/mini-program/cities/list") public R citiesList() { return R.ok(xpOpenCityService.citiesList()); } @ApiOperation(value = "获取开通城市启用列表",tags = {"管理后台-开通城市-获取启用的数据"},response = XpOpenCityVo.class) @GetMapping("/api/v1/openCity/findLstEnable") public R> openCityFindList() { return R.ok(xpOpenCityService.citiesList().getCities()); } /** * 获取开通城市列表(管理后台使用) * 用于路线规划配置的新增和编辑 */ @ApiOperation(value = "获取开通城市列表(管理后台)", tags = {"管理后台-交易管理"}, response = OpenCityListVO.class) @GetMapping("/api/v1/openCity/list") @ApiImplicitParam(name = "type", value = "类型:1-路线规划配置使用 2-定价管理配置使用", required = true, dataTypeClass = Integer.class) public R> getOpenCityList(@RequestParam("type") Integer type) { List list = xpOpenCityService.getOpenCityListForAdmin(type); return R.ok(list); } /** * 获取开通城市名称列表 */ @GetMapping("/base/v1/openCity/nameList") public R> getOpenCityNameList(String openCityIds) { List list = xpOpenCityService.listByIds(Arrays.asList(openCityIds.split(","))); ArrayList nameLists = new ArrayList<>(list.size()); for (XpOpenCity xpOpenCity : list) { if(xpOpenCity.getDistrictCode()!=null){ nameLists.add(xpOpenCity.getCityName() + "-" +xpOpenCity.getDistrictName()); }else { nameLists.add(xpOpenCity.getCityName()); } } return R.ok(nameLists); } /** * 管理后台-开通城市管理-开通城市分页列表 * @param query * @return */ @ApiOperation(value = "开通城市分页列表", tags = {"管理后台-开通城市管理"}) @PostMapping("/api/v1/openCity/pageList") public R> getPageList(@RequestBody OpenCityPageQuery query) { return R.ok(xpOpenCityService.getPageList(query)); } /** * 管理后台-开通城市管理-新增开通城市 * @param dto * @return */ @ApiOperation(value = "新增开通城市", tags = {"管理后台-开通城市管理"}) @PostMapping("/api/v1/openCity/add") @AdminOperationLog( businessType = AdminBusinessType.OPEN_CITY_MANAGEMENT, operationType = AdminOperationType.ADD, content = "新增开通城市", appendRequestData = true ) public R add(@Valid @RequestBody OpenCityAddDTO dto) { xpOpenCityService.add(dto); return R.ok(); } /** * 管理后台-开通城市管理-编辑开通城市 * @param dto * @return */ @ApiOperation(value = "编辑开通城市", tags = {"管理后台-开通城市管理"}) @PostMapping("/api/v1/openCity/edit") @AdminOperationLog( businessType = AdminBusinessType.OPEN_CITY_MANAGEMENT, operationType = AdminOperationType.EDIT, content = "编辑开通城市", appendRequestData = true ) public R add(@Valid @RequestBody OpenCityEditDTO dto) { xpOpenCityService.edit(dto); return R.ok(); } /** * 管理后台-开通城市管理-删除开通城市 * @param id * @return */ @ApiOperation(value = "删除开通城市", tags = {"管理后台-开通城市管理"}) @DeleteMapping("/api/v1/openCity/delete/{id}") @AdminOperationLog( businessType = AdminBusinessType.OPEN_CITY_MANAGEMENT, operationType = AdminOperationType.DELETE, contentExpression = "'删除开通城市,id=' + #p0", appendRequestData = false ) public R deleteById(@ApiParam(name = "id", value = "开通城市ID") @PathVariable Long id) { xpOpenCityService.deleteById(id); return R.ok(); } /** * 管理后台-开通城市管理-启用/禁用 * @param id * @param status * @return */ @ApiOperation(value = "启用/禁用", tags = {"管理后台-开通城市管理"}) @PostMapping("/api/v1/openCity/upDown") @AdminOperationLog( businessType = AdminBusinessType.OPEN_CITY_MANAGEMENT, operationTypeExpression = "#p1 == 1 ? T(com.xiaopeng.common.log.enums.AdminOperationType).ENABLE : T(com.xiaopeng.common.log.enums.AdminOperationType).DISABLE", contentExpression = "(#p1 == 1 ? '启用开通城市,id=' : '禁用开通城市,id=') + #p0", appendRequestData = false ) public R upDown(Long id, Integer status) { xpOpenCityService.upDown(id, status); return R.ok(); } /** * 根据省市区获取开通城市数据 * @param provinceCode * @param cityCode * @param districtCode * @return */ @PostMapping("/logan/inner/v1/openCity/getXpOpenCity") public R getXpOpenCity(@RequestParam("provinceCode") String provinceCode, @RequestParam("cityCode") String cityCode, @RequestParam("districtCode") String districtCode){ XpOpenCity xpOpenCity = xpOpenCityService.getXpOpenCity(provinceCode, cityCode, districtCode); return R.ok(xpOpenCity); } /** * 根据id查询开通城市 * @param id * @return */ @PostMapping("/logan/inner/v1/openCity/getXpOpenCityById") public R getXpOpenCityById(@RequestParam("id") Long id){ XpOpenCity xpOpenCity = xpOpenCityService.getById(id); return R.ok(xpOpenCity); } }