青羊经侦大队-数据平台
baizonghao
2023-03-21 75591d24b70c37c5325f88b0f26888056eb2f20d
src/main/java/com/example/jz/controller/WxAppController.java
@@ -3,6 +3,7 @@
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
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;
@@ -10,8 +11,7 @@
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.modle.vo.*;
import com.example.jz.service.*;
import com.example.jz.utils.HttpUtil;
import lombok.SneakyThrows;
@@ -25,6 +25,7 @@
import org.springframework.web.client.RestTemplate;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@RestController
@@ -38,7 +39,7 @@
    private final String wxApp_accessToken_verify_url = "https://api.weixin.qq.com/cgi-bin/token";
    @Value("${wx.appid}")
    private  String appid;
    private String appid;
    @Value("${wx.secret}")
    private String secret;
@@ -66,10 +67,11 @@
    MessageService messageService;
    @Autowired
    GroupUserService groupUserService;
    @Autowired
    PublicityService publicityService;
    @GetMapping("/login")
    @SneakyThrows
    public R login(@RequestParam String code, @RequestParam String phoneNumberCode) {
    @GetMapping("/checkIdentity")
    public R checkIdentity(@RequestParam String code, @RequestParam String phoneNumberCode) throws Exception {
        //小程序登录openid
        Map<String, Object> pathUrl = new HashMap<>();
        pathUrl.put("appid", appid);
@@ -98,14 +100,92 @@
        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()));
        if(Objects.isNull(user)){
            return R.ok(2, phone_info.getPurePhoneNumber());
        }else {
            if (user.getRole() == 1){
                return R.ok(1, phone_info.getPurePhoneNumber());
            } else  {
                return R.ok(0, phone_info.getPurePhoneNumber());
            }
        }
    }
//    @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();
//        }
//        User user1 = userDao.selectOne(new QueryWrapper<User>().eq("user_mobile", phone_info.getPurePhoneNumber()));
//        HashMap<String, Object> loginMessage = new HashMap<>();
//        loginMessage.put("id", id);
//        loginMessage.put("token", token);
//        loginMessage.put("role", role);
//        loginMessage.put("time", user1.getUserIdcard());
//        return R.ok(loginMessage);
//    }
    @GetMapping("/login")
    @SneakyThrows
    public R login(@RequestParam String phone) {
        User user = userDao.selectOne(new QueryWrapper<User>().eq("user_mobile", phone));
        String token;
        Integer role;
        Integer id = null;
        if (user == null || user.getId() == null) {
            User newUser = new User();
            newUser.setUserMobile(phone_info.getPurePhoneNumber());
            newUser.setUserMobile(phone);
            newUser.setUserRegtime(new Date());
            newUser.setOpenid(result.get("openid").toString());
            newUser.setOpenid(phone);
            newUser.setStatus(1);
            newUser.setRole(0);
            newUser.setCtime(new Date());
@@ -114,19 +194,18 @@
            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();
        }
        User user1 = userDao.selectOne(new QueryWrapper<User>().eq("user_mobile", phone_info.getPurePhoneNumber()));
        User user1 = userDao.selectOne(new QueryWrapper<User>().eq("user_mobile", phone));
        HashMap<String, Object> loginMessage = new HashMap<>();
        loginMessage.put("id", id);
        loginMessage.put("token", token);
        loginMessage.put("role", role);
        loginMessage.put("time",user1.getUserIdcard());
        loginMessage.put("time", user1.getUserIdcard());
        return R.ok(loginMessage);
    }
@@ -150,17 +229,37 @@
    @GetMapping("/user/cause")
    public R getCause(Integer id) {
        return R.ok(reportService.list(new QueryWrapper<Report>().eq("user_id", id)));
        List<Report> reports = reportService.list(new QueryWrapper<Report>().eq("user_id", id));
        List<ReportVXVO> res = reports.stream()
                .map(item -> {
                    ReportVXVO res1 = new ReportVXVO();
                    BeanUtils.copyProperties(item, res1);
                    if (!Objects.isNull(causeService.getById(item.getCauseId()))){
                        res1.setReportDescription(causeService.getById(item.getCauseId()).getName());
                    }
                    return res1;
                }).collect(Collectors.toList());
        return R.ok(res);
    }
    @PostMapping("/user/addReport")
    public R addReport(@RequestBody Report report) {
        User user = userService.getOne(new QueryWrapper<User>().eq("id", report.getUserId()));
    public R addReport(@RequestBody ReportVXVO reportVXVO) {
        User user = userService.getOne(new QueryWrapper<User>().eq("id", reportVXVO.getUserId()));
        user.setRealName(reportVXVO.getRealName());
        user.setSex(reportVXVO.getSex());
        user.setUserIdcard(reportVXVO.getUserIdCard());
        user.setLocation(reportVXVO.getLocation());
        user.setWorkingLocation(reportVXVO.getWorkingLocation());
        userService.update(user, new LambdaQueryWrapper<User>().eq(User::getId, user.getId()));
        Report report = new Report();
        BeanUtils.copyProperties(reportVXVO, report);
        report.setAmountInvolved(reportVXVO.getAmountInvolved());
        report.setPic(user.getPic());
        report.setIsInGroup(0);
        report.setCtime(new Date());
        report.setStatus(0);
        report.setReportMethod("现场录入");
        report.setReportMethod("扫码报案");
        return R.ok(reportService.save(report));
    }
@@ -173,18 +272,13 @@
    @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) {
        if (!groupUsers.isEmpty()) {
            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"));
                List<Message> message = messageService.list(new QueryWrapper<Message>().eq("group_id", item.getId()).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());
                }
                getMessage(groupMap, message);
                if (StringUtils.isNotBlank(lastDate)) {
                    int count = messageService.count(new QueryWrapper<Message>().eq("group_id", item.getId()).between("ctime", lastDate, newDate));
                    groupMap.put("count", count);
@@ -196,21 +290,51 @@
        return R.ok(list);
    }
    @GetMapping("/isExist")
    public R isExist(@RequestParam String phone){
        User one = userService.getOne(new LambdaQueryWrapper<User>().eq(User::getUserMobile, phone));
        if(Objects.isNull(one)){
            return R.ok(false, "该手机号没有被注册");
        }else {
            return R.ok(true, "该手机号已被注册");
        }
    }
    /**
     *  显示用户信息
     */
    @GetMapping("/getGroupUserInfo")
    public R getGroupUserInfo(@RequestParam Integer id){
        User one = userService.getOne(new LambdaQueryWrapper<User>().eq(User::getId, id));
        MessageUserInfoVO messageUserInfoVO = new MessageUserInfoVO();
        BeanUtils.copyProperties(messageUserInfoVO, one);
        return R.ok(messageUserInfoVO);
    }
    private void getMessage(HashMap<String, Object> groupMap, List<Message> message) {
        if (!message.isEmpty()) {
            groupMap.put("message", message.get(0).getText());
            if (message.get(0).getUserId() == null) {
                groupMap.put("name", userDao.selectOne(new QueryWrapper<User>().eq("id", message.get(0).getCopId())).getRealName());
            } else {
                groupMap.put("name", message.get(0).getReportName());
            }
            groupMap.put("time", message.get(0).getCtime());
        }
    }
    @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)))
        reportService.listGroup(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());
                                }
                                getMessage(groupMap, message);
                                Group group = groupService.getOne(new QueryWrapper<Group>().eq("id", groupUser.getGroupId()));
                                groupMap.put("groupName", group.getGroupName());
                                groupMap.put("id", group.getId());
@@ -242,6 +366,8 @@
                        messageMap.put("id", user.getId());
                        messageMap.put("name", item.getReportName());
                        messageMap.put("mobile", user.getUserMobile());
                        messageMap.put("idcard", user.getUserIdcard());
                        messageMap.put("sex", user.getSex());
                        messageMap.put("pic", user.getPic());
                        messageMap.put("role", 0);
                    } else {
@@ -249,6 +375,7 @@
                        User user = userService.getOne(new QueryWrapper<User>().eq("id", item.getCopId()));
                        messageMap.put("name", user.getRealName());
                        messageMap.put("mobile", user.getUserMobile());
                        messageMap.put("sex", user.getSex());
                        messageMap.put("role", 1);
                    }
                    message.add(messageMap);
@@ -392,9 +519,11 @@
        return R.ok(messageService.save(message));
    }
    @GetMapping("/group/user/sendMsg")
    public R sendUserMsg(@RequestParam Integer id, @RequestParam Integer groupId, @RequestParam String msg) {
        if (StringUtils.isBlank(msg)){
        if (StringUtils.isBlank(msg)) {
            return R.failed("msg is blank");
        }
        Message message = new Message();
@@ -405,4 +534,41 @@
        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));
    }
    @GetMapping("/group/member/detail")
    public R getMemberDetail(@RequestParam Integer id) {
        Report report = reportService.getOne(new LambdaQueryWrapper<Report>().eq(Report::getId, id));
        ReportVo reportVo = new ReportVo();
        BeanUtils.copyProperties(report, reportVo);
        User user = userDao.selectOne(new LambdaQueryWrapper<User>().eq(User::getId, report.getUserId()));
        reportVo.setReporterName(user.getRealName());
        reportVo.setMobile(user.getUserMobile());
        reportVo.setIdcard(user.getUserIdcard());
        return R.ok(reportVo);
    }
    @GetMapping("/manager/report")
    public R queryReport() {
        return R.ok(reportService.list(new LambdaQueryWrapper<Report>().eq(Report::getStatus, 0))
                .stream()
                .map(item -> {
                    ReportVo reportVo = new ReportVo();
                    BeanUtils.copyProperties(item, reportVo);
                    User user = userDao.selectOne(new LambdaQueryWrapper<User>().eq(User::getId, item.getUserId()));
                    reportVo.setReporterName(user.getRealName());
                    reportVo.setMobile(user.getUserMobile());
                    reportVo.setIdcard(user.getUserIdcard());
                    return reportVo;
                })
                .collect(Collectors.toList()));
    }
    @GetMapping("/publicity")
    public R queryPublicity(@RequestParam(required = false) Integer size) {
        List<Publicity> publicityList = publicityService.list(new LambdaQueryWrapper<Publicity>().eq(Publicity::getStatus, 1));
        if (size != null) {
            return R.ok(publicityList.stream().limit(size));
        }
        return R.ok(publicityList);
    }
}