Upd:修复App用户退出后依然会接收推送消息问题

master
duLingLing 5 years ago
parent 136ff975a6
commit 8eacb056dc

@ -9,7 +9,7 @@
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>manage</artifactId> <artifactId>manage</artifactId>
<version>1.2.94</version> <version>1.2.95</version>
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jib-maven-plugin.version>1.4.0</jib-maven-plugin.version> <jib-maven-plugin.version>1.4.0</jib-maven-plugin.version>

@ -13,6 +13,7 @@ import au.com.royalpay.payment.manage.appclient.core.RetailAppService;
import au.com.royalpay.payment.manage.appclient.extend.GatewayOAuthRegister; import au.com.royalpay.payment.manage.appclient.extend.GatewayOAuthRegister;
import au.com.royalpay.payment.manage.cashback.core.CashbackService; import au.com.royalpay.payment.manage.cashback.core.CashbackService;
import au.com.royalpay.payment.manage.customers.core.CouponValidateService; import au.com.royalpay.payment.manage.customers.core.CouponValidateService;
import au.com.royalpay.payment.manage.device.core.DeviceManager;
import au.com.royalpay.payment.manage.fund.core.impls.XPlanFundConfigServiceImpl; import au.com.royalpay.payment.manage.fund.core.impls.XPlanFundConfigServiceImpl;
import au.com.royalpay.payment.manage.management.clearing.core.CleanService; import au.com.royalpay.payment.manage.management.clearing.core.CleanService;
import au.com.royalpay.payment.manage.mappers.client.AuthAppMessageMapper; import au.com.royalpay.payment.manage.mappers.client.AuthAppMessageMapper;
@ -209,6 +210,8 @@ public class RetailAppServiceImp implements RetailAppService {
private StringRedisTemplate stringRedisTemplate; private StringRedisTemplate stringRedisTemplate;
@Resource @Resource
private MpClientAppWechatApiProvider mpClientAppWechatApiProvider; private MpClientAppWechatApiProvider mpClientAppWechatApiProvider;
@Resource
private DeviceManager deviceManager;
private final String CBBANK_AGGREGATE_FILE = "https://file.royalpay.com.au/open/2019/08/05/1564972204689_uwZvpTBjtLUMcN8c540xcZvux1Rd3O.pdf"; private final String CBBANK_AGGREGATE_FILE = "https://file.royalpay.com.au/open/2019/08/05/1564972204689_uwZvpTBjtLUMcN8c540xcZvux1Rd3O.pdf";
private final String IMG_AGGREGATE_FILE = "https://file.royalpay.com.au/open/2019/10/22/1571723034726_5xK6A0FGv5aQPbMIDJzXJrUPKHFutv.pdf"; private final String IMG_AGGREGATE_FILE = "https://file.royalpay.com.au/open/2019/10/22/1571723034726_5xK6A0FGv5aQPbMIDJzXJrUPKHFutv.pdf";
@ -1100,7 +1103,7 @@ public class RetailAppServiceImp implements RetailAppService {
String clientType = device.getString("client_type"); String clientType = device.getString("client_type");
DeviceRegister register = deviceSupport.findRegister(clientType); DeviceRegister register = deviceSupport.findRegister(clientType);
register.signout(device); register.signout(device);
deviceManager.deviceOffline(device.getString("account_id"));
} }
@Override @Override

@ -4,6 +4,7 @@ import au.com.royalpay.payment.manage.appclient.beans.RetailLoginInfo;
import au.com.royalpay.payment.manage.appclient.core.ManageAppService; import au.com.royalpay.payment.manage.appclient.core.ManageAppService;
import au.com.royalpay.payment.manage.appclient.core.RetailAppService; import au.com.royalpay.payment.manage.appclient.core.RetailAppService;
import au.com.royalpay.payment.manage.application.core.SimpleClientApplyService; import au.com.royalpay.payment.manage.application.core.SimpleClientApplyService;
import au.com.royalpay.payment.manage.device.core.DeviceManager;
import au.com.royalpay.payment.manage.merchants.core.ClientManager; import au.com.royalpay.payment.manage.merchants.core.ClientManager;
import au.com.royalpay.payment.manage.signin.beans.LoginInfo; import au.com.royalpay.payment.manage.signin.beans.LoginInfo;
import au.com.royalpay.payment.manage.signin.core.SignInStatusManager; import au.com.royalpay.payment.manage.signin.core.SignInStatusManager;
@ -61,6 +62,8 @@ public class RetailValidationController implements ApplicationEventPublisherAwar
private ApplicationEventPublisher publisher; private ApplicationEventPublisher publisher;
@Resource @Resource
private ManageAppService manageAppService; private ManageAppService manageAppService;
@Resource
private DeviceManager deviceManager;
@Override @Override
public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) { public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
@ -95,6 +98,7 @@ public class RetailValidationController implements ApplicationEventPublisherAwar
client = JSON.parseObject(client.toJSONString()); client = JSON.parseObject(client.toJSONString());
if (loginInfo.getDevId() != null) { if (loginInfo.getDevId() != null) {
deviceSupport.validDeviceWithClient(client, loginInfo.getDevId()); deviceSupport.validDeviceWithClient(client, loginInfo.getDevId());
deviceManager.offlineNotCurrentUserByDevIdAndAccountId(loginInfo.getDevId(),client.getString("account_id"));
} }
client.put("sign_key", signKey); client.put("sign_key", signKey);
return client; return client;
@ -219,7 +223,10 @@ public class RetailValidationController implements ApplicationEventPublisherAwar
result.put("account",account); result.put("account",account);
result.put("status","success"); result.put("status","success");
result.put("bind_status", true); result.put("bind_status", true);
if (params.getString("devId") != null) {
deviceSupport.validDeviceWithClient(account, params.getString("devId"));
deviceManager.offlineNotCurrentUserByDevIdAndAccountId(params.getString("devId"),account.getString("account_id"));
}
this.publisher.publishEvent(new ClientLoginEvent(this, account.getIntValue("client_id"), account.getString("account_id"), RequestEnvironment.getClientIp(), "MOBILE")); this.publisher.publishEvent(new ClientLoginEvent(this, account.getIntValue("client_id"), account.getString("account_id"), RequestEnvironment.getClientIp(), "MOBILE"));
}else{ }else{
result.put("status","success"); result.put("status","success");
@ -254,9 +261,6 @@ public class RetailValidationController implements ApplicationEventPublisherAwar
account = JSON.parseObject(account.toJSONString()); account = JSON.parseObject(account.toJSONString());
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
result.put("account",account); result.put("account",account);
if (params.getString("devId") != null) {
deviceSupport.validDeviceWithClient(account, params.getString("devId"));
}
result.put("bind_status", true); result.put("bind_status", true);
this.publisher.publishEvent(new ClientLoginEvent(this, account.getIntValue("client_id"), account.getString("account_id"), RequestEnvironment.getClientIp(), "MOBILE")); this.publisher.publishEvent(new ClientLoginEvent(this, account.getIntValue("client_id"), account.getString("account_id"), RequestEnvironment.getClientIp(), "MOBILE"));
return result; return result;
@ -276,6 +280,10 @@ public class RetailValidationController implements ApplicationEventPublisherAwar
deviceSupport.validDeviceWithClient(account, params.getString("app_openid")); deviceSupport.validDeviceWithClient(account, params.getString("app_openid"));
return account; return account;
} }
if (params.getString("devId") != null) {
deviceSupport.validDeviceWithClient(account, params.getString("devId"));
deviceManager.offlineNotCurrentUserByDevIdAndAccountId(params.getString("devId"),account.getString("account_id"));
}
this.publisher.publishEvent(new ClientLoginEvent(this, account.getJSONObject("account").getIntValue("client_id"), account.getJSONObject("account").getString("account_id"), RequestEnvironment.getClientIp(), "wechat")); this.publisher.publishEvent(new ClientLoginEvent(this, account.getJSONObject("account").getIntValue("client_id"), account.getJSONObject("account").getString("account_id"), RequestEnvironment.getClientIp(), "wechat"));
return account; return account;
} }
@ -297,9 +305,6 @@ public class RetailValidationController implements ApplicationEventPublisherAwar
params.put("union_id",wechatInfo.getString("union_id")); params.put("union_id",wechatInfo.getString("union_id"));
retailAppService.updateLoginClientAccountOpenId(account,params); retailAppService.updateLoginClientAccountOpenId(account,params);
account = JSON.parseObject(account.toJSONString()); account = JSON.parseObject(account.toJSONString());
if (params.getString("devId") != null) {
deviceSupport.validDeviceWithClient(account, params.getString("devId"));
}
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
account.put("sign_key", signKey); account.put("sign_key", signKey);
result.put("account",account); result.put("account",account);

@ -17,4 +17,12 @@ public interface DeviceManager {
void deviceOffline(String accountId); void deviceOffline(String accountId);
JSONObject listDevOrders(JSONObject manager, String devId, TradeLogQuery query); JSONObject listDevOrders(JSONObject manager, String devId, TradeLogQuery query);
/**
* 线
* @param devId
* @param accountId
*/
void offlineNotCurrentUserByDevIdAndAccountId(String devId,String accountId);
} }

@ -118,4 +118,17 @@ public class DeviceManagerImp implements DeviceManager {
return result; return result;
} }
/**
* 线
* @param devId
* @param accountId
*/
@Override
public void offlineNotCurrentUserByDevIdAndAccountId(String devId, String accountId) {
//离线当前设备非当前用户
clientDeviceMapper.updateByDevIdAndAccountId(devId,accountId);
//离线当前用户以前登录的设备
clientDeviceMapper.updateAccountIdAndByDevId(devId,accountId);
}
} }

@ -45,4 +45,8 @@ public interface ClientDeviceMapper {
PageList<JSONObject> listDevices(JSONObject params, PageBounds pagination); PageList<JSONObject> listDevices(JSONObject params, PageBounds pagination);
void deviceOffline(@Param("account_id") String accountId); void deviceOffline(@Param("account_id") String accountId);
void updateByDevIdAndAccountId(@Param("client_dev_id") String devId, @Param("account_id")String accountId);
void updateAccountIdAndByDevId(@Param("client_dev_id") String devId, @Param("account_id")String accountId);
} }

@ -55,4 +55,20 @@
where where
account_id = #{account_id} account_id = #{account_id}
</update> </update>
<update id="updateByDevIdAndAccountId">
UPDATE sys_clients_devices device
LEFT JOIN sys_clients_devices_token dtoken
ON device.dev_id = dtoken.dev_id
SET device.is_offline = 1,dtoken.is_valid=0
WHERE device.client_dev_id = #{client_dev_id} AND device.account_id != #{account_id}
</update>
<update id="updateAccountIdAndByDevId">
UPDATE sys_clients_devices device
LEFT JOIN sys_clients_devices_token dtoken
ON device.dev_id = dtoken.dev_id
SET device.is_offline = 1,dtoken.is_valid=0
WHERE device.client_dev_id != #{client_dev_id} AND device.account_id = #{account_id}
</update>
</mapper> </mapper>
Loading…
Cancel
Save