package com.ruoyi.user.controller; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.TableDataInfo; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.security.annotation.Logical; import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.user.domain.AccountCity; import com.ruoyi.user.service.IAccountCityService; /** * 城市主数据 信息操作处理 * * 网关前缀 /account 由 StripPrefix=1 剥掉,故此处映射为 /user/city, * 外部实际路径是 /account/user/city/**。 * * 城市是「会员列表筛选」「城市公司档案」与「服务商注册地区」共用的主数据, * 三个模块都不是它的拥有者,因此这里只提供增删改查,不带任何一方的业务逻辑。 * * @author ruoyi */ @RestController @RequestMapping("/user/city") public class AccountCityController extends BaseController { @Autowired private IAccountCityService cityService; /** * 查询城市列表 */ @RequiresPermissions("member:city:list") @GetMapping("/list") public TableDataInfo list(AccountCity city) { startPage(); List list = cityService.selectCityList(city); return getDataTable(list); } /** * 查询启用中的城市(下拉数据源) * * 权限必须走 OR:本接口是四个模块共用的——会员列表的城市筛选、城市公司档案的列表筛选与 * 表单所属城市、服务商表单的注册地区。后几处的调用者只可能有各自的 member:* 权限, * 钉死成 member:city:list 会让他们打开页面就 403。 * 不带 list 权限的纯按钮角色(如只有 member:user:edit)同样要能取到选项。 */ @RequiresPermissions(value = { "member:city:list", "member:user:list", "member:company:list", "member:provider:list" }, logical = Logical.OR) @GetMapping("/options") public AjaxResult options() { return success(cityService.selectEnabledCityList()); } /** * 新增城市 */ @RequiresPermissions("member:city:add") @Log(title = "城市管理", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody AccountCity city) { city.setCreateBy(SecurityUtils.getUsername()); return toAjax(cityService.insertCity(city)); } /** * 修改城市 */ @RequiresPermissions("member:city:edit") @Log(title = "城市管理", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody AccountCity city) { if (StringUtils.isNull(city.getId())) { return error("城市编号不能为空"); } city.setUpdateBy(SecurityUtils.getUsername()); return toAjax(cityService.updateCity(city)); } /** * 修改城市状态(禁用/启用) */ @RequiresPermissions("member:city:edit") @Log(title = "城市管理", businessType = BusinessType.UPDATE) @PutMapping("/changeStatus") public AjaxResult changeStatus(@RequestBody AccountCity city) { if (StringUtils.isNull(city.getId())) { return error("城市编号不能为空"); } if (StringUtils.isEmpty(city.getStatus())) { return error("城市状态不能为空"); } city.setUpdateBy(SecurityUtils.getUsername()); return toAjax(cityService.changeStatus(city)); } /** * 删除城市(逻辑删除;已被公司档案引用的城市会被服务层拦下) */ @RequiresPermissions("member:city:remove") @Log(title = "城市管理", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(cityService.deleteCityByIds(ids)); } }