青羊经侦大队-数据平台
wl
2022-09-19 ba21c6caa5e573cf52d7f93f0be14d32fa893935
支持小程序和修改bug
17个文件已修改
6个文件已添加
752 ■■■■■ 已修改文件
pom.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/auth/MyTokenSecurityConfig.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/auth/TokenJwtManager.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/auth/TokenLoginFilter.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/config/RestTemplateConfig.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/controller/CauseController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/controller/GroupController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/controller/UserController.java 77 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/controller/WxAppController.java 400 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/modle/dto/CauseDto.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/modle/dto/ManagerDto.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/modle/entity/Cause.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/modle/entity/GroupUser.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/modle/entity/PhoneInFo.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/modle/entity/User.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/modle/vo/CauseVo.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/modle/vo/MemberVo.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/modle/vo/PublicityVo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/service/CauseService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/service/impl/CauseServiceImpl.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/service/impl/ReportServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/jz/utils/HttpUtil.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ReportDao.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -50,6 +50,12 @@
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.2</version>
        </dependency>
        <!-- httpclient-->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.12</version>
        </dependency>
        <!-- minio SDK -->
        <dependency>
            <groupId>io.minio</groupId>
src/main/java/com/example/jz/auth/MyTokenSecurityConfig.java
@@ -77,7 +77,7 @@
                .and()
                .authorizeRequests() // 请求设置
                .antMatchers("/user/register", "/webjars/**", "/swagger/**", "/v2/api-docs", "/doc.html", "/swagger-ui.html", "/swagger-resources/**" ).permitAll() // 配置不需要认证的接口
                .antMatchers("/api/**").permitAll() // 开放小程序的接口
                .antMatchers("/wx/login").permitAll() // 开放小程序的接口
                .anyRequest().authenticated() // 任何请求都需要认证
                .and()
                .logout() // logout设定
src/main/java/com/example/jz/auth/TokenJwtManager.java
@@ -5,6 +5,7 @@
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.Claim;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.example.jz.modle.entity.User;
import org.springframework.stereotype.Component;
import java.util.Calendar;
@@ -43,5 +44,17 @@
        Claim username = verify.getClaim("username");
        return username.asString();
    }
    public String createToken(User user) {
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.SECOND, tokenEcpiration);
        return JWT.create()
                .withKeyId(user.getId().toString())
                .withHeader(new HashMap<>())
                .withClaim("username", user.getLoginUsername())
                .withExpiresAt(calendar.getTime())
                .sign(Algorithm.HMAC256(tokenSignKey));
    }
}
src/main/java/com/example/jz/auth/TokenLoginFilter.java
@@ -25,6 +25,7 @@
 */
public class TokenLoginFilter extends UsernamePasswordAuthenticationFilter {
    private TokenJwtManager tokenJwtManager;
    private AuthenticationManager authenticationManager;
src/main/java/com/example/jz/config/RestTemplateConfig.java
New file
@@ -0,0 +1,24 @@
package com.example.jz.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
@Configuration
public class RestTemplateConfig {
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
    @Bean
    public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
        SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
        factory.setReadTimeout(5000);//ms
        factory.setConnectTimeout(15000);//ms
        return factory;
    }
}
src/main/java/com/example/jz/controller/CauseController.java
@@ -73,6 +73,12 @@
        return R.ok(causeService.getCauserListByCondition(cause, status, size, current));
    }
    @ApiOperation(httpMethod = "GET", value = "案件台-案件录入-案件录入列表")
    @GetMapping("/getCause")
    @ApiResponse(message = "执行成功", code = 200)
    public R getCause(String cause, Integer status, Integer size, Integer current,Integer id) {
        return R.ok(causeService.getCauserListByCondition(cause, status, size, current,id));
    }
    @ApiOperation(httpMethod = "GET", value = "案件台-案件录入-负责人查询")
    @GetMapping("/getManagerList")
    @ApiResponse(message = "执行成功", code = 200)
src/main/java/com/example/jz/controller/GroupController.java
@@ -69,15 +69,15 @@
    @PutMapping("banSpeech")
    @ApiOperation(value = "禁言")
    @ApiImplicitParam(name = "id", value = "群组id", required = true, dataType = "Integer")
    public R setBanSpeech(@RequestParam("id") Integer id) {
        return R.ok(groupUserService.update(new UpdateWrapper<GroupUser>().set("ban_speech",1).eq("user_id",id)));
    public R setBanSpeech(@RequestParam("id") Integer id,@RequestParam("groupId")Integer groupId) {
        return R.ok(groupUserService.update(new UpdateWrapper<GroupUser>().set("ban_speech",1).eq("user_id",id).eq("group_id",groupId)));
    }
    @PutMapping("allowSpeech")
    @ApiOperation(value = "允许发言")
    @ApiImplicitParam(name = "id", value = "群组id", required = true, dataType = "Integer")
    public R setAllowSpeech(@RequestParam("id") Integer id) {
        return R.ok(groupUserService.update(new UpdateWrapper<GroupUser>().set("ban_speech",0).eq("user_id",id)));
    public R setAllowSpeech(@RequestParam("id") Integer id,@RequestParam("groupId")Integer groupId) {
        return R.ok(groupUserService.update(new UpdateWrapper<GroupUser>().set("ban_speech",0).eq("user_id",id).eq("group_id",groupId)));
    }
    @PutMapping("banSpeechAll")
src/main/java/com/example/jz/controller/UserController.java
@@ -1,23 +1,23 @@
package com.example.jz.controller;
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.extension.api.ApiController;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.jz.modle.R;
import com.example.jz.modle.dto.ManagerDto;
import com.example.jz.modle.entity.User;
import com.example.jz.service.UserService;
import com.example.jz.utils.Md5Utils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.function.Consumer;
/**
 * 用户表(User)表控制层
@@ -47,9 +47,16 @@
    @ApiOperation("分页查询所有数据")
    public R selectAll(Page<User> page, User user) {
        return R.ok(this.userService.page(page, new QueryWrapper<User>()
                        .like(StringUtils.isNotBlank(user.getNickName()),"nick_name",user.getNickName())
                .eq("role", 0)
                        .and(StringUtils.isNotBlank(user.getNickName()) && StringUtils.isNotBlank(user.getRealName()), new Consumer<QueryWrapper<User>>() {
                            @Override
                            public void accept(QueryWrapper<User> userQueryWrapper) {
                                userQueryWrapper.like("real_name", user.getRealName()).or().like("nick_name", user.getNickName());
                            }
                        })
                .like(StringUtils.isNotBlank(user.getNickName())&&StringUtils.isBlank(user.getRealName()), "nick_name", user.getNickName())
                .or()
                .like(StringUtils.isNotBlank(user.getRealName()),"real_name",user.getRealName())
                .like(StringUtils.isNotBlank(user.getRealName())&&StringUtils.isBlank(user.getNickName()), "real_name", user.getRealName())
                .orderByDesc("ctime")));
    }
@@ -80,7 +87,7 @@
    /**
     * 删除数据
     *
     * @param idList 主键结合
     * @param id 主键结合
     * @return 删除结果
     */
    @DeleteMapping
@@ -89,23 +96,47 @@
        return R.ok(this.userService.removeById(id));
    }
    /**
     * 添加管理员
     *
     * @param id       用户id
     * @param username 管理员用户名
     * @param password 管理员密码
     * @return
     */
    @PostMapping("/addAdmin/{id}")
    @ApiOperation("添加管理员")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "password", value = "密码", required = true, dataType = "String"),
            @ApiImplicitParam(name = "username", value = "用户名", required = true, dataType = "String")
    })
    public R addAdmin(@PathVariable Serializable id, String username, String password) {
        User user = userService.getById(id).setLoginUsername(username).setLoginPassword(Md5Utils.md5(password)).setRole(1);
        return R.ok(userService.updateById(user));
    @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) {
        return R.ok(userService.removeById(id));
    }
    @GetMapping("/manager")
    @ApiOperation("分页查询所有数据")
    public R selectManager(Page<User> page, User user) {
        return R.ok( userService.page(page, new QueryWrapper<User>()
                .eq("role", 1)
                .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")
src/main/java/com/example/jz/controller/WxAppController.java
New file
@@ -0,0 +1,400 @@
package com.example.jz.controller;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
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.example.jz.auth.TokenJwtManager;
import com.example.jz.dao.UserDao;
import com.example.jz.modle.R;
import com.example.jz.modle.entity.*;
import com.example.jz.modle.vo.CauseVo;
import com.example.jz.modle.vo.MemberVo;
import com.example.jz.service.*;
import com.example.jz.utils.HttpUtil;
import lombok.SneakyThrows;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;
import java.util.*;
import java.util.stream.Collectors;
@RestController
@RequestMapping("/wx")
public class WxAppController {
    private final String wxApp_userCode_verify_url = "https://api.weixin.qq.com/sns/jscode2session";
    private final String wxApp_phoneNumber_verify_url = "https://api.weixin.qq.com/wxa/business/getuserphonenumber";
    private final String wxApp_accessToken_verify_url = "https://api.weixin.qq.com/cgi-bin/token";
    private final String appid = "wxebbb232d366dae09";
    private final String secret = "9a160c97c821eaa163240e8ec9185b77";
    private final String js_code = "";
    private final String grant_type = "authorization_code";
    @Autowired
    UserDao userDao;
    @Autowired
    UserService userService;
    @Autowired
    TokenJwtManager tokenJwtManager;
    @Autowired
    private RestTemplate restTemplate;
    @Autowired
    ReportService reportService;
    @Autowired
    CauseService causeService;
    @Autowired
    GroupService groupService;
    @Autowired
    MessageService messageService;
    @Autowired
    GroupUserService groupUserService;
    @GetMapping("/login")
    @SneakyThrows
    public R login(@RequestParam String code, @RequestParam String phoneNumberCode) {
        //小程序登录openid
        Map<String, Object> pathUrl = new HashMap<>();
        pathUrl.put("appid", appid);
        pathUrl.put("secret", secret);
        pathUrl.put("js_code", code);
        pathUrl.put("grant_type", grant_type);
        JSONObject result = JSONUtil.parseObj(HttpUtil.doGet(wxApp_userCode_verify_url, pathUrl));
        //手机号码的access token
        Map<String, Object> accessToken = new HashMap<>();
        accessToken.put("appid", appid);
        accessToken.put("secret", secret);
        accessToken.put("grant_type", "client_credential");
        JSONObject accessTokenResult = JSONUtil.parseObj(HttpUtil.doGet(wxApp_accessToken_verify_url, accessToken));
        //电话号码
        String url = wxApp_phoneNumber_verify_url + "?access_token=" + accessTokenResult.get("access_token");
        Map<String, Object> phoneNumber = new HashMap<>();
        phoneNumber.put("code", phoneNumberCode);
        HttpHeaders headers = new HttpHeaders();
        HttpEntity httpEntity = new HttpEntity<>(phoneNumber, headers);
        System.out.println(httpEntity);
        ResponseEntity response = restTemplate.postForEntity(url, httpEntity, Object.class);
        response.getBody();
        JSONObject entries = JSONUtil.parseObj(response.getBody());
        PhoneInFo phone_info = entries.get("phone_info", PhoneInFo.class);
        User user = userDao.selectOne(new QueryWrapper<User>().eq("user_mobile", phone_info.getPurePhoneNumber()));
        String token;
        Integer role;
        Integer id = null;
        if (user == null || user.getId() == null) {
            User newUser = new User();
            newUser.setUserMobile(phone_info.getPurePhoneNumber());
            newUser.setUserRegtime(new Date());
            newUser.setOpenid(result.get("openid").toString());
            newUser.setStatus(1);
            newUser.setRole(0);
            newUser.setCtime(new Date());
            userService.save(newUser);
            token = tokenJwtManager.createToken(newUser);
            role = 0;
            id = newUser.getId();
        } else {
            user.setOpenid(result.get("openid").toString());
            user.setUserLasttime(new Date());
            userDao.updateById(user);
            token = tokenJwtManager.createToken(user);
            role = user.getRole();
            id = user.getId();
        }
        HashMap<String, Object> loginMessage = new HashMap<>();
        loginMessage.put("id", id);
        loginMessage.put("token", token);
        loginMessage.put("role", role);
        return R.ok(loginMessage);
    }
    @GetMapping("/manager/myself")
    public R getReport(Integer id) {
        HashMap<String, Object> myselfMessage = new HashMap<>();
        User user = userService.getOne(new QueryWrapper<User>().eq("id", id));
        int causeNum = causeService.count(new QueryWrapper<Cause>().eq("user_id", id));
        Integer reporterNum = causeService.list(new QueryWrapper<Cause>().eq("user_id", id)).stream().mapToInt(item -> reportService.count(new QueryWrapper<Report>().eq("cause_id", item.getId()))).sum();
        myselfMessage.put("name", user.getRealName());
        myselfMessage.put("phoneNum", user.getUserMobile());
        myselfMessage.put("causeNum", causeNum);
        myselfMessage.put("reporterNum", reporterNum);
        return R.ok(myselfMessage);
    }
    @GetMapping("/user/myself")
    public R getMyself(Integer id) {
        return R.ok(userService.getOne(new QueryWrapper<User>().eq("id", id)));
    }
    @GetMapping("/user/cause")
    public R getCause(Integer id) {
        return R.ok(reportService.list(new QueryWrapper<Report>().eq("user_id", id)));
    }
    @PostMapping("/user/addReport")
    public R addReport(@RequestBody Report report) {
        User user = userService.getOne(new QueryWrapper<User>().eq("id", report.getUserId()));
        report.setPic(user.getPic());
        report.setIsInGroup(0);
        report.setCtime(new Date());
        report.setStatus(0);
        report.setReportMethod("现场录入");
        return R.ok(reportService.save(report));
    }
    @PostMapping("/user/add")
    public R addUser(@RequestBody User user) {
        user.setUserLasttime(new Date());
        return R.ok(userService.updateById(user));
    }
    @GetMapping("/manager/group/list")
    public R getMessage(@RequestParam Integer id, @RequestParam String newDate, @RequestParam String lastDate) {
        ArrayList<Map<String, Object>> list = new ArrayList<>();
//        List<GroupUser> groupUsers = groupUserService.list(new QueryWrapper<GroupUser>().eq("user_id", id));
        List<Group> groupUsers = groupService.list(new QueryWrapper<Group>().eq("user_id", id));
        if (groupUsers != null && groupUsers.size() != 0) {
            groupUsers.forEach(item -> {
                HashMap<String, Object> groupMap = new HashMap<>();
                List<Message> message = messageService.list(new QueryWrapper<Message>().eq("group_id", item.getId()).isNotNull("user_id").orderByDesc("ctime"));
                groupMap.put("groupName", item.getGroupName());
                if (message != null && message.size() != 0) {
                    groupMap.put("message", message.get(0).getText());
                    groupMap.put("name", message.get(0).getReportName());
                    groupMap.put("time", message.get(0).getCtime());
                }
                if (StringUtils.isNotBlank(lastDate)) {
                    int count = messageService.count(new QueryWrapper<Message>().eq("group_id", item.getId()).between("ctime", lastDate, newDate));
                    groupMap.put("count", count);
                }
                groupMap.put("id", item.getId());
                list.add(groupMap);
            });
        }
        return R.ok(list);
    }
    @GetMapping("/user/group/list")
    public R getUserMessage(@RequestParam Integer id, @RequestParam String newDate, @RequestParam String lastDate) {
        ArrayList<Map<String, Object>> list = new ArrayList<>();
        reportService.list((new QueryWrapper<Report>().eq("user_id", id)))
                .forEach(item ->
                        {
                            GroupUser groupUser = groupUserService.getOne(new QueryWrapper<GroupUser>().eq("user_id", item.getId()));
                            if (groupUser != null) {
                                HashMap<String, Object> groupMap = new HashMap<>();
                                List<Message> message = messageService.list(new QueryWrapper<Message>().eq("group_id", groupUser.getGroupId()).orderByDesc("ctime"));
                                if (message != null && message.size() != 0) {
                                    groupMap.put("message", message.get(0).getText());
                                    groupMap.put("time", message.get(0).getCtime());
                                }
                                Group group = groupService.getOne(new QueryWrapper<Group>().eq("id", groupUser.getGroupId()));
                                groupMap.put("groupName", group.getGroupName());
                                groupMap.put("id", group.getId());
                                groupMap.put("ban", groupUser.getBanSpeech());
                                groupMap.put("reportId", groupUser.getUserId());
                                if (StringUtils.isNotBlank(lastDate)) {
                                    int count = messageService.count(new QueryWrapper<Message>().eq("group_id", groupUser.getGroupId()).between("ctime", lastDate, newDate));
                                    groupMap.put("count", count);
                                }
                                list.add(groupMap);
                            }
                        }
                );
        return R.ok(list);
    }
    @GetMapping("/message")
    public R getMessage(@RequestParam Integer groupId) {
        ArrayList<HashMap<String, Object>> message = new ArrayList<>();
        messageService.list(new QueryWrapper<Message>().eq("group_id", groupId).orderByAsc("ctime")).stream()
                .forEach(item -> {
                    HashMap<String, Object> messageMap = new HashMap<>();
                    messageMap.put("text", item.getText());
                    messageMap.put("time", item.getCtime());
                    if (item.getUserId() != null) {
                        Report report = reportService.getOne(new QueryWrapper<Report>().eq("id", item.getUserId()));
                        User user = userService.getOne(new QueryWrapper<User>().eq("id", report.getUserId()));
                        messageMap.put("id", user.getId());
                        messageMap.put("name", item.getReportName());
                        messageMap.put("mobile", user.getUserMobile());
                        messageMap.put("pic", user.getPic());
                        messageMap.put("role", 0);
                    } else {
                        messageMap.put("id", item.getCopId());
                        User user = userService.getOne(new QueryWrapper<User>().eq("id", item.getCopId()));
                        messageMap.put("name", user.getRealName());
                        messageMap.put("mobile", user.getUserMobile());
                        messageMap.put("role", 1);
                    }
                    message.add(messageMap);
                });
        return R.ok(message);
    }
    @GetMapping("/group/cause")
    public R getGroupCause(@RequestParam Integer id) {
        Integer causeId = groupService.getOne(new QueryWrapper<Group>().eq("id", id)).getCauseId();
        Cause cause = causeService.getOne(new QueryWrapper<Cause>().eq("id", causeId));
        CauseVo causeVo = new CauseVo();
        BeanUtils.copyProperties(cause, causeVo);
        User user = userService.getOne(new QueryWrapper<User>().eq("id", cause.getUserId()));
        causeVo.setUserName(user.getRealName());
        causeVo.setMobile(user.getUserMobile());
        causeVo.setReportNumber(reportService.count(new QueryWrapper<Report>().eq("cause_id", causeId)));
        return R.ok(causeVo);
    }
    @GetMapping("/group/member")
    public R getGroupMember(@RequestParam Integer id) {
        Map<String, Object> map = new HashMap<>();
        List<GroupUser> groupUserList = groupUserService.list(new QueryWrapper<GroupUser>().eq("group_id", id));
        List<MemberVo> memberVoList = groupUserList.stream()
                .map(item -> {
                    Report report = reportService.getOne(new QueryWrapper<Report>().eq("id", item.getUserId()));
                    User user = userService.getOne(new QueryWrapper<User>().eq("id", report.getUserId()));
                    MemberVo memberVo = new MemberVo();
                    memberVo.setRealName(user.getRealName());
                    memberVo.setPic(user.getPic());
                    memberVo.setId(item.getUserId());
                    memberVo.setBanSpeech(item.getBanSpeech());
                    return memberVo;
                }).collect(Collectors.toList());
        List<Group> groupList = groupService.list(new QueryWrapper<Group>().eq("id", id));
        List<MemberVo> managerMemberVoList = groupList.stream().map(item -> {
                    User user = userService.getOne(new QueryWrapper<User>().eq("id", item.getUserId()));
                    MemberVo memberVo = new MemberVo();
                    memberVo.setRealName(user.getRealName());
                    memberVo.setPic(user.getPic());
                    memberVo.setId(item.getUserId());
                    return memberVo;
                }
        ).collect(Collectors.toList());
        map.put("managerMemberList", managerMemberVoList);
        map.put("managerMemberCount", managerMemberVoList.size());
        map.put("memberList", memberVoList);
        map.put("memberCount", memberVoList.size());
        return R.ok(map);
    }
    @GetMapping("/group/member/find")
    public R getGroupMemberByName(@RequestParam(required = false) String name, @RequestParam Integer id) {
        Map<String, Object> map = new HashMap<>();
        List<GroupUser> groupUserList = groupUserService.list(new QueryWrapper<GroupUser>().eq("group_id", id));
        List<MemberVo> memberVoList = groupUserList.stream()
                .filter(item ->
                        StringUtils
                                .matches(userService.getOne(new QueryWrapper<User>()
                                        .eq("id", reportService.getOne(new QueryWrapper<Report>()
                                                .eq("id", item.getUserId())).getUserId())).getRealName(), name))
                .map(item -> {
                    Report report = reportService.getOne(new QueryWrapper<Report>().eq("id", item.getUserId()));
                    User user = userService.getOne(new QueryWrapper<User>().eq("id", report.getUserId()));
                    MemberVo memberVo = new MemberVo();
                    memberVo.setRealName(user.getRealName());
                    memberVo.setPic(user.getPic());
                    memberVo.setId(item.getUserId());
                    memberVo.setBanSpeech(item.getBanSpeech());
                    return memberVo;
                }).collect(Collectors.toList());
        map.put("memberList", memberVoList);
        map.put("memberCount", memberVoList.size());
        return R.ok(map);
    }
    @GetMapping("/group/member/banSpeech")
    public R banSpeech(@RequestParam Integer id, @RequestParam Integer groupId) {
        return R.ok(groupUserService.update(new UpdateWrapper<GroupUser>().set("ban_speech", 1).eq("user_id", id).eq("group_id", groupId)));
    }
    @GetMapping("/group/member/allBanSpeech")
    public R allBanSpeech(@RequestParam Integer id) {
        return R.ok(groupUserService.update(new UpdateWrapper<GroupUser>().set("ban_speech", 1).eq("group_id", id)));
    }
    @GetMapping("/group/member/allowSpeech")
    public R allowSpeech(@RequestParam Integer id, @RequestParam Integer groupId) {
        return R.ok(groupUserService.update(new UpdateWrapper<GroupUser>().set("ban_speech", 0).eq("user_id", id).eq("group_id", groupId)));
    }
    @GetMapping("/group/member/allAllowSpeech")
    public R allAllowSpeech(@RequestParam Integer id) {
        return R.ok(groupUserService.update(new UpdateWrapper<GroupUser>().set("ban_speech", 0).eq("group_id", id)));
    }
    @GetMapping("/group/records/keyword")
    public R getRecords(@RequestParam String keyWord, @RequestParam Integer groupId) {
        return R.ok(messageService.list(new QueryWrapper<Message>().eq("group_id", groupId).like(StringUtils.isNotBlank(keyWord), "text", keyWord).isNotNull("user_id"))
                .stream().map(item -> {
                    Report report = reportService.getOne(new QueryWrapper<Report>().eq("id", item.getUserId()));
                    String pic = report.getPic();
                    if (StringUtils.isBlank(pic)) {
                        pic = userService.getOne(new QueryWrapper<User>().eq("id", report.getUserId())).getPic();
                    }
                    MemberVo memberVo = new MemberVo();
                    memberVo.setCtime(item.getCtime());
                    memberVo.setText(item.getText());
                    memberVo.setPic(pic);
                    memberVo.setRealName(item.getReportName());
                    return memberVo;
                }).collect(Collectors.toList()));
    }
    @GetMapping("/group/records/member")
    public R getRecords(@RequestParam Integer id, @RequestParam Integer groupId) {
        return R.ok(messageService.list(new QueryWrapper<Message>().eq("group_id", groupId).eq("user_id", id))
                .stream().map(item -> {
                    Report report = reportService.getOne(new QueryWrapper<Report>().eq("id", item.getUserId()));
                    String pic = report.getPic();
                    if (StringUtils.isBlank(pic)) {
                        pic = userService.getOne(new QueryWrapper<User>().eq("id", report.getUserId())).getPic();
                    }
                    MemberVo memberVo = new MemberVo();
                    memberVo.setCtime(item.getCtime());
                    memberVo.setText(item.getText());
                    memberVo.setPic(pic);
                    memberVo.setRealName(item.getReportName());
                    return memberVo;
                }).collect(Collectors.toList()));
    }
    @GetMapping("/group/manager/sendMsg")
    public R sendMsg(@RequestParam Integer id, @RequestParam Integer groupId, @RequestParam String msg) {
        Message message = new Message();
        message.setCopId(id);
        message.setText(msg);
        message.setCtime(new Date());
        message.setGroupId(groupId);
        return R.ok(messageService.save(message));
    }
    @GetMapping("/group/user/sendMsg")
    public R sendUserMsg(@RequestParam Integer id, @RequestParam Integer groupId, @RequestParam String msg) {
        Message message = new Message();
        message.setUserId(id);
        message.setText(msg);
        message.setCtime(new Date());
        message.setGroupId(groupId);
        message.setReportName(userService.getOne(new QueryWrapper<User>().eq("id", reportService.getOne(new QueryWrapper<Report>().eq("id", id)).getUserId())).getRealName());
        return R.ok(messageService.save(message));
    }
}
src/main/java/com/example/jz/modle/dto/CauseDto.java
@@ -40,4 +40,8 @@
    @ApiModelProperty(dataType = "Integer", value = "案件状态")
    @NotNull(message = "案件状态")
    private Integer status;
    @ApiModelProperty(dataType = "String", value = "金钱")
    @NotBlank(message = "预估总金额不能为空")
    private String totalMoney;
}
src/main/java/com/example/jz/modle/dto/ManagerDto.java
New file
@@ -0,0 +1,13 @@
package com.example.jz.modle.dto;
import lombok.Data;
@Data
public class ManagerDto {
    private String realName;
    private String password;
    private String phoneNumber;
}
src/main/java/com/example/jz/modle/entity/Cause.java
@@ -31,6 +31,7 @@
    //案件描述
    private String description;
    private String totalMoney;
    public Integer getId() {
        return id;
@@ -89,6 +90,14 @@
        this.description = description;
    }
    public String getTotalMoney() {
        return totalMoney;
    }
    public void setTotalMoney(String totalMoney) {
        this.totalMoney = totalMoney;
    }
    /**
     * 获取主键值
     *
src/main/java/com/example/jz/modle/entity/GroupUser.java
@@ -35,10 +35,15 @@
    /**
     * 是否禁言(0为否1为是)
     */
    private Object banSpeech;
    private Integer banSpeech;
    /**
     * 创建时间
     */
    private Date ctime;
    /**
     * 创建时间
     */
    private Date ltime;
}
src/main/java/com/example/jz/modle/entity/PhoneInFo.java
New file
@@ -0,0 +1,9 @@
package com.example.jz.modle.entity;
import lombok.Data;
@Data
public class PhoneInFo {
    private String phoneNumber;
    private String purePhoneNumber;
}
src/main/java/com/example/jz/modle/entity/User.java
@@ -86,5 +86,7 @@
    private Integer role;
    private Date ctime;
    private String openid;
}
src/main/java/com/example/jz/modle/vo/CauseVo.java
@@ -43,6 +43,10 @@
    @ApiModelProperty(dataType = "String", value = "案件描述")
    private String description;
    //案件描述
    @ApiModelProperty(dataType = "String", value = "案件描述")
    private String totalMoney;
    //案件报案人数
    @ApiModelProperty(dataType = "Integer", value = "案件报案人数")
    private Integer reportNumber;
@@ -50,4 +54,7 @@
    //案件群主id
    @ApiModelProperty(dataType = "Integer", value = "案件群主id")
    private Integer groupId;
    @ApiModelProperty(dataType = "String", value = "mobile")
    private String mobile;
}
src/main/java/com/example/jz/modle/vo/MemberVo.java
New file
@@ -0,0 +1,15 @@
package com.example.jz.modle.vo;
import lombok.Data;
import java.util.Date;
@Data
public class MemberVo {
    private String realName;
    private String pic;
    private Integer id;
    private Integer banSpeech;
    private String text;
    private Date ctime;
}
src/main/java/com/example/jz/modle/vo/PublicityVo.java
@@ -23,6 +23,9 @@
    @ApiModelProperty(dataType = "String", value = "创建人")
    private String userName;
    @ApiModelProperty(dataType = "String", value = "文本")
    private String text;
    //最早次案发时间
    @ApiModelProperty(dataType = "Date", value = "发布时间")
    private Date releaseTime;
src/main/java/com/example/jz/service/CauseService.java
@@ -84,5 +84,7 @@
    List<Map<String,String>> getCauseIdAndName();
    void loadFileReport(MultipartFile multipartFile,Integer causeId);
    PageParam<CauseVo> getCauserListByCondition(String cause, Integer status, Integer size, Integer current, Integer id);
}
src/main/java/com/example/jz/service/impl/CauseServiceImpl.java
@@ -115,6 +115,42 @@
    }
    @Override
    public PageParam<CauseVo> getCauserListByCondition(String cause, Integer status, Integer size, Integer current,Integer id) {
        QueryWrapper<Cause> causeQueryWrapper = new QueryWrapper<>();
        if (StringUtils.isNotBlank(cause)) {
            causeQueryWrapper.and(a -> a.like(StringUtils.isNotBlank(cause), "number", cause)
                    .or(StringUtils.isNotBlank(cause))
                    .like(StringUtils.isNotBlank(cause), "name", cause));
        }
        if (status != null) {
            causeQueryWrapper.eq("status", status);
        }
        causeQueryWrapper.eq("user_id",id);
        causeQueryWrapper.orderByDesc("ctime");
        PageParam<Cause> causePageParam = new PageParam<>();
        if (size != null) {
            causePageParam.setSize(size);
        }
        if (current != null) {
            causePageParam.setCurrent(current);
        }
        PageParam<Cause> causePage = causeDao.selectPage(causePageParam, causeQueryWrapper);
        List<CauseVo> causeVos = causePage.getRecords().stream().map(
                a -> {
                    CauseVo causeVo = new CauseVo();
                    BeanUtils.copyProperties(a, causeVo);
                    causeVo.setUserName(userDao.selectOne(new QueryWrapper<User>().eq("id", a.getUserId())).getRealName());
                    causeVo.setReportNumber(reportDao.selectCount(new QueryWrapper<Report>().eq("cause_id", a.getId())));
                    causeVo.setGroupId(groupDao.selectOne(new QueryWrapper<Group>().eq("cause_id", a.getId())).getId());
                    return causeVo;
                }).collect(Collectors.toList());
        PageParam<CauseVo> causeVoPageParam = new PageParam<>();
        BeanUtils.copyProperties(causePage, causeVoPageParam);
        causeVoPageParam.setRecords(causeVos);
        return causeVoPageParam;
    }
    @Override
    public List<UserVo> getManagerList() {
        return userDao.selectList(new QueryWrapper<User>().eq("role", 1)).stream().map(a -> {
            UserVo userVo = new UserVo();
@@ -252,7 +288,7 @@
                .setUserId(user.getId())
                .setCtime(new Date())
                .setStatus(0)
                .setReportMethod("现场录入")
                .setReportMethod("后台录入")
                .setIsCommission("0").setReportTime(new Date())
                .setCauseId(addReportDto.getCauseId());
        reportService.save(report);
src/main/java/com/example/jz/service/impl/ReportServiceImpl.java
@@ -206,7 +206,7 @@
                .setCtime(new Date())
                .setStatus(0)
                .setIsInGroup(0)
                .setReportMethod("现场录入")
                .setReportMethod("后台录入")
                .setIsCommission("0").setReportTime(new Date())
                .setCauseId(addReportDto.getCauseId());
        return reportService.save(report);
src/main/java/com/example/jz/utils/HttpUtil.java
New file
@@ -0,0 +1,103 @@
package com.example.jz.utils;
import org.apache.http.*;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class HttpUtil {
    private static final CloseableHttpClient httpclient = HttpClients.createDefault();
    public static String doGet(String urlPath, Map<String, Object> params)
            throws Exception {
        StringBuilder sb = new StringBuilder(urlPath);
        if (params != null && !params.isEmpty()) { // 说明有参数
            sb.append("?");
            Set<Entry<String, Object>> set = params.entrySet();
            for (Entry<String, Object> entry : set) { // 遍历map里面的参数
                String key = entry.getKey();
                String value = "";
                if (null != entry.getValue()) {
                    value = entry.getValue().toString();
                    // 转码
                    value = URLEncoder.encode(value, "UTF-8");
                }
                sb.append(key).append("=").append(value).append("&");
            }
            sb.deleteCharAt(sb.length() - 1); // 删除最后一个&
        }
        // System.out.println(sb.toString());
        URL url = new URL(sb.toString());
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setConnectTimeout(5000); // 5s超时
        conn.setRequestMethod("GET");
        if (conn.getResponseCode() == HttpStatus.SC_OK) {// HttpStatus.SC_OK ==
            // 200
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    conn.getInputStream()));
            StringBuilder sbs = new StringBuilder();
            String line;
            while ((line = reader.readLine()) != null) {
                sbs.append(line);
            }
            // JSONObject jsonObject = new JSONObject(sbs.toString());
            return sbs.toString();
        }
        return null;
    }
    /**
     * 发送HttpPost请求,参数为map
     * @param url
     * @param map
     * @return
     */
    public static String sendPost(String url, Map<String, Object> map) {
        List<NameValuePair> formparams = new ArrayList<NameValuePair>();
        for (Entry<String, Object> entry : map.entrySet()) {
            formparams.add(new BasicNameValuePair(entry.getKey(), entry.getValue().toString()));
        }
        UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams, Consts.UTF_8);
        HttpPost httppost = new HttpPost(url);
        httppost.setEntity(entity);
        CloseableHttpResponse response = null;
        try {
            response = httpclient.execute(httppost);
        } catch (IOException e) {
            e.printStackTrace();
        }
        HttpEntity entity1 = response.getEntity();
        String result = null;
        try {
            result = EntityUtils.toString(entity1);
        } catch (ParseException | IOException e) {
            e.printStackTrace();
        }
        return result;
    }
}
src/main/resources/mapper/ReportDao.xml
@@ -25,6 +25,7 @@
            <if test="reportParamDto.isInGroup != null">
                and r.is_in_group = ${reportParamDto.isInGroup}
            </if>
        and  r.status = 0
        </where>
        order by  r.ctime DESC
    </select>