From 7ea5eece501c98a91555a5358931367e78e9d23b Mon Sep 17 00:00:00 2001
From: baizonghao <1719256278@qq.com>
Date: 星期四, 25 五月 2023 15:40:09 +0800
Subject: [PATCH] 11

---
 src/main/java/com/example/jz/controller/UserController.java |  237 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 209 insertions(+), 28 deletions(-)

diff --git a/src/main/java/com/example/jz/controller/UserController.java b/src/main/java/com/example/jz/controller/UserController.java
index 8dfb55c..9aa8b2f 100644
--- a/src/main/java/com/example/jz/controller/UserController.java
+++ b/src/main/java/com/example/jz/controller/UserController.java
@@ -1,31 +1,57 @@
 package com.example.jz.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.api.ApiController;
-import com.baomidou.mybatisplus.extension.api.R;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.example.jz.modle.entity.User;
-import com.example.jz.service.UserService;
+import com.example.jz.modle.R;
+import com.example.jz.modle.dto.ManagerDto;
+import com.example.jz.modle.dto.UserExpDto;
+import com.example.jz.modle.entity.*;
+import com.example.jz.service.*;
+import com.example.jz.utils.EasyExcelUtils;
+import com.example.jz.utils.Md5Utils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
 import java.io.Serializable;
-import java.util.List;
+import java.util.*;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 /**
  * 鐢ㄦ埛琛�(User)琛ㄦ帶鍒跺眰
  *
- * @author makejava
+ * @author 瀹夌懢鐒�
  * @since 2022-07-11 16:35:57
  */
 @RestController
 @RequestMapping("user")
+@Api(tags = "鐢ㄦ埛绠$悊")
 public class UserController extends ApiController {
-    /**
-     * 鏈嶅姟瀵硅薄
-     */
-    @Resource
     private UserService userService;
+
+    @Autowired
+    ReportService reportService;
+    @Autowired
+    GroupUserService groupUserService;
+    @Autowired
+    MessageService messageService;
+    @Autowired
+    CauseService causeService;
+
+    @Autowired
+    public void setUserService(UserService userService) {
+        this.userService = userService;
+    }
 
     /**
      * 鍒嗛〉鏌ヨ鎵�鏈夋暟鎹�
@@ -35,8 +61,26 @@
      * @return 鎵�鏈夋暟鎹�
      */
     @GetMapping
+    @ApiOperation("鍒嗛〉鏌ヨ鎵�鏈夋暟鎹�")
     public R selectAll(Page<User> page, User user) {
-        return success(this.userService.page(page, new QueryWrapper<>(user)));
+        R<Page<User>> res = R.ok(this.userService.page(page, new QueryWrapper<User>()
+                .eq("role", 0)
+                .and(StringUtils.isNotBlank(user.getUserMobile()) && StringUtils.isNotBlank(user.getRealName()), new Consumer<QueryWrapper<User>>() {
+                    @Override
+                    public void accept(QueryWrapper<User> userQueryWrapper) {
+                        userQueryWrapper.like("real_name", user.getRealName()).or().like("user_mobile", user.getUserMobile());
+                    }
+                })
+                .like(StringUtils.isNotBlank(user.getUserMobile()) && StringUtils.isBlank(user.getRealName()), "user_mobile", user.getUserMobile())
+                .and(StringUtils.isNotBlank(user.getRealName()) && StringUtils.isBlank(user.getNickName()), new Consumer<QueryWrapper<User>>() {
+                            @Override
+                            public void accept(QueryWrapper<User> userQueryWrapper) {
+                                userQueryWrapper.like("real_name", user.getRealName());
+                            }
+                        })
+//                .like(StringUtils.isNotBlank(user.getRealName()) && StringUtils.isBlank(user.getNickName()), "real_name", user.getRealName())
+                .orderByDesc("ctime")));
+        return res;
     }
 
     /**
@@ -46,19 +90,9 @@
      * @return 鍗曟潯鏁版嵁
      */
     @GetMapping("{id}")
+    @ApiOperation("閫氳繃涓婚敭鏌ヨ鍗曟潯鏁版嵁")
     public R selectOne(@PathVariable Serializable id) {
-        return success(this.userService.getById(id));
-    }
-
-    /**
-     * 鏂板鏁版嵁
-     *
-     * @param user 瀹炰綋瀵硅薄
-     * @return 鏂板缁撴灉
-     */
-    @PostMapping
-    public R insert(@RequestBody User user) {
-        return success(this.userService.save(user));
+        return R.ok(this.userService.getById(id));
     }
 
     /**
@@ -68,19 +102,166 @@
      * @return 淇敼缁撴灉
      */
     @PutMapping
+    @ApiOperation("淇敼鐢ㄦ埛鏁版嵁")
     public R update(@RequestBody User user) {
-        return success(this.userService.updateById(user));
+        return R.ok(userService.updateById(user));
     }
 
     /**
      * 鍒犻櫎鏁版嵁
      *
-     * @param idList 涓婚敭缁撳悎
+     * @param id 涓婚敭缁撳悎
      * @return 鍒犻櫎缁撴灉
      */
     @DeleteMapping
-    public R delete(@RequestParam("idList") List<Long> idList) {
-        return success(this.userService.removeByIds(idList));
+    @ApiOperation("鍒犻櫎鐢ㄦ埛鏁版嵁")
+    public R delete(@RequestParam("id") Integer id) {
+        reportService
+                .list(new LambdaQueryWrapper<Report>().eq(Report::getUserId, id))
+                .stream()
+                .forEach(item -> {
+                    groupUserService.remove(new LambdaQueryWrapper<GroupUser>().eq(GroupUser::getUserId, item.getId()));
+                    messageService.remove(new LambdaQueryWrapper<Message>().eq(Message::getUserId, item.getId()));
+                });
+        reportService.remove(new LambdaQueryWrapper<Report>().eq(Report::getUserId, id));
+        return R.ok(this.userService.removeById(id));
+    }
+
+
+    @GetMapping("/status")
+    @ApiOperation("绂佺敤/鍚敤鐢ㄦ埛")
+    public R updateStatus(Integer id, Integer status) {
+        int newStatus = 0;
+        if (status != null) {
+            if (status == 1) {
+                newStatus = 0;
+            } else {
+                newStatus = 1;
+            }
+        }
+        userService.update(new UpdateWrapper<User>().set("status", newStatus).eq("id", id));
+        return R.ok();
+    }
+
+    @PostMapping("/manager")
+    @ApiOperation("娣诲姞绠$悊")
+    public R addManager(@RequestBody ManagerDto managerDto) {
+        User user = new User().setRealName(managerDto.getRealName())
+                .setLoginUsername(managerDto.getRealName())
+                .setUserMobile(managerDto.getPhoneNumber())
+                .setLoginPassword(Md5Utils.md5(managerDto.getPassword()))
+                .setRole(1)
+                .setCtime(new Date());
+        return R.ok(userService.save(user));
+    }
+
+    @DeleteMapping("/manager")
+    @ApiOperation("鍒犻櫎绠$悊浜哄憳")
+    public R removeManager(@RequestParam Integer id) {
+        List<Cause> list = causeService.list(new LambdaQueryWrapper<Cause>().eq(Cause::getUserId, id));
+        if (!Objects.isNull(list) && list.size() != 0){
+            ArrayList<Map> maps = new ArrayList<>();
+            for (Cause cause : list) {
+                HashMap<String, String> map = new HashMap<>();
+                map.put("caseName", cause.getName());
+                map.put("caseNumber", cause.getNumber());
+                maps.add(map);
+            }
+            return R.failed(maps, "璇ヨ鍛樿繕鏈夋浠跺叧鑱�,鑻ヨ鍒犻櫎璇峰厛淇敼瀵瑰簲妗堜欢鍏宠仈鐨勮鍛�");
+        }
+//        causeService.list(new LambdaQueryWrapper<Cause>().eq(Cause::getUserId, id)).forEach(item -> {
+//            causeService.deleteCause(item.getId());
+//        });
+//        userService.remove(new LambdaQueryWrapper<User>().eq(User::getId, id));
+        messageService.remove(new LambdaQueryWrapper<Message>().eq(Message::getCopId, id));
+        return R.ok(userService.removeById(id));
+    }
+
+    @DeleteMapping("/crowd")
+    @ApiOperation("鍒犻櫎鏅�氱敤鎴�")
+    public R removeCrowd(@RequestParam Integer id){
+        List<Report> list = reportService.list(Wrappers.<Report>lambdaQuery().eq(Report::getUserId, id));
+        for (Report report : list) {
+            groupUserService.remove(new LambdaQueryWrapper<GroupUser>().eq(GroupUser::getUserId, report.getId()));
+            messageService.remove(new LambdaQueryWrapper<Message>().eq(Message::getUserId, report.getId()));
+            reportService.removeById(report.getId());
+        }
+        userService.remove(Wrappers.<User>lambdaQuery().eq(User::getId, id));
+        return R.ok();
+    }
+
+    @GetMapping("/manager")
+    @ApiOperation("鍒嗛〉鏌ヨ鎵�鏈夋暟鎹�")
+    public R selectManager(Page<User> page, User user) {
+        return R.ok(userService.page(page, new QueryWrapper<User>()
+                .eq("role", 1).ne("id", 1).ne("id", 418)
+                .and(StringUtils.isNotBlank(user.getUserMobile()) && StringUtils.isNotBlank(user.getRealName()), new Consumer<QueryWrapper<User>>() {
+                    @Override
+                    public void accept(QueryWrapper<User> userQueryWrapper) {
+                        userQueryWrapper.like("real_name", user.getRealName()).or().like("user_mobile", user.getUserMobile());
+                    }
+                })
+                .like(StringUtils.isNotBlank(user.getUserMobile()) && StringUtils.isBlank(user.getRealName()), "user_mobile", user.getUserMobile())
+                .or()
+                .like(StringUtils.isNotBlank(user.getRealName()) && StringUtils.isBlank(user.getUserMobile()), "real_name", user.getRealName())
+                .orderByDesc("ctime")));
+    }
+
+    @PutMapping("/manager")
+    @ApiOperation("淇敼绠$悊鍛樺瘑鐮�")
+    public R modify(@RequestBody ManagerDto managerDto) {
+        User user = new User().setLoginPassword(Md5Utils.md5(managerDto.getPassword()));
+        return R.ok(userService.update(user, new UpdateWrapper<User>().eq("user_mobile", managerDto.getPhoneNumber()).eq("real_name", managerDto.getRealName())));
+    }
+
+    @PostMapping("/add")
+    @ApiOperation("娣诲姞")
+    public R add(@RequestBody User user) {
+        user.setCtime(new Date());
+        return R.ok(userService.save(user));
+    }
+
+
+    /**
+     * 閲嶇疆绠$悊鍛樺瘑鐮�
+     *
+     * @param id 鐢ㄦ埛id
+     * @return
+     */
+    @GetMapping("/resetPassword/{id}")
+    @ApiOperation("閲嶇疆绠$悊鍛樺瘑鐮�")
+    public R resetPassword(@PathVariable Serializable id) {
+        User user = userService.getById(id);
+        // 閲嶇疆鍒濆瀵嗙爜涓鸿韩浠借瘉鍚庡叚浣�
+        user.setLoginPassword(Md5Utils.md5(user.getUserIdcard().substring(user.getUserIdcard().length() - 6)));
+        return R.ok(userService.updateById(user));
+    }
+
+    /**
+     * 杞负绠$悊鍛�
+     *
+     * @param id 鐢ㄦ埛id
+     * @return
+     */
+    @GetMapping("/toManager/{id}")
+    @ApiOperation("杞负绠$悊鍛�")
+    public R toManager(@PathVariable Serializable id) {
+        User user = userService.getById(id);
+        user.setRole(1);
+        return R.ok(userService.updateById(user));
+    }
+
+
+    @ApiOperation("鐢ㄦ埛淇℃伅瀵煎嚭")
+    @PostMapping("/exp")
+    public void UserExp(HttpServletResponse response){
+        List<User> list = userService.list(Wrappers.<User>lambdaQuery().eq(User::getRole, 0).eq(User::getStatus, 1));
+        List<UserExpDto> userExpDtos = list.stream().map(user -> {
+            UserExpDto userExpDto = new UserExpDto();
+            BeanUtils.copyProperties(user, userExpDto);
+            return userExpDto;
+        }).collect(Collectors.toList());
+        String sheetName = "鐢ㄦ埛瀵煎嚭";
+        EasyExcelUtils.export1(response, sheetName, UserExpDto.class, userExpDtos, "鐢ㄦ埛瀵煎嚭");
     }
 }
-

--
Gitblit v1.8.0