| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309 |
- package com.template.services.impl;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.github.pagehelper.PageInfo;
- import com.template.common.constanst.Constanst;
- import com.template.common.utils.*;
- import com.template.mapper.SmartUserMapper;
- import com.template.mapper.WechatScanLoginMapper;
- import com.template.model.pojo.SmartUser;
- import com.template.model.tongji.*;
- import com.template.model.weixin.AccessToken;
- import com.template.model.weixin.HttpParame;
- import com.template.model.weixin.PhoneAccessToken;
- import com.template.model.weixin.WechatUserUnionID;
- import com.template.services.WechatScanLoginService;
- import org.apache.ibatis.annotations.Param;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.io.UnsupportedEncodingException;
- import java.net.URLEncoder;
- import java.text.ParseException;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- /**
- * <p>Title: WechatScanLoginServiceImpl</p>
- * <p>Description: 业务接口实现 </p>
- * @author fengyong
- * @date 2018年9月7日
- */
- @Service
- public class WechatScanLoginServiceImpl implements WechatScanLoginService {
- @Autowired
- public SmartUserMapper smartUserMapper;
- @Autowired
- public WechatScanLoginMapper wechatScanLoginMapper;
- /**
- * <p>Title: wechatLoginUrl</p>
- * <p>Description: 网页授权回调地址处理</p>
- * @return
- * @throws UnsupportedEncodingException
- */
- @Override
- public Map<String, String> wechatLoginUrl() {
- String content = Constanst.PWD_MD5+DateUtils.getYYYYMMdd();
- byte[] encrypt = AesUtil.encrypt(content, AesUtil.PASSWORD_SECRET_KEY, 16);
- String parseByte2HexStr = AesUtil.parseByte2HexStr(encrypt);
- Map<String,String> map = new HashMap<String,String>();
- String url = HttpParame.AUTHORIZATION_URL;
- url = url.replaceAll("APPID", PropertiesUtil.getValue(HttpParame.APPID));
- try {
- url = url.replaceAll("REDIRECT_URI", URLEncoder.encode(
- PropertiesUtil.getValue(HttpParame.REDIRECT_URI),"UTF-8"));
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- url = url.replaceAll("SCOPE", "snsapi_login");
- url = url.replace("STATE", parseByte2HexStr); //加密state进行验证 回调地址当天有效 防止恶意攻击
- map.put("url", url);
- return map;
- }
- @Override
- public Map<String, String> wechatBindUrl(String phone,String messageCode) {
- String content = Constanst.PWD_MD5+ DateUtils.getYYYYMMdd();
- byte[] encrypt = AesUtil.encrypt(content, AesUtil.PASSWORD_SECRET_KEY, 16);
- String parseByte2HexStr = AesUtil.parseByte2HexStr(encrypt);
- Map<String,String> map = new HashMap<String,String>();
- String url = HttpParame.BIND_URL;
- url = url.replaceAll("APPID", PropertiesUtil.getValue(HttpParame.APPID));
- try {
- url = url.replaceAll("REDIRECT_URI", URLEncoder.encode(
- PropertiesUtil.getValue(HttpParame.BIND_URI)+"?phone="+phone+"&messageCode="+messageCode,"UTF-8"));
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- //url = url.replaceAll("SCOPE", "snsapi_login");
- url = url.replaceAll("SCOPE", "snsapi_login");
- url = url.replace("STATE", parseByte2HexStr); //加密state进行验证 回调地址当天有效 防止恶意攻击
- map.put("url", url);
- return map;
- }
- /**
- * <p>Title: getAccessToken</p>
- * <p>Description: 用户授权后获取用户唯一标识 </p>
- * @param code
- * @return
- */
- @Override
- public AccessToken getAccessToken(String code) {
- String accessTokenUrl = HttpParame.ACCESS_TOKEN_URL;
- accessTokenUrl = accessTokenUrl.replaceAll("APPID", PropertiesUtil.getValue(HttpParame.APPID));
- accessTokenUrl = accessTokenUrl.replaceAll("SECRET", PropertiesUtil.getValue(HttpParame.SECRET));
- accessTokenUrl = accessTokenUrl.replaceAll("CODE", code);
- String responseContent = HttpClientUtils.getInstance().sendHttpGet(accessTokenUrl);
- if (responseContent == null || responseContent == "") {
- return null;
- }
- JSONObject parseObject = JSONObject.parseObject(responseContent);
- AccessToken accessToken = JSONObject.toJavaObject(parseObject, AccessToken.class);
- return accessToken;
- }
- /**
- * <p>Title: getAccessToken</p>
- * <p>Description: 用户授权后获取用户唯一标识 </p>
- * @return
- */
- @Override
- public PhoneAccessToken getPhoneAccessToken() {
- String accessTokenUrl = HttpParame.PHONE_TOKEN_URL;
- accessTokenUrl = accessTokenUrl.replaceAll("XAPPID", PropertiesUtil.getValue(HttpParame.APPIDX));
- accessTokenUrl = accessTokenUrl.replaceAll("XSECRET", PropertiesUtil.getValue(HttpParame.SECRETX));
- String responseContent = HttpClientUtils.getInstance().sendHttpGet(accessTokenUrl);
- if (responseContent == null || responseContent == "") {
- return null;
- }
- JSONObject parseObject = JSONObject.parseObject(responseContent);
- PhoneAccessToken accessToken = JSONObject.toJavaObject(parseObject, PhoneAccessToken.class);
- return accessToken;
- }
- /**
- * <p>Title: getUserUnionID</p>
- * <p>Description: 获取用户统一标识。针对一个微信开放平台帐号下的应用,
- * 同一用户的unionid在多个应用中是唯一的。
- * 此方法不牵扯到多个应用时候可以不用。
- *
- * 此处用到只是为了获取微信扫码用户的省份城市(此信息获取的只是微信用户所填的城市省份,
- * 并不是用户的实时位置信息,如果用户未填写是获取不到的。)
- * </p>
- * @return
- */
- @Override
- public WechatUserUnionID getUserUnionID() {
- String unionIDUrl = HttpParame.GET_UNIONID_URL;
- unionIDUrl = unionIDUrl.replace("ACCESS_TOKEN", PropertiesUtil.getValue(HttpParame.ACCESS_TOKEN));
- unionIDUrl = unionIDUrl.replace("OPENID", PropertiesUtil.getValue(HttpParame.OPENID));
- String responseContent = HttpClientUtils.getInstance().sendHttpGet(unionIDUrl);
- if (responseContent == null || responseContent == "") {
- return null;
- }
- JSONObject parseObject = JSONObject.parseObject(responseContent);
- WechatUserUnionID userUnionID = JSONObject.toJavaObject(parseObject, WechatUserUnionID.class);
- return userUnionID;
- }
- @Override
- public SmartUser selectByOpenid(String openid){
- QueryWrapper<SmartUser> queryWrapper = new QueryWrapper<>();
- queryWrapper.eq( "open_id", openid);
- List<SmartUser> users = smartUserMapper.selectList(queryWrapper);
- if (users==null || users.size()<=0){
- return null;
- }
- return users.get(0);
- }
- @Override
- public SmartUser selectByCardNo(String CardNo){
- QueryWrapper<SmartUser> queryWrapper = new QueryWrapper<>();
- queryWrapper.eq( "card_no", CardNo);
- List<SmartUser> users = smartUserMapper.selectList(queryWrapper);
- if (users==null || users.size()<=0){
- return null;
- }
- return users.get(0);
- }
- @Override
- public int updateSmartUser(SmartUser sa) {
- int result = smartUserMapper.updateById(sa);
- return result;
- }
- // 用户类别统计
- @Override
- public List<Tj> getUserIdTj(){
- return wechatScanLoginMapper.getUserIdTj();
- }
- // 用户总数
- @Override
- public All getUserIdTjt(){
- return wechatScanLoginMapper.getUserIdTjt();
- }
- // 水表总计
- @Override
- public DAll getWaterTj(){
- return wechatScanLoginMapper.getWaterTj();
- }
- // 电表总计
- @Override
- public DAll getElcTj(){
- return wechatScanLoginMapper.getElcTj();
- }
- @Override
- public void insertMonthMeter(String month){
- List<EnergyTj> waterl = wechatScanLoginMapper.getWaterTjByMonAndBuild(month);
- List<EnergyTj> elcl = wechatScanLoginMapper.getElcTjByMonAndBuild(month);
- for (int i = 0; i < waterl.size(); i++) {
- EnergyTj e = wechatScanLoginMapper.getTjByMon(waterl.get(i).getName(),waterl.get(i).getMeterName(),month,"0");
- if (e==null){
- waterl.get(i).setType(0);
- waterl.get(i).setDate(month);
- wechatScanLoginMapper.insertMonthMeter(waterl.get(i));
- } else {
- waterl.get(i).setId(e.getId());
- wechatScanLoginMapper.updateMonthMeter(waterl.get(i));
- }
- }
- for (int j = 0; j < elcl.size(); j++) {
- EnergyTj w = wechatScanLoginMapper.getTjByMon(elcl.get(j).getName(),elcl.get(j).getMeterName(),month,"1");
- if (w==null){
- elcl.get(j).setType(1);
- elcl.get(j).setDate(month);
- wechatScanLoginMapper.insertMonthMeter(elcl.get(j));
- } else {
- elcl.get(j).setId(w.getId());
- wechatScanLoginMapper.updateMonthMeter(elcl.get(j));
- }
- }
- }
- @Override
- public void insertDayMeter(String day){
- List<EnergyTj> waterl = wechatScanLoginMapper.getWaterTjByDayAndBuild(day);
- List<EnergyTj> elcl = wechatScanLoginMapper.getElcTjByDayAndBuild(day);
- for (int i = 0; i < waterl.size(); i++) {
- EnergyTj w = wechatScanLoginMapper.getTjByDay(waterl.get(i).getName(),waterl.get(i).getMeterName(),day,"0");
- if (w==null){
- waterl.get(i).setType(0);
- waterl.get(i).setDate(day);
- wechatScanLoginMapper.insertDayMeter(waterl.get(i));
- } else {
- waterl.get(i).setId(w.getId());
- wechatScanLoginMapper.updateDayMeter(waterl.get(i));
- }
- }
- for (int j = 0; j < elcl.size(); j++) {
- EnergyTj e = wechatScanLoginMapper.getTjByDay(elcl.get(j).getName(),elcl.get(j).getMeterName(),day,"1");
- if (e==null){
- elcl.get(j).setType(1);
- elcl.get(j).setDate(day);
- wechatScanLoginMapper.insertDayMeter(elcl.get(j));
- } else {
- elcl.get(j).setId(e.getId());
- wechatScanLoginMapper.updateDayMeter(elcl.get(j));
- }
- }
- }
- // 每个月各水表数据
- @Override
- public List<MonthMeterDetail> getMonWater() throws ParseException {
- List<String> dates = TimeExchange2.getLastSevenMonth();
- List<MonthMeterDetail> lm = new ArrayList<>();
- for (int i = 0; i < dates.size(); i++) {
- MonthMeterDetail mm = new MonthMeterDetail();
- List<Tj> list = wechatScanLoginMapper.getMonWater(dates.get(i));
- mm.setDate(TimeExchange2.ToSimpleMonth(TimeExchange2.StringToDate(dates.get(i),"yyyy-MM"))+"月");
- mm.setLt(list);
- lm.add(mm);
- }
- return lm;
- }
- // 每个月各电表数据
- @Override
- public List<MonthMeterDetail> getMonElc() throws ParseException {
- List<String> dates = TimeExchange2.getLastSevenMonth();
- List<MonthMeterDetail> lm = new ArrayList<>();
- for (int i = 0; i < dates.size(); i++) {
- MonthMeterDetail mm = new MonthMeterDetail();
- List<Tj> list = wechatScanLoginMapper.getMonElc(dates.get(i));
- mm.setDate(TimeExchange2.ToSimpleMonth(TimeExchange2.StringToDate(dates.get(i),"yyyy-MM"))+"月");
- mm.setLt(list);
- lm.add(mm);
- }
- return lm;
- }
- // 区域能耗统计
- @Override
- public PageInfo<MeterMonthData> getMeterMonthPage(@Param("meterMonthData")MeterMonthData meterMonthData){
- List<MeterMonthData> list = wechatScanLoginMapper.getMeterMonthPage(meterMonthData);
- PageInfo<MeterMonthData> meterPageInfo = new PageInfo<>(list);
- return meterPageInfo;
- }
- // 实时抄表
- @Override
- public PageInfo<MeterMonthData> getMeterDayPage(@Param("meterMonthData")MeterMonthData meterMonthData){
- List<MeterMonthData> list = wechatScanLoginMapper.getMeterDayPage(meterMonthData);
- PageInfo<MeterMonthData> meterPageInfo = new PageInfo<>(list);
- return meterPageInfo;
- }
- }
|