| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695 |
- package com.template.controller;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.github.pagehelper.PageHelper;
- import com.github.pagehelper.PageInfo;
- import com.github.pagehelper.util.StringUtil;
- import com.google.gson.Gson;
- import com.google.gson.reflect.TypeToken;
- import com.template.annotation.DESRespondSecret;
- import com.template.annotation.PassToken;
- import com.template.api.WechatScanLoginControllerAPI;
- import com.template.common.constanst.Constanst;
- import com.template.common.result.ResponseStatusEnum;
- import com.template.common.utils.*;
- import com.template.model.enumModel.eIdentityStatu;
- import com.template.model.evaluate.student.SmartEvaluateStudent;
- import com.template.model.evaluate.student.SmartSubjectManage;
- import com.template.model.phoneBook.BookUser;
- import com.template.model.phoneBook.ClassBook;
- import com.template.model.phoneBook.GradeBook;
- import com.template.model.pojo.*;
- import com.template.model.result.CommonResult;
- import com.template.model.result.PageUtils;
- import com.template.model.tongji.*;
- import com.template.model.vo.AffiliateParentVo;
- import com.template.model.vo.LoginVO;
- import com.template.model.vo.WechatUserVo;
- import com.template.model.weixin.AccessToken;
- import com.template.model.weixin.AuthorAndGroup;
- import com.template.model.weixin.HttpParame;
- import com.template.model.weixin.WechatUserUnionID;
- import com.template.services.*;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.scheduling.annotation.Async;
- import org.springframework.scheduling.annotation.Scheduled;
- import org.springframework.stereotype.Controller;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.ui.Model;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.RequestBody;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- import java.io.UnsupportedEncodingException;
- import java.math.BigDecimal;
- import java.net.URLEncoder;
- import java.text.ParseException;
- import java.util.*;
- import java.util.stream.Collectors;
- /**
- * Title: WechatScanLoginController
- * Description: 微信扫码登录controller
- *
- * @author fengyong
- * @date 2018年9月7日
- */
- @Controller
- public class WechatScanLoginController implements WechatScanLoginControllerAPI {
- @Autowired
- private WechatScanLoginService wechatScanLoginService;
- @Autowired
- public SmartUserService smartUserService;
- @Autowired
- public SmartAuthorityService smartAuthorityService;
- @Autowired
- public SmartAuthorGroupService smartAuthorGroupService;
- @Autowired
- public SmartDepartmentService smartDepartmentService;
- @Autowired
- public SmsCodeService smsCodeService;
- @Autowired
- public SmartGradeService smartGradeService;
- @Autowired
- public SmartClassService smartClassService;
- @Autowired
- public SmartMeterService smartMeterService;
- @Autowired
- public SmartMeterDetailService smartMeterDetailService;
- /**
- * Title: list
- * Description: 重定向到微信扫码登录二维码页面
- * 此处显示要微信要扫描的二维码
- *
- * @param model
- * @return
- * @throws UnsupportedEncodingException
- */
- @Override
- @PassToken
- public String login(Model model) throws UnsupportedEncodingException {
- Map<String, String> wechatLoginUrl = wechatScanLoginService.wechatLoginUrl();
- String url = wechatLoginUrl.get("url");
- logger.info(url);
- return "redirect:" + url;
- }
- /**
- * Title: callback
- * Description: 回调地址处理
- *
- * @param code
- * @param state
- * @return
- */
- @Override
- @PassToken
- public String callback(String code, String state) throws UnsupportedEncodingException {
- logger.info(code + "=====" + state);
- if (code != null && state != null) {
- // 验证state为了用于防止跨站请求伪造攻击
- String decrypt = AesUtil.decrypt(AesUtil.parseHexStr2Byte(state), AesUtil.PASSWORD_SECRET_KEY, 16);
- if (!decrypt.equals(Constanst.PWD_MD5 + DateUtils.getYYYYMMdd())) {
- return "redirect:" + HttpParame.FRONT_URI + "/#/login?message=" + URLEncoder.encode("请勿非法进入", "UTF-8");
- }
- AccessToken access = wechatScanLoginService.getAccessToken(code);
- logger.info("access:" + access);
- if (access != null) {
- String openid = access.getOpenid();
- logger.info("openid: " + openid);
- SmartUser user = wechatScanLoginService.selectByOpenid(openid);
- if (user == null) { /*不存在*/
- return "redirect:" + HttpParame.FRONT_URI + "/#/login?message=" + URLEncoder.encode("请绑定信息", "UTF-8");
- } else {
- String token = JWTUtil.getToken(user, null);
- String userhead = AesUtils.encrypt(String.valueOf(user.getId()));
- QueryWrapper<SmartAuthority> queryWrapper1 = new QueryWrapper<>();
- queryWrapper1.eq("deleted", 0);
- queryWrapper1.eq("user_id", user.getId());
- List<SmartAuthority> query = smartAuthorityService.getAuthorByKey(queryWrapper1);
- if (query.size() > 0) {
- return "redirect:" + HttpParame.FRONT_URI + "/#/wanzai/home?token=" + token+"&userhead="+userhead;
- } else {
- return "redirect:" + HttpParame.FRONT_URI + "/#/login?message=" + URLEncoder.encode("无登录权限", "UTF-8");
- }
- }
- }
- }
- return null;
- }
- /**
- * Title: bindingUserMac2
- * Description: 跳转到绑定用户系统帐号页面
- *
- * @return
- */
- @Override
- @PassToken
- public String bindUserMac(String phone, String messageCode) throws UnsupportedEncodingException {
- if (StringUtils.isBlank(phone) || StringUtils.isBlank(messageCode)) {
- return "redirect:" + HttpParame.FRONT_URI + "/#/login?message=" + URLEncoder.encode("请输入信息", "UTF-8");
- }
- Map<String, String> wechatLoginUrl = wechatScanLoginService.wechatBindUrl(phone, messageCode);
- String url = wechatLoginUrl.get("url");
- logger.info(url);
- return "redirect:" + url;
- }
- @Override
- @PassToken
- public String bindcallback(String code, String state, String phone, String messageCode) throws UnsupportedEncodingException {
- logger.info(code + "===" + state + "==" + messageCode);
- if (code != null && state != null) {
- // 验证state为了用于防止跨站请求伪造攻击
- String decrypt = AesUtil.decrypt(AesUtil.parseHexStr2Byte(state), AesUtil.PASSWORD_SECRET_KEY, 16);
- if (!decrypt.equals(Constanst.PWD_MD5 + DateUtils.getYYYYMMdd())) {
- return "redirect:" + HttpParame.FRONT_URI + "/#/login?message=" + URLEncoder.encode("请勿非法进入", "UTF-8");
- }
- AccessToken access = wechatScanLoginService.getAccessToken(code);
- if (access != null) {
- String openid = access.getOpenid();
- QueryWrapper<SmsCode> queryWrapper1 = new QueryWrapper<>();
- queryWrapper1.eq("deleted", 0);
- queryWrapper1.eq("is_verify", 0);
- queryWrapper1.eq("phone_number", phone);
- queryWrapper1.eq("code", messageCode);
- queryWrapper1.ge("expiration_time", new Date());
- List<SmsCode> listc = smsCodeService.getSmsCodeByKey(queryWrapper1);
- if (listc.isEmpty()) {
- return "redirect:" + HttpParame.FRONT_URI + "/#/login?message=" + URLEncoder.encode("验证码已失效", "UTF-8");
- }
- QueryWrapper<SmartUser> queryWrapper2 = new QueryWrapper<>();
- queryWrapper2.eq("deleted", 0);
- queryWrapper2.eq("phone", phone);
- List<SmartUser> userc = smartUserService.list(queryWrapper2);
- if (userc.isEmpty()) {
- return "redirect:" + HttpParame.FRONT_URI + "/#/login?message=" + URLEncoder.encode("用户不存在", "UTF-8");
- }
- userc.get(0).setOpenId(openid);
- int m = wechatScanLoginService.updateSmartUser(userc.get(0));
- if (m > 0) {
- String token = JWTUtil.getToken(userc.get(0), null);
- QueryWrapper<SmartAuthority> queryWrapper3 = new QueryWrapper<>();
- queryWrapper3.eq("deleted", 0);
- queryWrapper3.eq("user_id", userc.get(0).getId());
- List<SmartAuthority> query = smartAuthorityService.getAuthorByKey(queryWrapper3);
- if (query.size() > 0) {
- String userhead = AesUtils.encrypt(String.valueOf(userc.get(0).getId()));
- return "redirect:" + HttpParame.FRONT_URI + "/#/wanzai/home?token=" + token+"&userhead="+userhead;
- } else {
- return "redirect:" + HttpParame.FRONT_URI + "/#/login?message=" + URLEncoder.encode("无登录权限", "UTF-8");
- }
- }
- }
- }
- return "redirect:" + HttpParame.FRONT_URI + "/#/login?message=" + URLEncoder.encode("系统异常", "UTF-8");
- }
- /**===============================水电管理=================================**/
- @Override
- @PassToken
- public String insertElecMeterDetail() throws Exception {
- QueryWrapper<SmartMeter> queryWrapper1 = new QueryWrapper<>();
- queryWrapper1.eq("deleted", 0);
- queryWrapper1.eq("meter_type", 1);
- List<SmartMeter> list = smartMeterService.list(queryWrapper1);
- if (!list.isEmpty()){
- for (int i = 0; i < list.size(); i++) {
- String msg = HttpsClient.get("http://iot.czrxdzonline.cn/api/dtu/find?deviceNum="+list.get(i).getMeterNo());
- JSONObject result = JSONObject.parseObject(msg);
- Integer state = result.getInteger("Status");
- if (state==1){
- Double lastRecord = 0.00;
- QueryWrapper<SmartMeterDetail> queryWrapper2 = new QueryWrapper<>();
- queryWrapper2.eq("deleted", 0);
- queryWrapper2.eq("meter_type", 1);
- queryWrapper2.eq("meter_id", list.get(i).getId());
- queryWrapper2.orderByDesc("id");
- List<SmartMeterDetail> detailList = smartMeterDetailService.list(queryWrapper2);
- if (!detailList.isEmpty()){
- lastRecord = detailList.get(0).getMeterPowerRecord();
- }
- JSONObject data = result.getJSONObject("Data");
- ElecData elecData = JSONObject.parseObject(data.toString(), ElecData.class);
- SmartMeterDetail smartMeterDetail = new SmartMeterDetail();
- smartMeterDetail.setMeterId(list.get(i).getId());
- smartMeterDetail.setMeterType(1);
- String display = elecData.getDisplay();
- smartMeterDetail.setMeterPowerRecord(Double.parseDouble(display)/Double.parseDouble("100"));
- smartMeterDetail.setMeterPower(Double.parseDouble(display)/Double.parseDouble("100")-lastRecord);
- smartMeterDetail.setCreateTime(TimeExchange.StringToDate(elecData.getCommunication(), "yyyy-MM-dd HH:mm:ss"));
- logger.info("====="+smartMeterDetail.getMeterPowerRecord());
- smartMeterDetailService.insertSmartMeterDetail(smartMeterDetail);
- }
- }
- }
- return "插入完毕";
- }
- @Override
- @PassToken
- public String insertWatMeterDetail() throws Exception {
- QueryWrapper<SmartMeter> queryWrapper1 = new QueryWrapper<>();
- queryWrapper1.eq("deleted", 0);
- queryWrapper1.eq("meter_type", 0);
- List<SmartMeter> list = smartMeterService.list(queryWrapper1);
- if (!list.isEmpty()){
- for (int i = 0; i < list.size(); i++) {
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("type", "5");
- jsonObject.put("address", list.get(i).getMeterNo());
- String msg = HttpsClient.sendJson("http://iot.czrxdzonline.cn/api/wat/find", jsonObject);
- JSONObject result = JSONObject.parseObject(msg);
- Integer state = result.getInteger("Status");
- if (state==1){
- Double lastRecord = 0.00;
- QueryWrapper<SmartMeterDetail> queryWrapper2 = new QueryWrapper<>();
- queryWrapper2.eq("deleted", 0);
- queryWrapper2.eq("meter_type", 0);
- queryWrapper2.eq("meter_id", list.get(i).getId());
- queryWrapper2.orderByDesc("id");
- List<SmartMeterDetail> detailList = smartMeterDetailService.list(queryWrapper2);
- if (!detailList.isEmpty()){
- lastRecord = detailList.get(0).getMeterPowerRecord();
- }
- JSONObject data = result.getJSONObject("Data");
- WatData watData = JSONObject.parseObject(data.toString(), WatData.class);
- SmartMeterDetail smartMeterDetail = new SmartMeterDetail();
- smartMeterDetail.setMeterId(list.get(i).getId());
- smartMeterDetail.setMeterType(0);
- String display = watData.getQuantity();
- smartMeterDetail.setMeterPowerRecord(Double.parseDouble(display)/Double.parseDouble("100"));
- smartMeterDetail.setMeterPower(Double.parseDouble(display)/Double.parseDouble("100")-lastRecord);
- smartMeterDetail.setCreateTime(TimeExchange.StringToDate(watData.getLastUpdate(), "yyyy-MM-dd HH:mm:ss"));
- logger.info("====="+smartMeterDetail.getMeterPowerRecord());
- smartMeterDetailService.insertSmartMeterDetail(smartMeterDetail);
- }
- }
- }
- return "插入完毕";
- }
- @Override
- @PassToken
- public String insertMonthMeter(String month) {
- if (month == null) {
- month = TimeExchange2.getMonth();
- }
- wechatScanLoginService.insertMonthMeter(month);
- return "插入完毕";
- }
- @Override
- @PassToken
- public String insertDayMeter(String day) {
- if (day == null) {
- day = TimeExchange2.getDateStr();
- }
- wechatScanLoginService.insertDayMeter(day);
- return "插入完毕";
- }
- /**
- * Description: 用户类别统计
- */
- @Override
- @PassToken
- @DESRespondSecret(validated = true)
- public CommonResult getUserIdTj() {
- List<Tj> list = wechatScanLoginService.getUserIdTj();
- return CommonResult.ok(list);
- }
- /**
- * Description: 用户总数
- */
- @Override
- @PassToken
- @DESRespondSecret(validated = true)
- public CommonResult getUserIdTjt() {
- All list = wechatScanLoginService.getUserIdTjt();
- return CommonResult.ok(list);
- }
- /**
- * Description: 水表总计
- */
- @Override
- @PassToken
- @DESRespondSecret(validated = true)
- public CommonResult getWaterTj() {
- DAll list = wechatScanLoginService.getWaterTj();
- return CommonResult.ok(list);
- }
- /**
- * Description: 电表总计
- */
- @Override
- @PassToken
- @DESRespondSecret(validated = true)
- public CommonResult getElcTj() {
- DAll list = wechatScanLoginService.getElcTj();
- return CommonResult.ok(list);
- }
- /**
- * Description: 每月水费查询
- */
- @Override
- @PassToken
- @DESRespondSecret(validated = true)
- public CommonResult getMonWater() throws ParseException {
- List<MonthMeterDetail> list = wechatScanLoginService.getMonWater();
- return CommonResult.ok(list);
- }
- /**
- * Description: 每月电费查询
- */
- @Override
- @PassToken
- @DESRespondSecret(validated = true)
- public CommonResult getMonElc() throws ParseException {
- List<MonthMeterDetail> list = wechatScanLoginService.getMonElc();
- return CommonResult.ok(list);
- }
- /**
- * Description: 区域能耗统计
- */
- @Override
- @PassToken
- @DESRespondSecret(validated = true)
- public CommonResult getMeterMonthPage(@RequestBody MeterMonthData meterMonthData, int currentPage, int pageCount) {
- PageHelper.startPage(currentPage, pageCount);
- PageInfo<MeterMonthData> list = wechatScanLoginService.getMeterMonthPage(meterMonthData);
- return CommonResult.ok(list);
- }
- /**
- * Description: 实时抄表
- */
- @Override
- @PassToken
- @DESRespondSecret(validated = true)
- public CommonResult getMeterDayPage(@RequestBody MeterMonthData meterMonthData, int currentPage, int pageCount) {
- PageHelper.startPage(currentPage, pageCount);
- PageInfo<MeterMonthData> list = wechatScanLoginService.getMeterDayPage(meterMonthData);
- return CommonResult.ok(list);
- }
- /**
- * Description: 查轨迹
- */
- @Override
- @PassToken
- @DESRespondSecret(validated = true)
- public CommonResult getPosition() {
- List<List<BigDecimal>> ld = RandomTrackAlgorithm.getPosition();
- return CommonResult.ok(ld);
- }
- @Override
- @PassToken
- @DESRespondSecret(validated = true)
- public CommonResult vertify(String code) {
- if (StringUtils.isBlank(code)) {
- return CommonResult.fail("请传入code");
- }
- String url = "https://api.weixin.qq.com/sns/jscode2session?" +
- "appid=" + PropertiesUtil.getValue(HttpParame.APPIDX) +
- "&secret=" + PropertiesUtil.getValue(HttpParame.SECRETX) +
- "&js_code=" + code +
- "&grant_type=authorization_code";
- String json = HttpClientUtils.getInstance().sendHttpGet(url);
- Gson gson = new Gson();
- HashMap<String, String> userMap = gson.fromJson(json.toString(), new TypeToken<HashMap<String, String>>() {
- }.getType());
- String openid = "";
- try {
- openid = userMap.get("openid").toString();
- } catch (Exception e) {
- return CommonResult.fail("code异常");
- }
- QueryWrapper<SmartUser> queryWrapper1 = new QueryWrapper<>();
- queryWrapper1.eq("deleted", 0);
- queryWrapper1.eq("is_cancel", 0);
- queryWrapper1.eq("x_open_id", openid);
- List<SmartUser> user = smartUserService.list(queryWrapper1);
- if (user.isEmpty()) {
- return CommonResult.fail("请绑定后再进入");
- }
- //部门数据集合
- List<SmartDepartment> departments = smartDepartmentService.list(null);
- long expired = 1000 * 60 * 60 * 24 * 365;
- String token = JWTUtil.getToken(user.get(0), expired);
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("token", token);
- List<WechatUserVo> userDatas = new ArrayList<>();
- for (SmartUser su : user) {
- WechatUserVo userData = new WechatUserVo();
- userData.setId(su.getId());
- userData.setCardNo(su.getCardNo());
- userData.setTimeGroupId(su.getTimeGroupId());
- userData.setName(su.getName());
- userData.setIdentityId(su.getIdentityId());
- userData.setIdCard(su.getIdCard());
- userData.setSexId(su.getSexId());
- userData.setDepartmentId(su.getDepartmentId());
- Optional<SmartDepartment> department = departments.stream().filter(e -> e.getId().equals(su.getDepartmentId())).findFirst();
- if (department != null && department.isPresent()) {
- String departmentName = QueryParentDepartments(department.get().getParentId(), departments, null);
- userData.setDepartmentName(departmentName == null ? "" : departmentName + "/" + department.get().getName());
- }
- userData.setHeadImage(su.getHeadImage());
- userData.setGrade(su.getGrade());
- userData.setCollege(su.getCollege());
- userData.setSpeciality(su.getSpeciality());
- userData.setSchoolClass(su.getSchoolClass());
- userData.setCampus(su.getCampus());
- userData.setDormitoryNumber(su.getDormitoryNumber());
- userData.setPhone(su.getPhone());
- userData.setAffiliate(su.getAffiliate());
- //查找关联人
- if (su.getIdentityId().intValue() == eIdentityStatu.Student.getValue()) {//学生
- List<AffiliateParentVo> parents = smartUserService.queryAffiliateParents(su.getId());
- if (parents != null && parents.size() > 0) {
- String affiliateStr = StringUtils.join(parents.stream().map(AffiliateParentVo::getName).collect(Collectors.toList()), ",");
- userData.setAffiliateName(affiliateStr);
- }
- } else if (su.getIdentityId().intValue() == eIdentityStatu.Parent.getValue()) {//家长
- if (su.getAffiliate() != null) {
- List<String> affiliates = Arrays.asList(su.getAffiliate().split(","));
- List<SmartUser> childs = smartUserService.getSmartUserIds(affiliates);
- String affiliateStr = StringUtils.join(childs.stream().map(SmartUser::getName).collect(Collectors.toList()), ",");
- userData.setAffiliateName(affiliateStr);
- }
- }
- //关联人名称用逗号隔开
- userData.setTitle(su.getTitle());
- userData.setAddress(su.getAddress());
- userData.setNation(su.getNation());
- userData.setOfStudent(su.getOfStudent());
- userData.setGraduate(su.getGraduate());
- userData.setDuties(su.getDuties());
- userData.setIsPush(su.getIsPush());
- userData.setIsCancel(su.getIsCancel());
- userData.setOpenId(su.getOpenId());
- userData.setXOpenId(su.getXOpenId());
- userData.setGzhOpenId(su.getGzhOpenId());
- userData.setXwStudentUid(su.getXwStudentUid());
- userData.setBsStudentNo(su.getBsStudentNo());
- userData.setXwTeacherCode(su.getXwTeacherCode());
- userData.setBsStaffCode(su.getBsStaffCode());
- userDatas.add(userData);
- }
- jsonObject.put("user", userDatas);
- jsonObject.put("userhead", AesUtils.encrypt(String.valueOf(user.get(0).getId())));
- return CommonResult.ok(jsonObject.toString());
- }
- /**
- * 根据父级ID获取父级数据
- *
- * @param parentID 子级ID
- * @param lists 数据集合
- * @return
- */
- private static String QueryParentDepartments(Integer parentID, List<SmartDepartment> lists, String departmentStr) {
- Optional<SmartDepartment> data = lists.stream().filter(e -> e.getId().equals(parentID)).findFirst();
- if (data != null && data.isPresent()) {
- departmentStr = departmentStr == null ? data.get().getName() : data.get().getName() + "/" + departmentStr;
- departmentStr = QueryParentDepartments(data.get().getParentId(), lists, departmentStr);
- }
- return departmentStr;
- }
- @Override
- @PassToken
- @DESRespondSecret(validated = true)
- public CommonResult sendMessage(String phone) {
- QueryWrapper<SmartUser> queryWrapper1 = new QueryWrapper<>();
- queryWrapper1.eq("deleted", 0);
- queryWrapper1.eq("phone", phone);
- queryWrapper1.eq("is_cancel", 0);
- List<SmartUser> list = smartUserService.list(queryWrapper1);
- if (list.isEmpty()) {
- return CommonResult.fail("该手机无权限登录");
- }
- QueryWrapper<SmsCode> queryWrapper2 = new QueryWrapper<>();
- queryWrapper2.eq("deleted", 0);
- queryWrapper2.eq("is_verify", 0);
- queryWrapper2.eq("phone_number", phone);
- queryWrapper2.ge("expiration_time", new Date());
- List<SmsCode> listc = smsCodeService.getSmsCodeByKey(queryWrapper2);
- if (!listc.isEmpty()) {
- return CommonResult.fail("操作频繁,请稍后再试");
- }
- String code = GetVertifyCode.getRandomNumCode(6);
- SmsCode smsCode = new SmsCode();
- smsCode.setId(UUIDUtil.generateID());
- smsCode.setPhoneNumber(phone);
- smsCode.setCode(code);
- long time = new Date().getTime() + 300000L;
- smsCode.setExpirationTime(new Date(time));
- smsCode.setIsVerify("0");
- smsCode.setDeleted(0);
- int m = smsCodeService.insertSmsCode(smsCode);
- if (m > 0) {
- String message = SendSms.sendSms(phone, code);
- if (message.contains("success")) {
- return CommonResult.ok("发送成功");
- }
- }
- return CommonResult.fail("操作失败");
- }
- @Override
- @PassToken
- @DESRespondSecret(validated = true)
- public CommonResult vertifyMessage(String phone, String code, String wxcode) {
- QueryWrapper<SmsCode> queryWrapper1 = new QueryWrapper<>();
- queryWrapper1.eq("deleted", 0);
- queryWrapper1.eq("is_verify", 0);
- queryWrapper1.eq("phone_number", phone);
- queryWrapper1.eq("code", code);
- queryWrapper1.ge("expiration_time", new Date());
- List<SmsCode> listc = smsCodeService.getSmsCodeByKey(queryWrapper1);
- if (listc.isEmpty()) {
- return CommonResult.ok("验证码已失效");
- }
- if (StringUtils.isBlank(wxcode)) {
- return CommonResult.fail("请传入wxcode");
- }
- String url = "https://api.weixin.qq.com/sns/jscode2session?" +
- "appid=" + PropertiesUtil.getValue(HttpParame.APPIDX) +
- "&secret=" + PropertiesUtil.getValue(HttpParame.SECRETX) +
- "&js_code=" + wxcode +
- "&grant_type=authorization_code";
- String json = HttpClientUtils.getInstance().sendHttpGet(url);
- logger.info(json);
- Gson gson = new Gson();
- HashMap<String, String> userMap = gson.fromJson(json.toString(), new TypeToken<HashMap<String, String>>() {
- }.getType());
- String openid = "";
- try {
- openid = userMap.get("openid").toString();
- } catch (Exception e) {
- return CommonResult.fail("wxcode异常");
- }
- QueryWrapper<SmartUser> queryWrapper2 = new QueryWrapper<>();
- queryWrapper2.eq("deleted", 0);
- queryWrapper2.eq("phone", phone);
- List<SmartUser> user = smartUserService.list(queryWrapper2);
- if (user.isEmpty()) {
- return CommonResult.fail("该用户不存在");
- }
- user.get(0).setXOpenId(openid);
- smartUserService.updateSmartUser(user.get(0));
- long expired = 1000 * 60 * 60 * 24 * 365;
- String token = JWTUtil.getToken(user.get(0), expired);
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("token", token);
- jsonObject.put("user", user.get(0));
- jsonObject.put("userhead", AesUtils.encrypt(String.valueOf(user.get(0).getId())));
- return CommonResult.ok(jsonObject);
- }
- @Override
- @PassToken
- @DESRespondSecret(validated = true)
- public CommonResult queryPhoneBook(Integer id) {
- if (id == null) {
- return CommonResult.fail("请传入id");
- }
- SmartUser user = smartUserService.getSmartById(id);
- if (user == null) {
- return CommonResult.fail("未查到用户信息");
- }
- if (user.getId() < 3) {
- return CommonResult.fail("无权限查询");
- }
- QueryWrapper<SmartGrade> queryWrapper1 = new QueryWrapper<>();
- queryWrapper1.eq("deleted", 0);
- List<SmartGrade> grades = smartGradeService.list(queryWrapper1);
- List<GradeBook> gradeBookList = new ArrayList<>();
- for (int i = 0; i < grades.size(); i++) {
- GradeBook gradeBook = new GradeBook();
- gradeBook.setGradeName(grades.get(i).getName());
- QueryWrapper<SmartClass> queryWrapper2 = new QueryWrapper<>();
- queryWrapper2.eq("deleted", 0);
- queryWrapper2.eq("grade_id", grades.get(i).getId());
- List<SmartClass> classes = smartClassService.list(queryWrapper2);
- List<ClassBook> classBookList = new ArrayList<>();
- for (int j = 0; j < classes.size(); j++) {
- ClassBook classBook = new ClassBook();
- classBook.setClassName(classes.get(j).getName());
- QueryWrapper<SmartUser> queryWrapper3 = new QueryWrapper<>();
- queryWrapper3.eq("deleted", 0);
- queryWrapper3.eq("is_cancel", 0);
- queryWrapper3.eq("school_class", classes.get(j).getId());
- queryWrapper3.eq("identity_id", 2);
- List<SmartUser> users = smartUserService.list(queryWrapper3);
- List<BookUser> bookUserList = new ArrayList<>();
- for (int k = 0; k < users.size(); k++) {
- if (Objects.equals(users.get(k).getSchoolClass(), user.getSchoolClass())) {
- String ob = JSONObject.toJSONString(users.get(k));
- BookUser bookUser = JSONObject.parseObject(ob, BookUser.class);
- ;
- QueryWrapper<SmartUser> queryWrapper4 = new QueryWrapper<>();
- queryWrapper4.eq("deleted", 0);
- queryWrapper4.eq("is_cancel", 0);
- queryWrapper4.eq("affiliate", users.get(k).getId());
- queryWrapper4.eq("identity_id", 1);
- List<SmartUser> usersPrarent = smartUserService.list(queryWrapper4);
- bookUser.setUserParents(usersPrarent);
- bookUserList.add(bookUser);
- }
- }
- classBook.setBookUserList(bookUserList);
- classBookList.add(classBook);
- }
- gradeBook.setClassBookList(classBookList);
- gradeBookList.add(gradeBook);
- }
- return CommonResult.ok(gradeBookList);
- }
- }
|