liujie
昨天 c983a0a398504697a777ffae48e59961b5ee2bd7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
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<AccountCity> 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));
    }
}