TUserController.java 37.2 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
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.*;
34

35
import javax.annotation.Resource;
wzp's avatar
wzp committed
36
import java.time.LocalDateTime;
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
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;

59
    @Resource
wzp's avatar
wzp committed
60 61
    private RoleService roleService;

wzp's avatar
wzp committed
62 63 64
    @Resource
    private AuditServiceImpl auditService;

wzp's avatar
wzp committed
65 66 67
    @Resource
    private TBoxOperationServiceImpl boxOperationService;

wzp's avatar
wzp committed
68 69 70 71 72 73
    @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
74 75 76 77 78 79 80
    @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
81
    @MethodLog(operModule = OperModule.USER, operType = OperType.SELECT)
wzp's avatar
wzp committed
82
    public Map<String, Object> getPageList( String type,String userName,String status, String orgId, String areaId) {
wzp's avatar
wzp committed
83
        TUser user1 = getcurUser();
wzp's avatar
wzp committed
84 85 86 87 88 89
        TUser user = new TUser();
        if (StringUtils.isNotBlank(userName)) {
            user.setUserName(userName);
        }
        if (StringUtils.isNotBlank(type)) {
            user.setType(type);
wzp's avatar
wzp committed
90
            if (!"4".equals(type)) {
91 92 93
                //设置用户数据权限
                user.setOrgCode(user1.getOrgCode());
            }
wzp's avatar
wzp committed
94 95 96 97
            if ("4".equals(type)) {
                //设置用户数据权限
                user.setAreaName(TBoxOperationController.getAreaId(user1.getAreaId()));
            }
98 99 100 101 102 103 104
            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
105 106 107 108 109 110 111 112
        }
        if (StringUtils.isNotBlank(orgId)) {
            user.setOrgId(orgId);
        }
        if (StringUtils.isNotBlank(areaId)) {
            user.setAreaId(areaId);
        }
        if (StringUtils.isNotBlank(status)) {
liqin's avatar
liqin committed
113
            if (AuditOperationEnum.ENABLE.name().equals(status)||AuditOperationEnum.DISABLE.name().equals(status)) {
wzp's avatar
wzp committed
114
                user.setStatus(status);
liqin's avatar
liqin committed
115
            } else {
wzp's avatar
wzp committed
116 117 118
                user.setAuditStatus(status);
            }
        }
119

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

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

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

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

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

            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
254
            user.setStatus(AuditOperationEnum.ENABLE.name());
wzp's avatar
wzp committed
255
            user.setAuditStatus(AuditStatusEnum.APPROVED_FINAL.name());
wzp's avatar
wzp committed
256 257 258
            user.setIsDeleted(false);

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

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

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

wzp's avatar
wzp committed
271 272 273 274
            this.tUserRoleService.saveBatch(list1);

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

    @OperationLog("修改成员信息")
wzp's avatar
wzp committed
292
    @ApiOperation(value = "编辑用户信息")
wzp's avatar
wzp committed
293 294 295
    @PutMapping(value = "/update")
    @RequiresPermissions("/user/update")
    @MethodLog(operModule = OperModule.USER, operType = OperType.UPDATE)
wzp's avatar
wzp committed
296
    public Map<String, Object>  edit(@RequestBody TUser user) {
wzp's avatar
wzp committed
297 298 299 300
        Map<String, Object> resultMap = new HashMap<>();
        try {
            boolean ret = false;
            if (user.getId() != null) {
wzp's avatar
wzp committed
301 302 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

                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
338 339
                }

wzp's avatar
wzp committed
340 341 342
//                user.setUserName(StringUtils.trimToNull(user.getUserName()));
//                user.setPassword(StringUtils.trimToNull(user.getPassword()));
//                user.setRealName(StringUtils.trimToNull(user.getRealName()));
wzp's avatar
wzp committed
343 344 345 346 347 348 349 350
                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
351
                List<String> list = user.getRoleList();
wzp's avatar
wzp committed
352
                if (list != null && list.size() > 0&&list.get(0)!=null) {
wzp's avatar
wzp committed
353
                    ArrayList<TUserRole> list1 = new ArrayList<>();
wzp's avatar
wzp committed
354
                    for (String r : list) {
wzp's avatar
wzp committed
355 356
                        TUserRole userRole = new TUserRole();
                        userRole.setUserId(user.getId());
wzp's avatar
wzp committed
357
                        userRole.setRoleId(r);
wzp's avatar
wzp committed
358 359 360 361 362 363 364 365
                        userRole.setIsDeleted(false);
                        list1.add(userRole);
                    }

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

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

    @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
399
                resultMap.put("status", "400");
wzp's avatar
wzp committed
400 401 402 403 404 405 406 407 408 409 410 411 412 413
                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
414
                resultMap.put("resultCode", "400");
wzp's avatar
wzp committed
415 416 417
                resultMap.put("message", "删除失败");
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(resultMap);
            }
wzp's avatar
wzp committed
418
            resultMap.put("resultCode", "200");
wzp's avatar
wzp committed
419
            resultMap.put("message", "删除成功");
wzp's avatar
wzp committed
420
            return ResponseEntity.ok(resultMap);
wzp's avatar
wzp committed
421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436
        } 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
437
            //提交禁用审核,没有真正禁用
wzp's avatar
wzp committed
438 439
            String code = AuditStatusEnum.TBC.name();
            entity.setAuditStatus(code);
wzp's avatar
wzp committed
440 441
            entity.setUpdateTime(DateUtil80.getDateTimeOfTimestamp(System.currentTimeMillis()));

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

            boolean ret = this.userService.updateById(entity);
wzp's avatar
wzp committed
458 459 460 461 462 463 464
            //获取该用户的登陆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
465
                resultMap.put("resultCode", "400");
wzp's avatar
wzp committed
466 467 468
                resultMap.put("message", "禁用失败");
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(resultMap);
            }
wzp's avatar
wzp committed
469
            resultMap.put("resultCode", "200");
wzp's avatar
wzp committed
470
            resultMap.put("message", "禁用成功");
wzp's avatar
wzp committed
471
            return ResponseEntity.ok(resultMap);
wzp's avatar
wzp committed
472 473 474 475 476
        } catch (Exception e) {
            logger.error("禁用用户出错!", e);
        }
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
    }
wzp's avatar
wzp committed
477 478 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
//
//    @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
506

wzp's avatar
wzp committed
507 508 509 510
    @OperationLog("启用成员")
    @ApiOperation(value = "启用")
    @RequestMapping(value = "/enable", method = RequestMethod.PUT)
    @RequiresPermissions("/user/enable")
liqin's avatar
liqin committed
511
    @MethodLog(operModule = OperModule.USER, operType = OperType.ENABLE)
wzp's avatar
wzp committed
512 513 514 515 516 517
    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
518
            entity.setStatus(AuditOperationEnum.ENABLE.name());
wzp's avatar
wzp committed
519
            entity.setAuditStatus(AuditStatusEnum.APPROVED_FINAL.name());
wzp's avatar
wzp committed
520 521 522
            entity.setUpdateTime(DateUtil80.getDateTimeOfTimestamp(System.currentTimeMillis()));
            boolean ret = this.userService.updateById(entity);
            if (!ret) {
wzp's avatar
wzp committed
523
                map.put("resultCode", "500");
wzp's avatar
wzp committed
524 525 526
                map.put("message", "服务器错误");
                return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(map);
            }
wzp's avatar
wzp committed
527
            map.put("resultCode", "200");
wzp's avatar
wzp committed
528
            map.put("message", "启用成功");
wzp's avatar
wzp committed
529
            return ResponseEntity.ok(map);
wzp's avatar
wzp committed
530 531 532
        } catch (Exception e) {
            logger.error("用户启用出错!", e);
        }
liqin's avatar
liqin committed
533
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
wzp's avatar
wzp committed
534 535 536 537 538 539
    }

    @OperationLog("修改密码")
    @ApiOperation(value = "管理员更改自己的登录密码", notes = "管理员更改自己的登录密码")
    @RequestMapping(value = "/editPwd", method = RequestMethod.PUT)
    @RequiresPermissions("/user/editPwd")
wzp's avatar
wzp committed
540
    @MethodLog(operModule = OperModule.CHANGEPWD, operType = OperType.CHANGE_PASSWORD)
liqin's avatar
liqin committed
541 542
    public ResponseEntity<Map<String, Object>> editPwd(@RequestParam(value = "oldPassWord") String oldPassWord,
                                                       @RequestParam(value = "password") String password) {
wzp's avatar
wzp committed
543 544 545 546 547 548 549 550 551 552 553
        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()));
554
                user.setPassword(password);
wzp's avatar
wzp committed
555 556 557
                ret = this.userService.updateById(user);
            } else {
                logger.error("旧密码不正确");
wzp's avatar
wzp committed
558
                resultMap.put("resultCode", "400");
wzp's avatar
wzp committed
559 560 561 562
                resultMap.put("message", "旧密码不正确");
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(resultMap);
            }
            if (!ret) {
wzp's avatar
wzp committed
563
                resultMap.put("resultCode", "500");
wzp's avatar
wzp committed
564 565 566 567
                resultMap.put("message", "修改失败");
                // 更新失败, 500
                return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(resultMap);
            }
wzp's avatar
wzp committed
568
            resultMap.put("resultCode", "200");
wzp's avatar
wzp committed
569
            resultMap.put("message", "修改成功");
wzp's avatar
wzp committed
570
            return ResponseEntity.ok(resultMap);
wzp's avatar
wzp committed
571 572 573 574
        } catch (Exception e) {
            logger.error("更新密码错误!", e);
        }
        // 500
wzp's avatar
wzp committed
575
        resultMap.put("resultCode", "500");
wzp's avatar
wzp committed
576 577 578 579 580 581 582 583
        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
584
    @MethodLog(operModule = OperModule.USER, operType = OperType.RESET_PASSWORD)
wzp's avatar
wzp committed
585
    public ResponseEntity<Map<Object, Object>> resetPassword(String userId) {
wzp's avatar
wzp committed
586
        try {
wzp's avatar
wzp committed
587
            Map<Object, Object> map = new LinkedHashMap<>();
wzp's avatar
wzp committed
588 589 590 591 592 593 594
            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);
595
            user.setPassword(newPassword);
wzp's avatar
wzp committed
596 597 598 599 600 601
            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
602
            map.put("resultCode", "200");
wzp's avatar
wzp committed
603
            map.put("message", "重置密码成功");
wzp's avatar
wzp committed
604
            map.put("data", newPassword);
wzp's avatar
wzp committed
605
            return ResponseEntity.ok(map);
wzp's avatar
wzp committed
606 607 608 609 610 611
        } catch (Exception e) {
            logger.error("重置密码出错!", e);
        }
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
    }

wzp's avatar
wzp committed
612 613
    @OperationLog("新增机顶盒账号")
    @ApiOperation(value = "新增机顶盒账号")
wzp's avatar
wzp committed
614 615
    @RequestMapping(value = "/boxAdd", method = RequestMethod.POST)
    @RequiresPermissions("/user/boxAdd")
wzp's avatar
wzp committed
616
    @MethodLog(operModule = OperModule.STBBASE, operType = OperType.ADD)
wzp's avatar
wzp committed
617 618 619 620
    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
621
                resultMap.put("resultCode", "400");
wzp's avatar
wzp committed
622 623 624 625 626 627
                resultMap.put("message", "账号不能为空!");
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(resultMap);
            } else {
                user.setUserName(StringUtils.trimToNull(user.getUserName()));
            }

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

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

wzp's avatar
wzp committed
643 644 645 646 647 648 649
            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
650
                    resultMap.put("resultCode", "500");
wzp's avatar
wzp committed
651 652 653 654 655
                    resultMap.put("message", "每个单位只能有一个机顶盒账号!");
                    return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(resultMap);
                }
            }

wzp's avatar
wzp committed
656 657 658 659 660 661 662 663 664
            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
665
            user.setStatus(AuditOperationEnum.ENABLE.name());
wzp's avatar
wzp committed
666
            user.setAuditStatus(AuditStatusEnum.APPROVED_FINAL.name());
wzp's avatar
wzp committed
667 668 669 670
            user.setType("3");

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

wzp's avatar
wzp committed
671 672 673 674 675 676 677
            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
678

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

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

wzp's avatar
wzp committed
705 706 707 708
    @OperationLog("新增运维账号")
    @ApiOperation(value = "新增运维账号")
    @RequestMapping(value = "/operationAdd", method = RequestMethod.POST)
    @RequiresPermissions("/user/operationAdd")
wzp's avatar
wzp committed
709
    @MethodLog(operModule = OperModule.STBACCOUNT, operType = OperType.ADD)
wzp's avatar
wzp committed
710 711 712 713
    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
714
                resultMap.put("resultCode", "400");
wzp's avatar
wzp committed
715 716 717 718 719 720 721 722 723 724 725
                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
726
                ew.eq("is_deleted", false);
wzp's avatar
wzp committed
727 728 729
                ew.eq("user_name", user.getUserName());
                TUser one = this.userService.getOne(ew);
                if (one != null) {
wzp's avatar
wzp committed
730
                    resultMap.put("resultCode", "200");
wzp's avatar
wzp committed
731 732 733 734 735 736 737 738 739 740 741 742 743
                    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
744
            user.setStatus(AuditOperationEnum.ENABLE.name());
wzp's avatar
wzp committed
745
            user.setAuditStatus(AuditStatusEnum.APPROVED_FINAL.name());
wzp's avatar
wzp committed
746 747 748 749
            user.setType("4");

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

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

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

    @OperationLog("新增统计账号")
wzp's avatar
wzp committed
777
    @ApiOperation(value = "新增统计账号")
wzp's avatar
wzp committed
778 779
    @RequestMapping(value = "/statisticsAdd", method = RequestMethod.POST)
    @RequiresPermissions("/user/statisticsAdd")
wzp's avatar
wzp committed
780
    @MethodLog(operModule = OperModule.STATISTICALUSER, operType = OperType.ADD)
wzp's avatar
wzp committed
781 782 783 784
    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
785
                resultMap.put("resultCode", "400");
wzp's avatar
wzp committed
786 787 788 789 790 791 792 793 794 795 796
                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
797
                ew.eq("is_deleted", false);
wzp's avatar
wzp committed
798 799 800
                ew.eq("user_name", user.getUserName());
                TUser one = this.userService.getOne(ew);
                if (one != null) {
wzp's avatar
wzp committed
801
                    resultMap.put("resultCode", "200");
wzp's avatar
wzp committed
802 803 804 805 806 807 808 809 810 811 812 813 814
                    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
815
            user.setStatus(AuditOperationEnum.ENABLE.name());
wzp's avatar
wzp committed
816
            user.setAuditStatus(AuditStatusEnum.APPROVED_FINAL.name());
wzp's avatar
wzp committed
817 818 819 820
            user.setType("5");

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

wzp's avatar
wzp committed
821 822 823 824 825 826 827

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

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

848 849
}