From ba21c6caa5e573cf52d7f93f0be14d32fa893935 Mon Sep 17 00:00:00 2001 From: wl <173@qq.com> Date: 星期一, 19 九月 2022 10:22:01 +0800 Subject: [PATCH] 支持小程序和修改bug --- src/main/java/com/example/jz/config/RestTemplateConfig.java | 24 + src/main/java/com/example/jz/modle/dto/ManagerDto.java | 13 + src/main/java/com/example/jz/modle/entity/Cause.java | 9 src/main/resources/mapper/ReportDao.xml | 1 src/main/java/com/example/jz/modle/entity/GroupUser.java | 7 src/main/java/com/example/jz/modle/entity/User.java | 2 src/main/java/com/example/jz/modle/vo/CauseVo.java | 7 src/main/java/com/example/jz/auth/TokenLoginFilter.java | 1 src/main/java/com/example/jz/utils/HttpUtil.java | 103 +++++++ src/main/java/com/example/jz/controller/CauseController.java | 6 src/main/java/com/example/jz/controller/WxAppController.java | 400 ++++++++++++++++++++++++++++++ src/main/java/com/example/jz/service/impl/CauseServiceImpl.java | 38 ++ pom.xml | 6 src/main/java/com/example/jz/modle/vo/MemberVo.java | 15 + src/main/java/com/example/jz/auth/MyTokenSecurityConfig.java | 2 src/main/java/com/example/jz/controller/UserController.java | 77 ++++- src/main/java/com/example/jz/auth/TokenJwtManager.java | 13 + src/main/java/com/example/jz/modle/dto/CauseDto.java | 4 src/main/java/com/example/jz/modle/vo/PublicityVo.java | 3 src/main/java/com/example/jz/controller/GroupController.java | 8 src/main/java/com/example/jz/service/CauseService.java | 2 src/main/java/com/example/jz/modle/entity/PhoneInFo.java | 9 src/main/java/com/example/jz/service/impl/ReportServiceImpl.java | 2 23 files changed, 721 insertions(+), 31 deletions(-) diff --git a/pom.xml b/pom.xml index 80be62e..936fb03 100644 --- a/pom.xml +++ b/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> diff --git a/src/main/java/com/example/jz/auth/MyTokenSecurityConfig.java b/src/main/java/com/example/jz/auth/MyTokenSecurityConfig.java index 1e9aea1..0df8a6c 100644 --- a/src/main/java/com/example/jz/auth/MyTokenSecurityConfig.java +++ b/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璁惧畾 diff --git a/src/main/java/com/example/jz/auth/TokenJwtManager.java b/src/main/java/com/example/jz/auth/TokenJwtManager.java index abf9544..95ea355 100644 --- a/src/main/java/com/example/jz/auth/TokenJwtManager.java +++ b/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)); + } + } diff --git a/src/main/java/com/example/jz/auth/TokenLoginFilter.java b/src/main/java/com/example/jz/auth/TokenLoginFilter.java index a181e93..00b2e1d 100644 --- a/src/main/java/com/example/jz/auth/TokenLoginFilter.java +++ b/src/main/java/com/example/jz/auth/TokenLoginFilter.java @@ -25,6 +25,7 @@ */ public class TokenLoginFilter extends UsernamePasswordAuthenticationFilter { + private TokenJwtManager tokenJwtManager; private AuthenticationManager authenticationManager; diff --git a/src/main/java/com/example/jz/config/RestTemplateConfig.java b/src/main/java/com/example/jz/config/RestTemplateConfig.java new file mode 100644 index 0000000..ba1fe4f --- /dev/null +++ b/src/main/java/com/example/jz/config/RestTemplateConfig.java @@ -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; + } +} \ No newline at end of file diff --git a/src/main/java/com/example/jz/controller/CauseController.java b/src/main/java/com/example/jz/controller/CauseController.java index 2a4ce10..8ba9def 100644 --- a/src/main/java/com/example/jz/controller/CauseController.java +++ b/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) diff --git a/src/main/java/com/example/jz/controller/GroupController.java b/src/main/java/com/example/jz/controller/GroupController.java index 88968fe..9ecaf98 100644 --- a/src/main/java/com/example/jz/controller/GroupController.java +++ b/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") diff --git a/src/main/java/com/example/jz/controller/UserController.java b/src/main/java/com/example/jz/controller/UserController.java index eb3c7ec..d5a65b6 100644 --- a/src/main/java/com/example/jz/controller/UserController.java +++ b/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") diff --git a/src/main/java/com/example/jz/controller/WxAppController.java b/src/main/java/com/example/jz/controller/WxAppController.java new file mode 100644 index 0000000..6415d2b --- /dev/null +++ b/src/main/java/com/example/jz/controller/WxAppController.java @@ -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) { + //灏忕▼搴忕櫥褰昽penid + 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)); + + //鎵嬫満鍙风爜鐨刟ccess 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)); + } +} diff --git a/src/main/java/com/example/jz/modle/dto/CauseDto.java b/src/main/java/com/example/jz/modle/dto/CauseDto.java index 0c95d1f..ed2cd8b 100644 --- a/src/main/java/com/example/jz/modle/dto/CauseDto.java +++ b/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; } diff --git a/src/main/java/com/example/jz/modle/dto/ManagerDto.java b/src/main/java/com/example/jz/modle/dto/ManagerDto.java new file mode 100644 index 0000000..7686938 --- /dev/null +++ b/src/main/java/com/example/jz/modle/dto/ManagerDto.java @@ -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; +} diff --git a/src/main/java/com/example/jz/modle/entity/Cause.java b/src/main/java/com/example/jz/modle/entity/Cause.java index a0d9934..f9922f6 100644 --- a/src/main/java/com/example/jz/modle/entity/Cause.java +++ b/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; + } + /** * 鑾峰彇涓婚敭鍊� * diff --git a/src/main/java/com/example/jz/modle/entity/GroupUser.java b/src/main/java/com/example/jz/modle/entity/GroupUser.java index 29f829b..62efb4f 100644 --- a/src/main/java/com/example/jz/modle/entity/GroupUser.java +++ b/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; + } diff --git a/src/main/java/com/example/jz/modle/entity/PhoneInFo.java b/src/main/java/com/example/jz/modle/entity/PhoneInFo.java new file mode 100644 index 0000000..21caa69 --- /dev/null +++ b/src/main/java/com/example/jz/modle/entity/PhoneInFo.java @@ -0,0 +1,9 @@ +package com.example.jz.modle.entity; + +import lombok.Data; + +@Data +public class PhoneInFo { + private String phoneNumber; + private String purePhoneNumber; +} diff --git a/src/main/java/com/example/jz/modle/entity/User.java b/src/main/java/com/example/jz/modle/entity/User.java index d04b868..b2b7109 100644 --- a/src/main/java/com/example/jz/modle/entity/User.java +++ b/src/main/java/com/example/jz/modle/entity/User.java @@ -86,5 +86,7 @@ private Integer role; private Date ctime; + + private String openid; } diff --git a/src/main/java/com/example/jz/modle/vo/CauseVo.java b/src/main/java/com/example/jz/modle/vo/CauseVo.java index d27fbc6..c32ad96 100644 --- a/src/main/java/com/example/jz/modle/vo/CauseVo.java +++ b/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; } diff --git a/src/main/java/com/example/jz/modle/vo/MemberVo.java b/src/main/java/com/example/jz/modle/vo/MemberVo.java new file mode 100644 index 0000000..17b7154 --- /dev/null +++ b/src/main/java/com/example/jz/modle/vo/MemberVo.java @@ -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; +} diff --git a/src/main/java/com/example/jz/modle/vo/PublicityVo.java b/src/main/java/com/example/jz/modle/vo/PublicityVo.java index 87b3326..192953e 100644 --- a/src/main/java/com/example/jz/modle/vo/PublicityVo.java +++ b/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; diff --git a/src/main/java/com/example/jz/service/CauseService.java b/src/main/java/com/example/jz/service/CauseService.java index 167d5a2..8f3ca06 100644 --- a/src/main/java/com/example/jz/service/CauseService.java +++ b/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); } diff --git a/src/main/java/com/example/jz/service/impl/CauseServiceImpl.java b/src/main/java/com/example/jz/service/impl/CauseServiceImpl.java index ac5649a..63ecf0f 100644 --- a/src/main/java/com/example/jz/service/impl/CauseServiceImpl.java +++ b/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); diff --git a/src/main/java/com/example/jz/service/impl/ReportServiceImpl.java b/src/main/java/com/example/jz/service/impl/ReportServiceImpl.java index 659c1f2..6842e8c 100644 --- a/src/main/java/com/example/jz/service/impl/ReportServiceImpl.java +++ b/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); diff --git a/src/main/java/com/example/jz/utils/HttpUtil.java b/src/main/java/com/example/jz/utils/HttpUtil.java new file mode 100644 index 0000000..e46a6e3 --- /dev/null +++ b/src/main/java/com/example/jz/utils/HttpUtil.java @@ -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; + } + + + /** + * 鍙戦�丠ttpPost璇锋眰锛屽弬鏁颁负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; + } +} + diff --git a/src/main/resources/mapper/ReportDao.xml b/src/main/resources/mapper/ReportDao.xml index a11e47b..d83adb9 100644 --- a/src/main/resources/mapper/ReportDao.xml +++ b/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> -- Gitblit v1.8.0