Просмотр исходного кода

[客流数据][修改][获取迈外迪的TOKEN]

release_toaliyun_real
gongbiao 7 лет назад
Родитель
Сommit
ac1e4b41b3
6 измененных файлов: 216 добавлений и 100 удалений
  1. +55
    -0
      mallinkSchedule/src/main/java/com/iformall/schedule/WiwideTokenSchedule.java
  2. +24
    -1
      mallinkService/src/main/java/com/iformall/domain/po/WxMall.java
  3. +5
    -3
      mallinkService/src/main/java/com/iformall/mapper/WxMallMapper.java
  4. +71
    -89
      mallinkService/src/main/java/com/iformall/service/impl/DataTowerServiceImpl.java
  5. +53
    -5
      mallinkService/src/main/java/com/iformall/utils/WiwideUtil.java
  6. +8
    -2
      mallinkService/src/main/resources/mapper/WxMallMapper.xml

+ 55
- 0
mallinkSchedule/src/main/java/com/iformall/schedule/WiwideTokenSchedule.java Просмотреть файл

@@ -0,0 +1,55 @@
package com.iformall.schedule;

import com.alibaba.fastjson.JSONObject;
import com.iformall.domain.po.WxMall;
import com.iformall.exception.MallinkException;
import com.iformall.mapper.WxMallMapper;
import com.iformall.utils.WiwideUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.util.Calendar;
import java.util.List;

/**
* @author gongbiao
*/
@Component
public class WiwideTokenSchedule {

private final Logger logger = LoggerFactory.getLogger(this.getClass());

@Autowired
private WxMallMapper wxMallMapper;

@Scheduled(cron = "0 0/45 * * * ?")
public void requestToken() {
List<WxMall> list = wxMallMapper.findList(null);
for (int i = 0, size = list.size(); i < size; i++) {
WxMall wxMall = list.get(i);
String data = WiwideUtil.queryToken(wxMall);
String token = (String) JSONObject.parseObject(data).get("data");
updateToken(wxMall, token);
}

}

private void updateToken(WxMall wxMall, String token) {
Calendar instance = Calendar.getInstance();
instance.add(Calendar.MINUTE, 45);
WxMall record = new WxMall();
record.setId(wxMall.getId());
record.setToken(token);
record.setExpiredTime(instance.getTime());
try {
wxMallMapper.updateToken(record);
} catch (MallinkException e) {
logger.info("更新TOKEN失败:商场" + wxMall.getName());
}
}


}

+ 24
- 1
mallinkService/src/main/java/com/iformall/domain/po/WxMall.java Просмотреть файл

@@ -5,6 +5,7 @@ import javax.persistence.Table;
import javax.persistence.Transient;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Table(name = "wx_mall")
@@ -96,6 +97,12 @@ public class WxMall implements Serializable {
@io.swagger.annotations.ApiModelProperty(value="小程序提示",name="weapNote")
private String weapNote;

@io.swagger.annotations.ApiModelProperty(value="token",name="token")
private String token;

@io.swagger.annotations.ApiModelProperty(value="expiredTime",name="expiredTime")
private Date expiredTime;


public String getTenantId() {
return tenantId;
@@ -224,7 +231,23 @@ public class WxMall implements Serializable {
this.weapNote = weapNote;
}

public static enum Field
public String getToken() {
return token;
}

public void setToken(String token) {
this.token = token;
}

public Date getExpiredTime() {
return expiredTime;
}

public void setExpiredTime(Date expiredTime) {
this.expiredTime = expiredTime;
}

public static enum Field
{
Id_ASC("`id` ASC"),Id_DESC("`id` DESC")
,TenantId_ASC("`tenant_id` ASC"),TenantId_DESC("`tenant_id` DESC")


+ 5
- 3
mallinkService/src/main/java/com/iformall/mapper/WxMallMapper.java Просмотреть файл

@@ -1,13 +1,15 @@
package com.iformall.mapper;

import java.util.*;
import com.iformall.common.CommonMapper;
import com.iformall.domain.po.WxMall;

import java.util.List;

public interface WxMallMapper extends CommonMapper<WxMall, Long> {

List<WxMall> findList(WxMall wxMall);


void updateToken(WxMall wxMall);

}

+ 71
- 89
mallinkService/src/main/java/com/iformall/service/impl/DataTowerServiceImpl.java Просмотреть файл

@@ -6,12 +6,15 @@ import com.iformall.common.ResultData;
import com.iformall.domain.po.*;
import com.iformall.domain.vo.WxBillAll;
import com.iformall.enums.*;
import com.iformall.exception.MallinkException;
import com.iformall.mapper.*;
import com.iformall.service.DataTowerService;
import com.iformall.service.WxRentContractService;
import com.iformall.utils.DateUtils;
import com.iformall.utils.HashUtil;
import com.iformall.utils.HttpUtil;
import com.iformall.utils.WiwideUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.codec.Base64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -72,7 +75,7 @@ public class DataTowerServiceImpl implements DataTowerService {


//出租与未出租***********************************************
private Map<String, Object> shopRunning(String tenantId){
private Map<String, Object> shopRunning(String tenantId) {

WxShop wxShop = new WxShop();
wxShop.setTenantId(tenantId);
@@ -109,15 +112,15 @@ public class DataTowerServiceImpl implements DataTowerService {
params.put("tenantId", tenantId);

Calendar instance = Calendar.getInstance();
instance.set(Calendar.DAY_OF_YEAR,1);
instance.set(Calendar.HOUR_OF_DAY,0);
instance.set(Calendar.MINUTE,0);
instance.set(Calendar.SECOND,0);
instance.set(Calendar.DAY_OF_YEAR, 1);
instance.set(Calendar.HOUR_OF_DAY, 0);
instance.set(Calendar.MINUTE, 0);
instance.set(Calendar.SECOND, 0);
String startdate = DateUtils.date2String(instance);
instance.clear();
String enddate = DateUtils.getSystemTime("yyyy-MM-dd HH:mm:ss");
params.put("startdate",startdate);
params.put("enddate",enddate);
params.put("startdate", startdate);
params.put("enddate", enddate);
Map<String, Object> payinfo = wxBillRentMapper.queryPayInfo(params);
if (payinfo != null) {
BigDecimal receivableAmount = (BigDecimal) payinfo.get("receivepay");
@@ -246,8 +249,8 @@ public class DataTowerServiceImpl implements DataTowerService {
cal.add(Calendar.DAY_OF_YEAR, 1);
Date endTime = cal.getTime();

long verifiedCount = wxCouponOrderMapper.findVerifiedCount(tenantId,startTime,endTime);
long orderedCount = wxCouponOrderMapper.findOrderedCount(tenantId,startTime,endTime);
long verifiedCount = wxCouponOrderMapper.findVerifiedCount(tenantId, startTime, endTime);
long orderedCount = wxCouponOrderMapper.findOrderedCount(tenantId, startTime, endTime);
couponMap.put("verifiedCount", verifiedCount);
couponMap.put("orderedCount", orderedCount);
WxCouponChannel wxCouponChannel = new WxCouponChannel();
@@ -316,9 +319,9 @@ public class DataTowerServiceImpl implements DataTowerService {
usedCount = totalCount - remainsCount;
}

messageMap.put("usedCount",usedCount);
messageMap.put("totalCount",totalCount);
messageMap.put("remainsCount",remainsCount);
messageMap.put("usedCount", usedCount);
messageMap.put("totalCount", totalCount);
messageMap.put("remainsCount", remainsCount);

return messageMap;
}
@@ -329,10 +332,10 @@ public class DataTowerServiceImpl implements DataTowerService {
WxBillAll record = new WxBillAll();
record.setTenantId(tenantId);
Calendar instance = Calendar.getInstance();
instance.set(Calendar.DAY_OF_YEAR,1);
instance.set(Calendar.HOUR_OF_DAY,0);
instance.set(Calendar.MINUTE,0);
instance.set(Calendar.SECOND,0);
instance.set(Calendar.DAY_OF_YEAR, 1);
instance.set(Calendar.HOUR_OF_DAY, 0);
instance.set(Calendar.MINUTE, 0);
instance.set(Calendar.SECOND, 0);
String startdate = DateUtils.date2String(instance);
instance.clear();
String enddate = DateUtils.getSystemTime("yyyy-MM-dd HH:mm:ss");
@@ -353,12 +356,12 @@ public class DataTowerServiceImpl implements DataTowerService {
public Map<String, Object> queryRunningMobile(String tenantId) {

HashMap<String, Object> dataMap = new HashMap<>();
dataMap.put("shop",shopRunning(tenantId));
dataMap.put("rent",rentRunning(tenantId));
dataMap.put("report",reportRunning(tenantId));
dataMap.put("car",carRunning(tenantId));
dataMap.put("coupon",couponRunning(tenantId));
dataMap.put("visitor",visitorRunning(tenantId));
dataMap.put("shop", shopRunning(tenantId));
dataMap.put("rent", rentRunning(tenantId));
dataMap.put("report", reportRunning(tenantId));
dataMap.put("car", carRunning(tenantId));
dataMap.put("coupon", couponRunning(tenantId));
dataMap.put("visitor", visitorRunning(tenantId));

return dataMap;
}
@@ -368,20 +371,20 @@ public class DataTowerServiceImpl implements DataTowerService {
public Map<String, Object> queryRunningPotal(String tenantId) {

HashMap<String, Object> dataMap = new HashMap<>();
dataMap.put("shop",shopRunning(tenantId));
dataMap.put("rent",rentRunning(tenantId));
dataMap.put("report",reportRunning(tenantId));
dataMap.put("car",carRunning(tenantId));
dataMap.put("coupon",couponRunning(tenantId));
dataMap.put("visitor",visitorRunning(tenantId));
dataMap.put("contract",contractRunning(tenantId));
dataMap.put("message",messageRunning(tenantId));
dataMap.put("bill",billRunning(tenantId));
dataMap.put("shop", shopRunning(tenantId));
dataMap.put("rent", rentRunning(tenantId));
dataMap.put("report", reportRunning(tenantId));
dataMap.put("car", carRunning(tenantId));
dataMap.put("coupon", couponRunning(tenantId));
dataMap.put("visitor", visitorRunning(tenantId));
dataMap.put("contract", contractRunning(tenantId));
dataMap.put("message", messageRunning(tenantId));
dataMap.put("bill", billRunning(tenantId));

return dataMap;
}

@Override
public Map<String, Object> queryRunning(String tenantId) {
WxShop wxShop = new WxShop();
@@ -416,15 +419,15 @@ public class DataTowerServiceImpl implements DataTowerService {
Map<String, Object> params = new HashMap<>();
params.put("tenantId", tenantId);
Calendar instance = Calendar.getInstance();
instance.set(Calendar.DAY_OF_YEAR,1);
instance.set(Calendar.HOUR_OF_DAY,0);
instance.set(Calendar.MINUTE,0);
instance.set(Calendar.SECOND,0);
instance.set(Calendar.DAY_OF_YEAR, 1);
instance.set(Calendar.HOUR_OF_DAY, 0);
instance.set(Calendar.MINUTE, 0);
instance.set(Calendar.SECOND, 0);
String startdate = DateUtils.date2String(instance);
instance.clear();
String enddate = DateUtils.getSystemTime("yyyy-MM-dd HH:mm:ss");
params.put("startdate",startdate);
params.put("enddate",enddate);
params.put("startdate", startdate);
params.put("enddate", enddate);
Map<String, Object> payinfo = wxBillRentMapper.queryPayInfo(params);
if (payinfo != null) {
BigDecimal receivepay = (BigDecimal) payinfo.get("receivepay");
@@ -609,18 +612,18 @@ public class DataTowerServiceImpl implements DataTowerService {


//绑定车牌
Map<String,Object> carParams=new HashMap<>();
carParams.put("tenantId",tenantId);
carParams.put("startdate",DateUtils.getSystemTime("yyyy-MM-dd 00:00:00"));
carParams.put("enddate",DateUtils.getSystemTime("yyyy-MM-dd HH:mm:ss"));
Map<String, Object> carParams = new HashMap<>();
carParams.put("tenantId", tenantId);
carParams.put("startdate", DateUtils.getSystemTime("yyyy-MM-dd 00:00:00"));
carParams.put("enddate", DateUtils.getSystemTime("yyyy-MM-dd HH:mm:ss"));
long todaybindcar = wxCUserCarMapper.queryCarCount(carParams);
carParams.put("startdate",yesterday+" 00:00:00");
carParams.put("enddate",yesterday+" 23:59:59");
carParams.put("startdate", yesterday + " 00:00:00");
carParams.put("enddate", yesterday + " 23:59:59");
long yesterdaybindcar = wxCUserCarMapper.queryCarCount(carParams);
carParams.put("startdate",lastweek+" 00:00:00");
carParams.put("enddate",lastweek+" 23:59:59");
carParams.put("startdate", lastweek + " 00:00:00");
carParams.put("enddate", lastweek + " 23:59:59");
long lastweekbindcar = wxCUserCarMapper.queryCarCount(carParams);
datamap.put("todaybindcar",todaybindcar);
datamap.put("todaybindcar", todaybindcar);
//datamap.put("yesterdaybindcar",yesterdaybindcar);
//datamap.put("lastweekbindcar",lastweekbindcar);

@@ -651,57 +654,36 @@ public class DataTowerServiceImpl implements DataTowerService {
wxMall.setTenantId(tenantId);
List<WxMall> list = wxMallMapper.findList(wxMall);
wxMall = list.get(0);
String username = wxMall.getWiwideId();
String authVal = encrypt(wxMall.getWiwideKey());
Map<String, String> params = new HashMap<>();
params.put("username", username);
params.put("authVal", authVal);
String wiwideUrl = wxMall.getWiwideUrl();
String token = HttpUtil.doPost(wiwideUrl + "/login/auth", params);


Map<String, Object> datamap = new HashMap<>();
datamap.put("token", JSONObject.parseObject(token).get("data"));
Map<String, Object> datamap = new HashMap<>(2);
Date expiredTime = wxMall.getExpiredTime();
String token = wxMall.getToken();
if (token != null && expiredTime != null && expiredTime.after(new Date())) {
datamap.put("token", wxMall.getToken());
} else {
String data = WiwideUtil.queryToken(wxMall);
token = (String) JSONObject.parseObject(data).get("data");
datamap.put("token", token);
updateToken(wxMall, token);
}
datamap.put("url", wiwideUrl);

return datamap;
}


public String encrypt(String key) {
String data = System.currentTimeMillis() / 1000 + 30 + "";
String md5 = HashUtil.md5(key);
int x = 0;
int len = data.length();
int l = md5.length();
char[] datachar = new char[len];
for (int i = 0; i < len; i++) {
if (x == l) {
x = 0;
}
datachar[i] = md5.charAt(x);
x++;
}

StringBuilder chars = new StringBuilder();
for (int i = 0; i < len; i++) {
int a = data.charAt(i);
int b = (datachar[i] % 256);
char v = (char) (a + b);
chars.append(v);
}

byte[] bytes = null;
private void updateToken(WxMall wxMall, String token) {
Calendar instance = Calendar.getInstance();
instance.add(Calendar.MINUTE, 45);
WxMall record = new WxMall();
record.setId(wxMall.getId());
record.setToken(token);
record.setExpiredTime(instance.getTime());
try {
bytes = chars.toString().getBytes("ISO-8859-1");
} catch (Exception e) {
e.printStackTrace();
wxMallMapper.updateToken(record);
} catch (MallinkException e) {
logger.info("更新TOKEN失败:商场" + wxMall.getName());
}
return Base64.encodeToString(bytes);

}


public TreeMap getTimeTreeMap() {
TreeMap<Object, Object> timemap = new TreeMap();
timemap.put("06:00", 0);


+ 53
- 5
mallinkService/src/main/java/com/iformall/utils/WiwideUtil.java Просмотреть файл

@@ -2,7 +2,9 @@ package com.iformall.utils;

import com.alibaba.fastjson.JSONObject;
import com.iformall.common.ErrorCode;
import com.iformall.domain.po.WxMall;
import com.iformall.exception.MallinkException;
import org.apache.shiro.codec.Base64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@@ -17,14 +19,14 @@ public class WiwideUtil {
private static final String addTemplateUrl = "https://webapp.wiwide.com/apisms/addtemplate";
private static final String smsSendUrl = "https://webapp.wiwide.com/apisms/send";

public static String addTemplate(String secret, String bid, String publickey, String signature, String content, String notifyUrl,String verifysms) {
public static String addTemplate(String secret, String bid, String publickey, String signature, String content, String notifyUrl, String verifysms) {
//请求api数据排序
TreeMap<String, String> message = new TreeMap<>();
message.put("bid", bid);
message.put("signature", signature);
message.put("content", content);
message.put("notify_url",notifyUrl);
message.put("verifysms",verifysms);
message.put("notify_url", notifyUrl);
message.put("verifysms", verifysms);

StringBuilder sb = new StringBuilder();
Set<Map.Entry<String, String>> entries = message.entrySet();
@@ -56,14 +58,14 @@ public class WiwideUtil {
}

public static String sendMsg(String secret, String bid, String publickey,
String phone, String signature, String msg, String notifyUrl,String verifysms) {
String phone, String signature, String msg, String notifyUrl, String verifysms) {
TreeMap<String, String> message = new TreeMap<>();
message.put("bid", bid);
message.put("phone", phone);
message.put("signature", signature);
message.put("msg", msg);
message.put("notify_url", notifyUrl);
message.put("verifysms",verifysms);
message.put("verifysms", verifysms);

StringBuilder sb = new StringBuilder();
Set<Map.Entry<String, String>> entries = message.entrySet();
@@ -94,4 +96,50 @@ public class WiwideUtil {
String requestUrl = smsSendUrl;
return HttpUtil.doPost(requestUrl, params);
}

public static String encrypt(String key) {
String data = System.currentTimeMillis() / 1000 + 30 + "";
String md5 = HashUtil.md5(key);
int x = 0;
int len = data.length();
int l = md5.length();
char[] datachar = new char[len];
for (int i = 0; i < len; i++) {
if (x == l) {
x = 0;
}
datachar[i] = md5.charAt(x);
x++;
}

StringBuilder chars = new StringBuilder();
for (int i = 0; i < len; i++) {
int a = data.charAt(i);
int b = (datachar[i] % 256);
char v = (char) (a + b);
chars.append(v);
}

byte[] bytes = null;
try {
bytes = chars.toString().getBytes("ISO-8859-1");
} catch (Exception e) {
e.printStackTrace();
}
return Base64.encodeToString(bytes);

}

public static String queryToken(WxMall wxMall) {
logger.info("获取TOKEN");
String username = wxMall.getWiwideId();
String authVal = WiwideUtil.encrypt(wxMall.getWiwideKey());
Map<String, String> params = new HashMap<>();
params.put("username", username);
params.put("authVal", authVal);
String wiwideUrl = wxMall.getWiwideUrl();
String token = HttpUtil.doPost(wiwideUrl + "/login/auth", params);
logger.info("商场:" + wxMall.getName() + ",返回TOKEN" + token);
return token;
}
}

+ 8
- 2
mallinkService/src/main/resources/mapper/WxMallMapper.xml Просмотреть файл

@@ -22,11 +22,15 @@
<result column="wiwide_key" jdbcType="VARCHAR" property="wiwideKey" />
<result column="wiwide_url" jdbcType="VARCHAR" property="wiwideUrl" />
<result column="weap_note" jdbcType="VARCHAR" property="weapNote" />
<result column="token" jdbcType="VARCHAR" property="token" />
<result column="expired_time" jdbcType="TIMESTAMP" property="expiredTime" />
</resultMap>
<sql id="allColumns">
`id`,`tenant_id`,`name`,`group`,`country`,`province`,`city`,`addr`,`wiwide_id`,`total_area`,`operating_area`,`park_area`,`park_place_number`,`pay_id`,`service_phone`,`img_url`,`img_url_h`,`wiwide_key`,`wiwide_url`, `weap_note`
`id`,`tenant_id`,`name`,`group`,`country`,`province`,`city`,`addr`,`wiwide_id`,
`total_area`,`operating_area`,`park_area`,`park_place_number`,`pay_id`,`service_phone`,
`img_url`,`img_url_h`,`wiwide_key`,`wiwide_url`, `weap_note`,`token`,`expired_time`
</sql>

<sql id="dynamicWhereConditions">
@@ -125,7 +129,9 @@
<include refid="dynamicWhereConditions" />
</select>
<update id="updateToken" parameterType="com.iformall.domain.po.WxMall">
update wx_mall set token=#{token},expired_time=#{expiredTime} where id=#{id}
</update>


Загрузка…
Отмена
Сохранить