TUserController.java 37.7 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
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;
wzp's avatar
wzp committed
29
import org.apache.shiro.authz.annotation.RequiresAuthentication;
30 31 32 33 34
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
import javax.annotation.Resource;
wzp's avatar
wzp committed
37
import java.time.LocalDateTime;
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
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;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    @OperationLog("删除成员")
    @ApiOperation(value = "删除成员")
    @DeleteMapping(value = "/delete")
wzp's avatar
wzp committed
394
    @RequiresAuthentication  //@RequiresPermissions("/user/delete")
wzp's avatar
wzp committed
395 396 397 398 399
    @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
400
                resultMap.put("status", "400");
wzp's avatar
wzp committed
401 402 403 404 405 406 407 408 409 410 411 412 413 414
                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
415
                resultMap.put("resultCode", "400");
wzp's avatar
wzp committed
416 417 418
                resultMap.put("message", "删除失败");
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(resultMap);
            }
wzp's avatar
wzp committed
419
            resultMap.put("resultCode", "200");
wzp's avatar
wzp committed
420
            resultMap.put("message", "删除成功");
wzp's avatar
wzp committed
421
            return ResponseEntity.ok(resultMap);
wzp's avatar
wzp committed
422 423 424 425 426 427 428 429 430
        } catch (Exception e) {
            logger.error("删除用户出错!", e);
        }
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
    }

    @OperationLog("禁用成员")
    @ApiOperation(value = "禁用")
    @RequestMapping(value = "/disable", method = RequestMethod.PUT)
wzp's avatar
wzp committed
431
    @RequiresAuthentication  //@RequiresPermissions("/user/disable")
wzp's avatar
wzp committed
432 433 434 435 436 437
    @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
438
            //提交禁用审核,没有真正禁用
wzp's avatar
wzp committed
439 440
            String code = AuditStatusEnum.TBC.name();
            entity.setAuditStatus(code);
wzp's avatar
wzp committed
441 442
            entity.setUpdateTime(DateUtil80.getDateTimeOfTimestamp(System.currentTimeMillis()));

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

849 850
}