package com.template.controller; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.github.pagehelper.util.StringUtil; 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.pojo.SmartUser; import com.template.model.result.CommonResult; import com.template.model.result.PageUtils; import com.template.model.tongji.*; import com.template.model.vo.LoginVO; import com.template.model.weixin.AccessToken; import com.template.model.weixin.HttpParame; import com.template.model.weixin.WechatUserUnionID; import com.template.services.SmartUserService; import com.template.services.WechatScanLoginService; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; 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.List; import java.util.Map; /** * Title: WechatScanLoginController * Description: 微信扫码登录controller * * @author fengyong * @date 2018年9月7日 */ @Controller public class WechatScanLoginController implements WechatScanLoginControllerAPI { @Autowired private WechatScanLoginService wechatScanLoginService; @Autowired public SmartUserService smartUserService; /** * Title: list * Description: 重定向到微信扫码登录二维码页面 * 此处显示要微信要扫描的二维码 * * @param model * @return * @throws UnsupportedEncodingException */ @Override public String login(Model model) throws UnsupportedEncodingException { Map wechatLoginUrl = wechatScanLoginService.wechatLoginUrl(); String url = wechatLoginUrl.get("url"); System.out.println(url); return "redirect:" + url; } /** * Title: callback * Description: 回调地址处理 * * @param code * @param state * @return * @return */ @Override public String callback(String code, String state) throws UnsupportedEncodingException { System.out.println(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); if (access != null) { String openid = access.getOpenid(); 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); return "redirect:"+HttpParame.FRONT_URI+"/#/wanzai/home?token=" + token; } } } return null; } /** * Title: bindingUserMac * Description: 跳转到绑定用户系统帐号页面 * @return */ @Override public String bindUserMac(String cardNo) throws UnsupportedEncodingException { if (StringUtils.isBlank(cardNo)){ return "redirect:"+HttpParame.FRONT_URI+"pc/#/pages/404/404/?message=" + URLEncoder.encode("请输入卡号", "UTF-8"); } Map wechatLoginUrl = wechatScanLoginService.wechatBindUrl(cardNo); String url = wechatLoginUrl.get("url"); System.out.println(url); return "redirect:" + url; } @Override public String bindcallback(String code, String state, String cardNo) throws UnsupportedEncodingException { System.out.println(code+"==="+state+"=="+cardNo); 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+"pc/#/pages/404/404/?message=" + URLEncoder.encode("请勿非法进入", "UTF-8"); } AccessToken access = wechatScanLoginService.getAccessToken(code); if (access != null) { String openid = access.getOpenid(); SmartUser user = wechatScanLoginService.selectByOpenid(openid); // 我只是给个例子 if (user!=null) { /*不存在*/ return "redirect:"+HttpParame.FRONT_URI+"pc/#/pages/404/404/?message=" + URLEncoder.encode("请勿重复绑定", "UTF-8"); } SmartUser userc = wechatScanLoginService.selectByCardNo(cardNo); if (userc==null){ return "redirect:"+HttpParame.FRONT_URI+"pc/#/pages/404/404/?message=" + URLEncoder.encode("未查询到用户信息", "UTF-8"); } if (userc.getOpenId()!=null){ return "redirect:"+HttpParame.FRONT_URI+"pc/#/pages/404/404/?message=" + URLEncoder.encode("请勿重复绑定", "UTF-8"); } userc.setOpenId(openid); int m = wechatScanLoginService.updateSmartUser(userc); if (m>0){ String token = JWTUtil.getToken(userc); return "redirect:"+HttpParame.FRONT_URI+"pc/#/pages/index/?token=" + token; } } } return "redirect:"+HttpParame.FRONT_URI+"pc/#/pages/404/404/?message=" + URLEncoder.encode("绑定失败", "UTF-8"); } @Override @PassToken public String insertMonthMeter(String month){ wechatScanLoginService.insertMonthMeter(month); return "插入完毕"; } @Override @PassToken public String insertDayMeter(String day){ wechatScanLoginService.insertDayMeter(day); return "插入完毕"; } /** * Description: 用户类别统计 */ @Override @PassToken public CommonResult getUserIdTj(){ List list = wechatScanLoginService.getUserIdTj(); return CommonResult.ok(list); } /** * Description: 用户总数 */ @Override @PassToken public CommonResult getUserIdTjt(){ All list = wechatScanLoginService.getUserIdTjt(); return CommonResult.ok(list); } /** * Description: 水表总计 */ @Override @PassToken public CommonResult getWaterTj(){ DAll list = wechatScanLoginService.getWaterTj(); return CommonResult.ok(list); } /** * Description: 电表总计 */ @Override @PassToken public CommonResult getElcTj(){ DAll list = wechatScanLoginService.getElcTj(); return CommonResult.ok(list); } /** * Description: 每月水费查询 */ @Override @PassToken public CommonResult getMonWater() throws ParseException { List list = wechatScanLoginService.getMonWater(); return CommonResult.ok(list); } /** * Description: 每月电费查询 */ @Override @PassToken public CommonResult getMonElc() throws ParseException { List list = wechatScanLoginService.getMonElc(); return CommonResult.ok(list); } /** * Description: 实时抄表 */ @Override @PassToken public CommonResult getMeterMonthPage(@RequestBody MeterMonthData meterMonthData,int currentPage, int pageCount) { PageHelper.startPage(currentPage, pageCount); PageInfo list = wechatScanLoginService.getMeterMonthPage(meterMonthData); return CommonResult.ok(list); } /** * Description: 实时抄表 */ @Override @PassToken public CommonResult getMeterDayPage(@RequestBody MeterMonthData meterMonthData, int currentPage, int pageCount) { PageHelper.startPage(currentPage, pageCount); PageInfo list = wechatScanLoginService.getMeterDayPage(meterMonthData); return CommonResult.ok(list); } /** * Description: 查轨迹 */ @Override @PassToken public CommonResult getPosition() { List> ld = RandomTrackAlgorithm.getPosition(); return CommonResult.ok(ld); } }