TUserController.java 37.3 KB
Newer Older
1 2 3 4
package cn.wisenergy.chnmuseum.party.web.controller;

import cn.wisenergy.chnmuseum.party.auth.SHA256PasswordEncryptionService;
import cn.wisenergy.chnmuseum.party.auth.SecureRandomSaltService;
liqin's avatar
liqin committed
5
import cn.wisenergy.chnmuseum.party.common.enums.AuditOperationEnum;
6
import cn.wisenergy.chnmuseum.party.common.enums.AuditStatusEnum;
liqin's avatar
liqin committed
7
import cn.wisenergy.chnmuseum.party.common.enums.AuditTypeEnum;
8 9 10
import cn.wisenergy.chnmuseum.party.common.log.MethodLog;
import cn.wisenergy.chnmuseum.party.common.log.OperModule;
import cn.wisenergy.chnmuseum.party.common.log.OperType;
11
import cn.wisenergy.chnmuseum.party.common.util.DateUtil80;
wzp's avatar
wzp committed
12
import cn.wisenergy.chnmuseum.party.common.util.RandomUtil;
13
import cn.wisenergy.chnmuseum.party.core.annotations.OperationLog;
wzp's avatar
wzp committed
14
import cn.wisenergy.chnmuseum.party.model.*;
15
import cn.wisenergy.chnmuseum.party.service.RoleService;
16
import cn.wisenergy.chnmuseum.party.service.TUserRoleService;
liqin's avatar
liqin committed
17
import cn.wisenergy.chnmuseum.party.service.TUserService;
wzp's avatar
wzp committed
18
import cn.wisenergy.chnmuseum.party.service.impl.AuditServiceImpl;
wzp's avatar
wzp committed
19
import cn.wisenergy.chnmuseum.party.service.impl.TBoxOperationServiceImpl;
liqin's avatar
liqin committed
20
import cn.wisenergy.chnmuseum.party.web.controller.base.BaseController;
21 22 23 24 25 26 27 28 29 30 31 32 33 34
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
35

36 37
import javax.annotation.Resource;
import javax.validation.constraints.NotNull;
wzp's avatar
wzp committed
38
import java.time.LocalDateTime;
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
import java.util.*;

/**
 * <pre>
 * 用户 前端控制器
 * </pre>
 *
 * @author Danny Lee
 * @since 2021-03-22
 */
@Slf4j
@RestController
@RequestMapping("/tUser")
@Api(tags = {"用户操作接口"})
public class TUserController extends BaseController {

    @Resource
    private TUserService userService;

    @Resource
    private TUserRoleService tUserRoleService;

61
    @Resource
wzp's avatar
wzp committed
62 63
    private RoleService roleService;

wzp's avatar
wzp committed
64 65 66
    @Resource
    private AuditServiceImpl auditService;

wzp's avatar
wzp committed
67 68 69
    @Resource
    private TBoxOperationServiceImpl boxOperationService;

wzp's avatar
wzp committed
70 71 72 73 74 75
    @Resource
    private StringRedisTemplate stringRedisTemplate;
    private static final String SHIRO_JWT_TOKEN = "shiro:jwt:token";
    //用户登录是否被锁定    一小时 redisKey 前缀
    private String SHIRO_IS_LOCK = "shiro_is_lock_";

wzp's avatar
wzp committed
76 77 78 79 80 81 82
    @ApiOperation(value = "获取用户分页列表")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer")
    })
    @RequestMapping(value = "/getPageList", method = RequestMethod.GET)
    @RequiresPermissions("/user/getPageList")
wzp's avatar
wzp committed
83
    @MethodLog(operModule = OperModule.USER, operType = OperType.SELECT)
liqin's avatar
liqin committed
84
    public Map<String, Object> getPageList(String userName, String status, String type, String orgId, String areaId) {
wzp's avatar
wzp committed
85
        TUser user1 = getcurUser();
wzp's avatar
wzp committed
86 87 88 89 90 91
        TUser user = new TUser();
        if (StringUtils.isNotBlank(userName)) {
            user.setUserName(userName);
        }
        if (StringUtils.isNotBlank(type)) {
            user.setType(type);
wzp's avatar
wzp committed
92
            if (!"4".equals(type)) {
93 94 95
                //设置用户数据权限
                user.setOrgCode(user1.getOrgCode());
            }
wzp's avatar
wzp committed
96 97 98 99
            if ("4".equals(type)) {
                //设置用户数据权限
                user.setAreaName(TBoxOperationController.getAreaId(user1.getAreaId()));
            }
100 101 102 103 104 105 106
            if ("2".equals(type)) {
                List<String> roleList = user1.getRoleList();
                //如果是单位用户,只能查看本机构的单位用户
                if (roleList != null && !roleList.contains("1") && roleList.contains("2")) {
                    user.setOrgId(user1.getOrgId());
                }
            }
wzp's avatar
wzp committed
107 108 109 110 111 112 113 114
        }
        if (StringUtils.isNotBlank(orgId)) {
            user.setOrgId(orgId);
        }
        if (StringUtils.isNotBlank(areaId)) {
            user.setAreaId(areaId);
        }
        if (StringUtils.isNotBlank(status)) {
liqin's avatar
liqin committed
115
            if (AuditOperationEnum.ENABLE.name().equals(status)||AuditOperationEnum.DISABLE.name().equals(status)) {
wzp's avatar
wzp committed
116
                user.setStatus(status);
liqin's avatar
liqin committed
117
            } else {
wzp's avatar
wzp committed
118 119 120
                user.setAuditStatus(status);
            }
        }
121

wzp's avatar
wzp committed
122
        try {
wzp's avatar
wzp committed
123
            Page<TUser> list = userService.getList(getPage(), user);
wzp's avatar
wzp committed
124 125 126 127 128 129
            return getResult(list);
        } catch (Exception e) {
            logger.error("查询成员列表出错!", e);
        }
        return getFailResult();
    }
wzp's avatar
wzp committed
130

wzp's avatar
wzp committed
131
    @ApiOperation(value = "获取用户列表")
wzp's avatar
wzp committed
132 133
    @RequestMapping(value = "/getUserList", method = RequestMethod.GET)
    @RequiresPermissions("/user/getUserList")
wzp's avatar
wzp committed
134
    @MethodLog(operModule = OperModule.USER, operType = OperType.SELECT)
wzp's avatar
wzp committed
135
    public Map<String, Object> getUserList(String type, String status, String auditStatus) {
136 137
        TUser user1 = getcurUser();
        TUser user = new TUser();
wzp's avatar
wzp committed
138
        try {
wzp's avatar
wzp committed
139
            if (StringUtils.isNotBlank(type)) {
140 141 142 143 144
               user.setType(type);
                if (!"4".equals(type) && !"5".equals(type)) {
                    //设置用户数据权限
                   user.setOrgCode(user1.getOrgCode());
                }
wzp's avatar
wzp committed
145
            }
wzp's avatar
wzp committed
146
            if (StringUtils.isNotBlank(auditStatus)) {
147 148 149
                user.setAuditStatus(auditStatus);
            }
            if (StringUtils.isNotBlank(status)) {
liqin's avatar
liqin committed
150
                if (AuditOperationEnum.ENABLE.name().equals(status)||AuditOperationEnum.DISABLE.name().equals(status)) {
151 152 153 154
                    user.setStatus(status);
                } else {
                    user.setAuditStatus(status);
                }
wzp's avatar
wzp committed
155
            }
156
            List<TUser> list = userService.getUserList(user);
wzp's avatar
wzp committed
157
            return getResult(list);
wzp's avatar
wzp committed
158 159 160
        } catch (Exception e) {
            logger.error("查询成员列表出错!", e);
        }
wzp's avatar
wzp committed
161
        return getFailResult();
wzp's avatar
wzp committed
162 163 164 165 166
    }

    @ApiOperation(value = "获取用户详情", notes = "获取用户详情")
    @GetMapping("/getById")
    @RequiresPermissions("/user/getById")
wzp's avatar
wzp committed
167
    @MethodLog(operModule = OperModule.USER, operType = OperType.SELECT)
wzp's avatar
wzp committed
168
    public Map<String, Object> getById(String id) {
wzp's avatar
wzp committed
169 170 171
        try {
            TUser tUser = userService.selectById(id);
            List<Role> list = roleService.selectRoleByUserId(id);
liqin's avatar
liqin committed
172
            if (list != null && list.get(0) != null) {
wzp's avatar
wzp committed
173
                List<String> list1 = new ArrayList<>();
liqin's avatar
liqin committed
174
                list.forEach(r -> list1.add(r.getId()));
wzp's avatar
wzp committed
175 176
                tUser.setRoleList(list1);
            }
wzp's avatar
wzp committed
177 178 179 180 181
            return getResult(tUser);
        } catch (Exception e) {
            e.printStackTrace();
            return getFailResult();
        }
wzp's avatar
wzp committed
182 183 184 185 186 187
    }

    @OperationLog("新增成员")
    @ApiOperation(value = "新增成员")
    @RequestMapping(value = "/add", method = RequestMethod.POST)
    @RequiresPermissions("/user/add")
wzp's avatar
wzp committed
188
    @MethodLog(operModule = OperModule.USER, operType = OperType.ADD)
wzp's avatar
wzp committed
189
    public Map<String, Object> add(@RequestBody TUser user) {
wzp's avatar
wzp committed
190 191 192
        Map<String, Object> resultMap = new LinkedHashMap<String, Object>();
        try {
            if (StringUtils.isBlank(user.getUserName())) {
wzp's avatar
wzp committed
193
                resultMap.put("resultCode", "400");
wzp's avatar
wzp committed
194
                resultMap.put("message", "账号不能为空!");
wzp's avatar
wzp committed
195
                return resultMap;
wzp's avatar
wzp committed
196 197 198 199
            } else {
                user.setUserName(StringUtils.trimToNull(user.getUserName()));
            }
            if (StringUtils.isBlank(user.getPassword())) {
wzp's avatar
wzp committed
200
                user.setPassword("123456");
wzp's avatar
wzp committed
201 202 203 204 205
            } else {
                user.setPassword(StringUtils.trimToNull(user.getPassword()));
            }

            if (user.getRoleList() == null || user.getRoleList().size() < 1) {
liqin's avatar
liqin committed
206
                if ("2".equals(user.getType())) {
wzp's avatar
wzp committed
207 208
                    user.setRoleList(new ArrayList<>());
                    user.getRoleList().add("1");
liqin's avatar
liqin committed
209
                } else {
wzp's avatar
wzp committed
210
                    resultMap.put("resultCode", "400");
wzp's avatar
wzp committed
211 212 213
                    resultMap.put("message", "请选择角色!");
                    return resultMap;
                }
wzp's avatar
wzp committed
214 215
            }
            if (StringUtils.isBlank(user.getOrgId())) {
wzp's avatar
wzp committed
216
                resultMap.put("resultCode", "400");
wzp's avatar
wzp committed
217
                resultMap.put("message", "请选择机构!");
wzp's avatar
wzp committed
218
                return resultMap;
wzp's avatar
wzp committed
219
            }
liqin's avatar
liqin committed
220
            if ("2".equals(user.getType())) {
wzp's avatar
wzp committed
221 222
                QueryWrapper<TUser> ew = new QueryWrapper<>();
                user.setUserName(user.getUserName().trim());
wzp's avatar
wzp committed
223
                ew.eq("is_deleted", false);
wzp's avatar
wzp committed
224 225 226
                ew.eq("type", "2");
                ew.eq("org_id", user.getOrgId());
                List<TUser> list = userService.list(ew);
liqin's avatar
liqin committed
227
                if (list.size() >= 3) {
wzp's avatar
wzp committed
228
                    resultMap.put("resultCode", "200");
wzp's avatar
wzp committed
229 230 231
                    resultMap.put("message", "机构已存在三个单位管理员!");
                    return resultMap;
                }
wzp's avatar
wzp committed
232 233 234
                ArrayList<String> strings = new ArrayList<>();
                strings.add("2");
                user.setRoleList(strings);
wzp's avatar
wzp committed
235
            }
wzp's avatar
wzp committed
236 237 238
            QueryWrapper<TUser> ew = new QueryWrapper<>();
            if (StringUtils.isNoneBlank(user.getUserName())) {
                user.setUserName(user.getUserName().trim());
wzp's avatar
wzp committed
239
                ew.eq("is_deleted", false);
wzp's avatar
wzp committed
240 241 242
                ew.eq("user_name", user.getUserName());
                TUser one = this.userService.getOne(ew);
                if (one != null) {
wzp's avatar
wzp committed
243
                    resultMap.put("resultCode", "200");
wzp's avatar
wzp committed
244
                    resultMap.put("message", "账号已存在!");
wzp's avatar
wzp committed
245
                    return resultMap;
wzp's avatar
wzp committed
246 247 248 249 250 251 252 253 254 255
                }
            }

            byte[] passwordSalt = SecureRandomSaltService.generateSalt();
            byte[] passwordHash = SHA256PasswordEncryptionService
                    .createPasswordHash(user.getPassword(), passwordSalt);
            user.setPasswordSalt(passwordSalt);
            user.setPasswordHash(passwordHash);
            user.setCreateTime(DateUtil80.getDateTimeOfTimestamp(System.currentTimeMillis()));
            user.setUpdateTime(user.getCreateTime());
liqin's avatar
liqin committed
256
            user.setStatus(AuditOperationEnum.ENABLE.name());
wzp's avatar
wzp committed
257
            user.setAuditStatus(AuditStatusEnum.APPROVED_FINAL.name());
wzp's avatar
wzp committed
258 259 260
            user.setIsDeleted(false);

            boolean ret = this.userService.save(user);
261

wzp's avatar
wzp committed
262
            List<String> list = user.getRoleList();
wzp's avatar
wzp committed
263

264
            List<TUserRole> list1 = new ArrayList<>();
wzp's avatar
wzp committed
265
            for (String s : list) {
266 267
                TUserRole entity = new TUserRole();
                entity.setUserId(user.getId());
wzp's avatar
wzp committed
268
                entity.setRoleId(s);
269 270 271 272
                entity.setIsDeleted(false);
                list1.add(entity);
            }

wzp's avatar
wzp committed
273 274 275 276
            this.tUserRoleService.saveBatch(list1);

            if (!ret) {
                // 新增失败, 500
wzp's avatar
wzp committed
277
                resultMap.put("resultCode", "500");
wzp's avatar
wzp committed
278
                resultMap.put("message", "服务器忙");
wzp's avatar
wzp committed
279
                return resultMap;
wzp's avatar
wzp committed
280
            }
wzp's avatar
wzp committed
281
            resultMap.put("resultCode", "200");
wzp's avatar
wzp committed
282 283
            resultMap.put("message", "添加成功");
            // 201
wzp's avatar
wzp committed
284
            return resultMap;
wzp's avatar
wzp committed
285
        } catch (Exception e) {
wzp's avatar
wzp committed
286
            resultMap.put("resultCode", "500");
wzp's avatar
wzp committed
287 288 289
            resultMap.put("message", "服务器忙");
            logger.error("新增成员错误!", e);
        }
wzp's avatar
wzp committed
290
        return resultMap;
wzp's avatar
wzp committed
291 292 293
    }

    @OperationLog("修改成员信息")
wzp's avatar
wzp committed
294
    @ApiOperation(value = "编辑用户信息")
wzp's avatar
wzp committed
295 296 297
    @PutMapping(value = "/update")
    @RequiresPermissions("/user/update")
    @MethodLog(operModule = OperModule.USER, operType = OperType.UPDATE)
wzp's avatar
wzp committed
298
    public Map<String, Object>  edit(@RequestBody TUser user) {
wzp's avatar
wzp committed
299 300 301 302
        Map<String, Object> resultMap = new HashMap<>();
        try {
            boolean ret = false;
            if (user.getId() != null) {
wzp's avatar
wzp committed
303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339

                if (StringUtils.isNoneBlank(user.getUserName())) {
                    QueryWrapper<TUser> ew = new QueryWrapper<>();
                    user.setUserName(user.getUserName().trim());
                    ew.eq("is_deleted", false);
                    ew.eq("user_name", user.getUserName());
                    TUser one = this.userService.getOne(ew);
                    TUser tUser = userService.getById(user.getId());
                    if (one != null&&!one.getUserName().equals(tUser.getUserName())) {
                        resultMap.put("resultCode", "200");
                        resultMap.put("message", "账号已存在!");
                        return resultMap;
                    }
                }
                if (StringUtils.isNoneBlank(user.getOrgId())&&StringUtils.isNoneBlank(user.getType())&&"3".equals(user.getType())) {
                    QueryWrapper<TUser> ew = new QueryWrapper<>();
                    ew.eq("is_deleted", false);
                    ew.eq("type", "3");
                    ew.eq("org_id", user.getOrgId());
                    List<TUser> list = this.userService.list(ew);
                    if (list != null&&list.size()>1&&list.get(0)!=null) {
                        resultMap.put("resultCode", "500");
                        resultMap.put("message", "每个单位只能有一个机顶盒账号!");
                        return resultMap;
                    }
                }
                if ("2".equals(user.getType())) {
                    QueryWrapper<TUser> ew = new QueryWrapper<>();
                    ew.eq("is_deleted", false);
                    ew.eq("type", "2");
                    ew.eq("org_id", user.getOrgId());
                    List<TUser> list = userService.list(ew);
                    if (list.size() >= 3) {
                        resultMap.put("resultCode", "200");
                        resultMap.put("message", "机构已存在三个单位管理员!");
                        return resultMap;
                    }
wzp's avatar
wzp committed
340 341
                }

wzp's avatar
wzp committed
342 343 344
//                user.setUserName(StringUtils.trimToNull(user.getUserName()));
//                user.setPassword(StringUtils.trimToNull(user.getPassword()));
//                user.setRealName(StringUtils.trimToNull(user.getRealName()));
wzp's avatar
wzp committed
345 346 347 348 349 350 351 352
                user.setUpdateTime(DateUtil80.getDateTimeOfTimestamp(System.currentTimeMillis()));
                ret = userService.updateById(user);
                //查询当前用户拥有的角色
                QueryWrapper<TUserRole> userRoleWrapper = new QueryWrapper<>();
                userRoleWrapper.eq("user_id", user.getId());
                boolean remove = tUserRoleService.remove(userRoleWrapper);


wzp's avatar
wzp committed
353
                List<String> list = user.getRoleList();
wzp's avatar
wzp committed
354
                if (list != null && list.size() > 0&&list.get(0)!=null) {
wzp's avatar
wzp committed
355
                    ArrayList<TUserRole> list1 = new ArrayList<>();
wzp's avatar
wzp committed
356
                    for (String r : list) {
wzp's avatar
wzp committed
357 358
                        TUserRole userRole = new TUserRole();
                        userRole.setUserId(user.getId());
wzp's avatar
wzp committed
359
                        userRole.setRoleId(r);
wzp's avatar
wzp committed
360 361 362 363 364 365 366 367
                        userRole.setIsDeleted(false);
                        list1.add(userRole);
                    }

                    ret = this.tUserRoleService.saveBatch(list1);
                }
            } else {
                // 更新失败, 400
wzp's avatar
wzp committed
368
                resultMap.put("resultCode", "400");
wzp's avatar
wzp committed
369
                resultMap.put("message", "请选择用户");
wzp's avatar
wzp committed
370
                return resultMap;
wzp's avatar
wzp committed
371 372 373 374
            }

            if (!ret) {
                // 更新失败, 500
wzp's avatar
wzp committed
375
                resultMap.put("resultCode", "500");
wzp's avatar
wzp committed
376
                resultMap.put("message", "服务器忙");
wzp's avatar
wzp committed
377
                return resultMap;
wzp's avatar
wzp committed
378 379
            }
            // 204
wzp's avatar
wzp committed
380
            resultMap.put("resultCode", "200");
wzp's avatar
wzp committed
381
            resultMap.put("message", "更新成功");
wzp's avatar
wzp committed
382
            return resultMap;
wzp's avatar
wzp committed
383 384 385 386
        } catch (Exception e) {
            logger.error("更新错误!", e);
        }
        // 500
wzp's avatar
wzp committed
387 388
        resultMap.put("resultCode", "500");
        resultMap.put("message", "服务器忙");
wzp's avatar
wzp committed
389
        return resultMap;
wzp's avatar
wzp committed
390 391 392 393 394 395 396 397 398 399 400
    }

    @OperationLog("删除成员")
    @ApiOperation(value = "删除成员")
    @DeleteMapping(value = "/delete")
    @RequiresPermissions("/user/delete")
    @MethodLog(operModule = OperModule.USER, operType = OperType.DELETE)
    public ResponseEntity<Map<String, Object>> delete(String userId) {
        Map<String, Object> resultMap = new HashMap<>();
        try {
            if ("1".equals(userId)) {
wzp's avatar
wzp committed
401
                resultMap.put("status", "400");
wzp's avatar
wzp committed
402 403 404 405 406 407 408 409 410 411 412 413 414 415
                resultMap.put("message", "该账号不能被删除");
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(resultMap);
            }
            TUser entity = new TUser();
            entity.setId(userId);
            entity.setUpdateTime(DateUtil80.getDateTimeOfTimestamp(System.currentTimeMillis()));
            entity.setIsDeleted(true);
            boolean ret1 = this.userService.updateById(entity);

            QueryWrapper<TUserRole> userRoleWrapper = new QueryWrapper<>();
            userRoleWrapper.eq("user_id", userId);
            boolean ret2 = this.tUserRoleService.remove(userRoleWrapper);

            if (!ret1 || !ret2) {
wzp's avatar
wzp committed
416
                resultMap.put("resultCode", "400");
wzp's avatar
wzp committed
417 418 419
                resultMap.put("message", "删除失败");
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(resultMap);
            }
wzp's avatar
wzp committed
420
            resultMap.put("resultCode", "200");
wzp's avatar
wzp committed
421
            resultMap.put("message", "删除成功");
wzp's avatar
wzp committed
422
            return ResponseEntity.ok(resultMap);
wzp's avatar
wzp committed
423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438
        } catch (Exception e) {
            logger.error("删除用户出错!", e);
        }
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
    }

    @OperationLog("禁用成员")
    @ApiOperation(value = "禁用")
    @RequestMapping(value = "/disable", method = RequestMethod.PUT)
    @RequiresPermissions("/user/disable")
    @MethodLog(operModule = OperModule.USER, operType = OperType.DISABLE)
    public ResponseEntity<Map<String, Object>> disableTUser(String userId) {
        Map<String, Object> resultMap = new HashMap<>();
        try {
            TUser entity = new TUser();
            entity.setId(userId);
wzp's avatar
wzp committed
439
            //提交禁用审核,没有真正禁用
wzp's avatar
wzp committed
440 441
            String code = AuditStatusEnum.TBC.name();
            entity.setAuditStatus(code);
wzp's avatar
wzp committed
442 443
            entity.setUpdateTime(DateUtil80.getDateTimeOfTimestamp(System.currentTimeMillis()));

wzp's avatar
wzp committed
444 445 446
            //添加到审核记录表
            TUser user = userService.getById(userId);
            Audit audit = new Audit();
liqin's avatar
liqin committed
447
            audit.setContent(user.getUserName());
wzp's avatar
wzp committed
448
            audit.setOrganId(user.getOrgId());
liqin's avatar
liqin committed
449
            audit.setRefItemId(userId);
wzp's avatar
wzp committed
450
            audit.setUserId(getcurUser().getId());
liqin's avatar
liqin committed
451 452 453
            audit.setType(AuditTypeEnum.ACCOUNT.name());
            audit.setOperation(AuditOperationEnum.DISABLE.name());
            audit.setStatus(AuditStatusEnum.TBC.name());
wzp's avatar
wzp committed
454
            audit.setIsDeleted(false);
wzp's avatar
wzp committed
455
            audit.setLevel(AuditStatusEnum.TBC.name());
wzp's avatar
wzp committed
456 457 458 459
            audit.setCreateTime(LocalDateTime.now());
            auditService.save(audit);

            boolean ret = this.userService.updateById(entity);
wzp's avatar
wzp committed
460 461 462 463 464 465 466
            //获取该用户的登陆token
            String userToken = stringRedisTemplate.opsForValue().get(SHIRO_JWT_TOKEN + userId);
            if (null != userToken) {
                stringRedisTemplate.delete(userToken);
                stringRedisTemplate.delete(SHIRO_JWT_TOKEN + userId);
            }
            if (!ret) {
wzp's avatar
wzp committed
467
                resultMap.put("resultCode", "400");
wzp's avatar
wzp committed
468 469 470
                resultMap.put("message", "禁用失败");
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(resultMap);
            }
wzp's avatar
wzp committed
471
            resultMap.put("resultCode", "200");
wzp's avatar
wzp committed
472
            resultMap.put("message", "禁用成功");
wzp's avatar
wzp committed
473
            return ResponseEntity.ok(resultMap);
wzp's avatar
wzp committed
474 475 476 477 478
        } catch (Exception e) {
            logger.error("禁用用户出错!", e);
        }
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
    }
wzp's avatar
wzp committed
479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507
//
//    @PutMapping("/updateAuditStatus")
//    @RequiresPermissions("/user/updateAuditStatus")
//    @ApiOperation(value = "更新用户审核状态", notes = "更新用户审核状态")
//    @ApiImplicitParams(value = {
//            @ApiImplicitParam(name = "id", value = "标识ID", dataType = "String", paramType = "path"),
//            @ApiImplicitParam(name = "status", value = "状态", paramType = "query", dataType = "String")
//    })
//    @MethodLog(operModule = OperModule.USER, operType = OperType.UPDATE)
//    public Map<String, Object> updateStatus(@NotNull(message = "机构用户不能为空") @PathVariable("id") String id, @RequestParam("status") AuditStatusEnum status) {
//        boolean flag = false;
//        try {
//            TUser user = new TUser();
//            user.setId(id);
//            user.setAuditStatus(status.getCode().toString());
//            //当禁用审核通过后,真正禁用
//            if ("4".equals(status.getCode().toString())) {
//                user.setStatus("2");
//            }
//            flag = userService.updateById(user);
//            if (!flag) {
//                return getFailResult();
//            }
//            return getSuccessResult();
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return getFailResult();
//    }
wzp's avatar
wzp committed
508

wzp's avatar
wzp committed
509 510 511 512
    @OperationLog("启用成员")
    @ApiOperation(value = "启用")
    @RequestMapping(value = "/enable", method = RequestMethod.PUT)
    @RequiresPermissions("/user/enable")
liqin's avatar
liqin committed
513
    @MethodLog(operModule = OperModule.USER, operType = OperType.ENABLE)
wzp's avatar
wzp committed
514 515 516 517 518 519
    public ResponseEntity<Map<String, Object>> enableUser(String userId) {
        try {
            Map<String, Object> map = new HashMap<>();

            TUser entity = new TUser();
            entity.setId(userId);
liqin's avatar
liqin committed
520
            entity.setStatus(AuditOperationEnum.ENABLE.name());
wzp's avatar
wzp committed
521
            entity.setAuditStatus(AuditStatusEnum.APPROVED_FINAL.name());
wzp's avatar
wzp committed
522 523 524
            entity.setUpdateTime(DateUtil80.getDateTimeOfTimestamp(System.currentTimeMillis()));
            boolean ret = this.userService.updateById(entity);
            if (!ret) {
wzp's avatar
wzp committed
525
                map.put("resultCode", "500");
wzp's avatar
wzp committed
526 527 528
                map.put("message", "服务器错误");
                return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(map);
            }
wzp's avatar
wzp committed
529
            map.put("resultCode", "200");
wzp's avatar
wzp committed
530
            map.put("message", "启用成功");
wzp's avatar
wzp committed
531
            return ResponseEntity.ok(map);
wzp's avatar
wzp committed
532 533 534
        } catch (Exception e) {
            logger.error("用户启用出错!", e);
        }
liqin's avatar
liqin committed
535
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
wzp's avatar
wzp committed
536 537 538 539 540 541
    }

    @OperationLog("修改密码")
    @ApiOperation(value = "管理员更改自己的登录密码", notes = "管理员更改自己的登录密码")
    @RequestMapping(value = "/editPwd", method = RequestMethod.PUT)
    @RequiresPermissions("/user/editPwd")
wzp's avatar
wzp committed
542
    @MethodLog(operModule = OperModule.CHANGEPWD, operType = OperType.CHANGE_PASSWORD)
liqin's avatar
liqin committed
543 544
    public ResponseEntity<Map<String, Object>> editPwd(@RequestParam(value = "oldPassWord") String oldPassWord,
                                                       @RequestParam(value = "password") String password) {
wzp's avatar
wzp committed
545 546 547 548 549 550 551 552 553 554 555
        Map<String, Object> resultMap = new LinkedHashMap<String, Object>();
        try {
            boolean ret = false;
            TUser user = this.userService.getById(this.getUserId());
            byte[] salt = user.getPasswordSalt();
            if (new String(SHA256PasswordEncryptionService.createPasswordHash(oldPassWord, salt))
                    .equals(new String(user.getPasswordHash()))) {
                salt = SecureRandomSaltService.generateSalt();
                user.setPasswordSalt(salt);
                user.setPasswordHash((SHA256PasswordEncryptionService.createPasswordHash(password, salt)));
                user.setUpdateTime(DateUtil80.getDateTimeOfTimestamp(System.currentTimeMillis()));
556
                user.setPassword(password);
wzp's avatar
wzp committed
557 558 559
                ret = this.userService.updateById(user);
            } else {
                logger.error("旧密码不正确");
wzp's avatar
wzp committed
560
                resultMap.put("resultCode", "400");
wzp's avatar
wzp committed
561 562 563 564
                resultMap.put("message", "旧密码不正确");
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(resultMap);
            }
            if (!ret) {
wzp's avatar
wzp committed
565
                resultMap.put("resultCode", "500");
wzp's avatar
wzp committed
566 567 568 569
                resultMap.put("message", "修改失败");
                // 更新失败, 500
                return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(resultMap);
            }
wzp's avatar
wzp committed
570
            resultMap.put("resultCode", "200");
wzp's avatar
wzp committed
571
            resultMap.put("message", "修改成功");
wzp's avatar
wzp committed
572
            return ResponseEntity.ok(resultMap);
wzp's avatar
wzp committed
573 574 575 576
        } catch (Exception e) {
            logger.error("更新密码错误!", e);
        }
        // 500
wzp's avatar
wzp committed
577
        resultMap.put("resultCode", "500");
wzp's avatar
wzp committed
578 579 580 581 582 583 584 585
        resultMap.put("message", "修改失败");
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(resultMap);
    }

    @OperationLog("重置密码")
    @ApiOperation(value = "管理员重置密码", notes = "管理员重置密码")
    @RequestMapping(value = "/resetPassword", method = RequestMethod.PUT)
    @RequiresPermissions("/user/resetPassword")
wzp's avatar
wzp committed
586
    @MethodLog(operModule = OperModule.USER, operType = OperType.RESET_PASSWORD)
wzp's avatar
wzp committed
587
    public ResponseEntity<Map<Object, Object>> resetPassword(String userId) {
wzp's avatar
wzp committed
588
        try {
wzp's avatar
wzp committed
589
            Map<Object, Object> map = new LinkedHashMap<>();
wzp's avatar
wzp committed
590 591 592 593 594 595 596
            TUser user = new TUser();
            user.setId(userId);
            String newPassword = "123456";
            byte[] passwordSalt = SecureRandomSaltService.generateSalt();
            byte[] passwordHash = SHA256PasswordEncryptionService.createPasswordHash(newPassword, passwordSalt);
            user.setPasswordSalt(passwordSalt);
            user.setPasswordHash(passwordHash);
597
            user.setPassword(newPassword);
wzp's avatar
wzp committed
598 599 600 601 602 603
            user.setUpdateTime(DateUtil80.getDateTimeOfTimestamp(System.currentTimeMillis()));
            boolean ret = userService.updateById(user);
            if (!ret) {
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
            }
            stringRedisTemplate.delete(SHIRO_IS_LOCK + userService.getById(userId).getUserName());
wzp's avatar
wzp committed
604
            map.put("resultCode", "200");
wzp's avatar
wzp committed
605
            map.put("message", "重置密码成功");
wzp's avatar
wzp committed
606
            map.put("data", newPassword);
wzp's avatar
wzp committed
607
            return ResponseEntity.ok(map);
wzp's avatar
wzp committed
608 609 610 611 612 613
        } catch (Exception e) {
            logger.error("重置密码出错!", e);
        }
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
    }

wzp's avatar
wzp committed
614 615
    @OperationLog("新增机顶盒账号")
    @ApiOperation(value = "新增机顶盒账号")
wzp's avatar
wzp committed
616 617
    @RequestMapping(value = "/boxAdd", method = RequestMethod.POST)
    @RequiresPermissions("/user/boxAdd")
wzp's avatar
wzp committed
618
    @MethodLog(operModule = OperModule.USER, operType = OperType.ADD)
wzp's avatar
wzp committed
619 620 621 622
    public ResponseEntity<Map<String, Object>> BoxAdd(TUser user) {
        Map<String, Object> resultMap = new LinkedHashMap<String, Object>();
        try {
            if (StringUtils.isBlank(user.getUserName())) {
wzp's avatar
wzp committed
623
                resultMap.put("resultCode", "400");
wzp's avatar
wzp committed
624 625 626 627 628 629
                resultMap.put("message", "账号不能为空!");
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(resultMap);
            } else {
                user.setUserName(StringUtils.trimToNull(user.getUserName()));
            }

wzp's avatar
wzp committed
630
            user.setPassword(RandomUtil.createLetterRandom(6));
wzp's avatar
wzp committed
631 632 633 634

            QueryWrapper<TUser> ew = new QueryWrapper<>();
            if (StringUtils.isNoneBlank(user.getUserName())) {
                user.setUserName(user.getUserName().trim());
wzp's avatar
wzp committed
635
                ew.eq("is_deleted", false);
wzp's avatar
wzp committed
636 637 638
                ew.eq("user_name", user.getUserName());
                TUser one = this.userService.getOne(ew);
                if (one != null) {
wzp's avatar
wzp committed
639
                    resultMap.put("resultCode", "500");
wzp's avatar
wzp committed
640 641 642 643 644
                    resultMap.put("message", "账号已存在!");
                    return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(resultMap);
                }
            }

wzp's avatar
wzp committed
645 646 647 648 649 650 651
            if (StringUtils.isNoneBlank(user.getOrgId())) {
                user.setOrgId(user.getOrgId());
                ew.eq("is_deleted", 0);
                ew.eq("type", "3");
                ew.eq("org_id", user.getOrgId());
                List<TUser> list = this.userService.list(ew);
                if (list != null&&list.size()>1&&list.get(0)!=null) {
wzp's avatar
wzp committed
652
                    resultMap.put("resultCode", "500");
wzp's avatar
wzp committed
653 654 655 656 657
                    resultMap.put("message", "每个单位只能有一个机顶盒账号!");
                    return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(resultMap);
                }
            }

wzp's avatar
wzp committed
658 659 660 661 662 663 664 665 666
            byte[] passwordSalt = SecureRandomSaltService.generateSalt();
            byte[] passwordHash = SHA256PasswordEncryptionService
                    .createPasswordHash(user.getPassword(), passwordSalt);
            user.setPasswordSalt(passwordSalt);
            user.setPasswordHash(passwordHash);
            user.setCreateTime(DateUtil80.getDateTimeOfTimestamp(System.currentTimeMillis()));
            user.setUpdateTime(user.getCreateTime());
            user.setIsDeleted(false);
            user.setPermanent(true);
liqin's avatar
liqin committed
667
            user.setStatus(AuditOperationEnum.ENABLE.name());
wzp's avatar
wzp committed
668
            user.setAuditStatus(AuditStatusEnum.APPROVED_FINAL.name());
wzp's avatar
wzp committed
669 670 671 672
            user.setType("3");

            boolean ret = this.userService.save(user);

wzp's avatar
wzp committed
673 674 675 676 677 678 679
            TBoxOperation tBoxOperation = new TBoxOperation();
            tBoxOperation.setOrganId(user.getOrgId());
            tBoxOperation.setAreaId(user.getAreaId());
            tBoxOperation.setStatus(1);
            tBoxOperation.setCreateTime(LocalDateTime.now());
            tBoxOperation.setUpdateTime(LocalDateTime.now());
            ret = boxOperationService.save(tBoxOperation);
wzp's avatar
wzp committed
680

wzp's avatar
wzp committed
681 682 683 684 685 686
            TUserRole userRole = new TUserRole();
            userRole.setUserId(user.getId());
            userRole.setRoleId("3");
            userRole.setIsDeleted(false);
            tUserRoleService.save(userRole);

wzp's avatar
wzp committed
687 688
            if (!ret) {
                // 新增失败, 500
wzp's avatar
wzp committed
689
                resultMap.put("resultCode", "500");
wzp's avatar
wzp committed
690 691 692 693
                resultMap.put("message", "服务器忙");
                return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
                        .body(resultMap);
            }
wzp's avatar
wzp committed
694
            resultMap.put("resultCode", "200");
wzp's avatar
wzp committed
695 696 697
            resultMap.put("message", "添加成功");
            resultMap.put("data", user.getPassword());
            // 201
wzp's avatar
wzp committed
698
            return ResponseEntity.ok(resultMap);
wzp's avatar
wzp committed
699
        } catch (Exception e) {
wzp's avatar
wzp committed
700
            resultMap.put("resultCode", "500");
wzp's avatar
wzp committed
701 702 703 704 705 706
            resultMap.put("message", "服务器忙");
            logger.error("新增成员错误!", e);
        }
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(resultMap);
    }

wzp's avatar
wzp committed
707 708 709 710
    @OperationLog("新增运维账号")
    @ApiOperation(value = "新增运维账号")
    @RequestMapping(value = "/operationAdd", method = RequestMethod.POST)
    @RequiresPermissions("/user/operationAdd")
wzp's avatar
wzp committed
711
    @MethodLog(operModule = OperModule.USER, operType = OperType.ADD)
wzp's avatar
wzp committed
712 713 714 715
    public ResponseEntity<Map<String, Object>> operationAdd(TUser user) {
        Map<String, Object> resultMap = new LinkedHashMap<String, Object>();
        try {
            if (StringUtils.isBlank(user.getUserName())) {
wzp's avatar
wzp committed
716
                resultMap.put("resultCode", "400");
wzp's avatar
wzp committed
717 718 719 720 721 722 723 724 725 726 727
                resultMap.put("message", "账号不能为空!");
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(resultMap);
            } else {
                user.setUserName(StringUtils.trimToNull(user.getUserName()));
            }

            user.setPassword("123456");

            QueryWrapper<TUser> ew = new QueryWrapper<>();
            if (StringUtils.isNoneBlank(user.getUserName())) {
                user.setUserName(user.getUserName().trim());
wzp's avatar
wzp committed
728
                ew.eq("is_deleted", false);
wzp's avatar
wzp committed
729 730 731
                ew.eq("user_name", user.getUserName());
                TUser one = this.userService.getOne(ew);
                if (one != null) {
wzp's avatar
wzp committed
732
                    resultMap.put("resultCode", "200");
wzp's avatar
wzp committed
733 734 735 736 737 738 739 740 741 742 743 744 745
                    resultMap.put("message", "账号已存在!");
                    return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(resultMap);
                }
            }

            byte[] passwordSalt = SecureRandomSaltService.generateSalt();
            byte[] passwordHash = SHA256PasswordEncryptionService
                    .createPasswordHash(user.getPassword(), passwordSalt);
            user.setPasswordSalt(passwordSalt);
            user.setPasswordHash(passwordHash);
            user.setCreateTime(DateUtil80.getDateTimeOfTimestamp(System.currentTimeMillis()));
            user.setUpdateTime(user.getCreateTime());
            user.setIsDeleted(false);
liqin's avatar
liqin committed
746
            user.setStatus(AuditOperationEnum.ENABLE.name());
wzp's avatar
wzp committed
747
            user.setAuditStatus(AuditStatusEnum.APPROVED_FINAL.name());
wzp's avatar
wzp committed
748 749 750 751
            user.setType("4");

            boolean ret = this.userService.save(user);

wzp's avatar
wzp committed
752 753 754 755 756 757
            TUserRole userRole = new TUserRole();
            userRole.setUserId(user.getId());
            userRole.setRoleId("4");
            userRole.setIsDeleted(false);
            tUserRoleService.save(userRole);

wzp's avatar
wzp committed
758 759
            if (!ret) {
                // 新增失败, 500
wzp's avatar
wzp committed
760
                resultMap.put("resultCode", "500");
wzp's avatar
wzp committed
761 762 763 764
                resultMap.put("message", "服务器忙");
                return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
                        .body(resultMap);
            }
wzp's avatar
wzp committed
765
            resultMap.put("resultCode", "200");
wzp's avatar
wzp committed
766 767 768
            resultMap.put("message", "添加成功");
            resultMap.put("data", user.getPassword());
            // 201
wzp's avatar
wzp committed
769
            return ResponseEntity.ok(resultMap);
wzp's avatar
wzp committed
770
        } catch (Exception e) {
wzp's avatar
wzp committed
771
            resultMap.put("resultCode", "500");
wzp's avatar
wzp committed
772 773 774 775 776 777 778
            resultMap.put("message", "服务器忙");
            logger.error("新增成员错误!", e);
        }
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(resultMap);
    }

    @OperationLog("新增统计账号")
wzp's avatar
wzp committed
779
    @ApiOperation(value = "新增统计账号")
wzp's avatar
wzp committed
780 781
    @RequestMapping(value = "/statisticsAdd", method = RequestMethod.POST)
    @RequiresPermissions("/user/statisticsAdd")
wzp's avatar
wzp committed
782
    @MethodLog(operModule = OperModule.USER, operType = OperType.ADD)
wzp's avatar
wzp committed
783 784 785 786
    public ResponseEntity<Map<String, Object>> statisticsAdd(TUser user) {
        Map<String, Object> resultMap = new LinkedHashMap<String, Object>();
        try {
            if (StringUtils.isBlank(user.getUserName())) {
wzp's avatar
wzp committed
787
                resultMap.put("resultCode", "400");
wzp's avatar
wzp committed
788 789 790 791 792 793 794 795 796 797 798
                resultMap.put("message", "账号不能为空!");
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(resultMap);
            } else {
                user.setUserName(StringUtils.trimToNull(user.getUserName()));
            }

            user.setPassword("123456");

            QueryWrapper<TUser> ew = new QueryWrapper<>();
            if (StringUtils.isNoneBlank(user.getUserName())) {
                user.setUserName(user.getUserName().trim());
wzp's avatar
wzp committed
799
                ew.eq("is_deleted", false);
wzp's avatar
wzp committed
800 801 802
                ew.eq("user_name", user.getUserName());
                TUser one = this.userService.getOne(ew);
                if (one != null) {
wzp's avatar
wzp committed
803
                    resultMap.put("resultCode", "200");
wzp's avatar
wzp committed
804 805 806 807 808 809 810 811 812 813 814 815 816
                    resultMap.put("message", "账号已存在!");
                    return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(resultMap);
                }
            }

            byte[] passwordSalt = SecureRandomSaltService.generateSalt();
            byte[] passwordHash = SHA256PasswordEncryptionService
                    .createPasswordHash(user.getPassword(), passwordSalt);
            user.setPasswordSalt(passwordSalt);
            user.setPasswordHash(passwordHash);
            user.setCreateTime(DateUtil80.getDateTimeOfTimestamp(System.currentTimeMillis()));
            user.setUpdateTime(user.getCreateTime());
            user.setIsDeleted(false);
liqin's avatar
liqin committed
817
            user.setStatus(AuditOperationEnum.ENABLE.name());
wzp's avatar
wzp committed
818
            user.setAuditStatus(AuditStatusEnum.APPROVED_FINAL.name());
wzp's avatar
wzp committed
819 820 821 822
            user.setType("5");

            boolean ret = this.userService.save(user);

wzp's avatar
wzp committed
823 824 825 826 827 828 829

            TUserRole userRole = new TUserRole();
            userRole.setUserId(user.getId());
            userRole.setRoleId("5");
            userRole.setIsDeleted(false);
            tUserRoleService.save(userRole);

wzp's avatar
wzp committed
830 831
            if (!ret) {
                // 新增失败, 500
wzp's avatar
wzp committed
832
                resultMap.put("resultCode", "500");
wzp's avatar
wzp committed
833 834 835 836
                resultMap.put("message", "服务器忙");
                return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
                        .body(resultMap);
            }
wzp's avatar
wzp committed
837
            resultMap.put("resultCode", "200");
wzp's avatar
wzp committed
838 839 840
            resultMap.put("message", "添加成功");
            resultMap.put("data", user.getPassword());
            // 201
wzp's avatar
wzp committed
841
            return ResponseEntity.ok(resultMap);
wzp's avatar
wzp committed
842
        } catch (Exception e) {
wzp's avatar
wzp committed
843
            resultMap.put("resultCode", "500");
wzp's avatar
wzp committed
844 845 846 847 848 849
            resultMap.put("message", "服务器忙");
            logger.error("新增成员错误!", e);
        }
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(resultMap);
    }

850 851
}