Browse Source

消息通知

master
lzh 2 years ago
parent
commit
9afc113da3
  1. 12
      docs/databases/tables_create.sql
  2. 34
      mallplus-admin/src/main/java/com/zscat/mallplus/unipush/UniPushService.java
  3. 9
      mallplus-admin/src/main/resources/application.properties
  4. 72
      mallplus-mbg/src/main/java/com/zscat/mallplus/unipush/entity/PushCids.java
  5. 45
      mallplus-mbg/src/main/java/com/zscat/mallplus/unipush/mapper/PushCidsMapper.java
  6. 12
      mallplus-portal/pom.xml
  7. 39
      mallplus-portal/src/main/java/com/zscat/mallplus/single/SingelHomeController.java
  8. 94
      mallplus-portal/src/main/java/com/zscat/mallplus/unipush/PushCidsService.java
  9. 7
      mallplus-portal/src/main/resources/application.properties

12
docs/databases/tables_create.sql

@ -19,4 +19,14 @@ insert into app_version(versionCode,versionName,downloadUrl,versionInfo,fileName
values (1002,'1.0.0.2','http://mall.yyundong.com/apks/mall-1002.apk','BUG修复,功能完善','mall-1002.apk')
insert into app_version(versionCode,versionName,downloadUrl,versionInfo,fileName)
values (1003,'1.0.0.3','http://mall.yyundong.com/apks/mall-1003.apk','登录方式切换的Bug修复;登录及退出后本地缓存数据问题的修复。','mall-1003.apk')
values (1003,'1.0.0.3','http://mall.yyundong.com/apks/mall-1003.apk','登录方式切换的Bug修复;登录及退出后本地缓存数据问题的修复。','mall-1003.apk')
CREATE TABLE `push_cids` (
`id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号',
`getuiCid` varchar(100) NOT NULL COMMENT '个推的ClientID',
`userPhone` varchar(100) DEFAULT NULL COMMENT '用户手机号',
`userId` bigint(32) DEFAULT NULL COMMENT '用户ID',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

34
mallplus-portal/src/main/java/com/zscat/mallplus/unipush/UniPushService.java → mallplus-admin/src/main/java/com/zscat/mallplus/unipush/UniPushService.java

@ -5,11 +5,10 @@ import com.getui.push.v2.sdk.GtApiConfiguration;
import com.getui.push.v2.sdk.api.PushApi;
import com.getui.push.v2.sdk.common.ApiResult;
import com.getui.push.v2.sdk.dto.req.Audience;
import com.getui.push.v2.sdk.dto.req.message.PushChannel;
import com.getui.push.v2.sdk.dto.req.message.PushDTO;
import com.getui.push.v2.sdk.dto.req.message.PushMessage;
import com.getui.push.v2.sdk.dto.req.message.android.AndroidDTO;
import com.getui.push.v2.sdk.dto.req.message.android.GTNotification;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.Map;
@ -17,6 +16,36 @@ import java.util.Map;
@Component
public class UniPushService {
// @Value("${unipush.appid:UBUIDJ8NQm50rGJsB6LYx1}")
// private String appid;
private static String apiurl = "https://restapi.getui.com/v2/";
private static String appid = "UBUIDJ8NQm50rGJsB6LYx1";
private static String appkey = "RS3UZfeS509hcNEkmfS6R";
private static String appsecret = "6QuFcPWFga8DQzSa03ruR7";
private static String mastersecret = "6fjUinwRfDA3BcEnDQvTl5";
private static String apppackage = "org.jbase.yxt.yyd.pyw";
private static PushApi pushApi = null;
private PushApi singlePushApi() {
if (pushApi == null) {
System.setProperty("http.maxConnections", "200");
GtApiConfiguration apiConfiguration = new GtApiConfiguration();
//填写应用配置
apiConfiguration.setAppId(appid);
apiConfiguration.setAppKey(appkey);
apiConfiguration.setMasterSecret(mastersecret);
// 接口调用前缀,请查看文档: 接口调用规范 -> 接口前缀, 可不填写appId
apiConfiguration.setDomain(apiurl);
// 实例化ApiHelper对象,用于创建接口对象
ApiHelper apiHelper = ApiHelper.build(apiConfiguration);
// 创建对象,建议复用。目前有PushApi、StatisticApi、UserApi
pushApi = apiHelper.creatApi(PushApi.class);
}
return pushApi;
}
public void test() {
// 设置httpClient最大连接数,当并发较大时建议调大此参数。或者启动参数加上 -Dhttp.maxConnections=200
@ -106,5 +135,4 @@ public class UniPushService {
}
}

9
mallplus-admin/src/main/resources/application.properties

@ -82,4 +82,11 @@ jwt.secret=mySecret
jwt.expiration=604800
#JWT\u8D1F\u8F7D\u4E2D\u62FF\u5230\u5F00\u5934
jwt.tokenHead=Bearer
#===JWT end===
#===JWT end===
unipush.baseurl=https://restapi.getui.com/v2/UBUIDJ8NQm50rGJsB6LYx1
unipush.appid=UBUIDJ8NQm50rGJsB6LYx1
unipush.appkey=RS3UZfeS509hcNEkmfS6R
unipush.appsecret=6QuFcPWFga8DQzSa03ruR7
unipush.mastersecret=6fjUinwRfDA3BcEnDQvTl5
unipush.apppackage=org.jbase.yxt.yyd.pyw

72
mallplus-mbg/src/main/java/com/zscat/mallplus/unipush/entity/PushCids.java

@ -0,0 +1,72 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.zscat.mallplus.unipush.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
/**
* Project: mallplus <br/>
* File: PushCids.java <br/>
* Class: com.zscat.mallplus.unipush.entity.PushCids <br/>
* Description: <描述类的功能>. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2023/3/16 21:36 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Data
@TableName("push_cids")
public class PushCids implements Serializable {
private static final long serialVersionUID = 1L;
public PushCids() {
}
public PushCids(String getuiCid) {
this.getuiCid = getuiCid;
}
public PushCids(String getuiCid, String userPhone) {
this.getuiCid = getuiCid;
this.userPhone = userPhone;
}
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private String getuiCid;// 个推的ClientID
private String userPhone;// 用户手机号
private Long userId;// 用户ID
}

45
mallplus-mbg/src/main/java/com/zscat/mallplus/unipush/mapper/PushCidsMapper.java

@ -0,0 +1,45 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.zscat.mallplus.unipush.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zscat.mallplus.unipush.entity.PushCids;
/**
* Project: mallplus <br/>
* File: PushCidsMapper.java <br/>
* Class: com.zscat.mallplus.unipush.entity.PushCidsMapper <br/>
* Description: <描述类的功能>. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2023/3/16 21:46 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
public interface PushCidsMapper extends BaseMapper<PushCids> {
}

12
mallplus-portal/pom.xml

@ -204,12 +204,12 @@
<artifactId>wsdl4j</artifactId>
<version>1.6.3</version>
</dependency>
<dependency>
<groupId>com.getui.push</groupId>
<artifactId>restful-sdk</artifactId>
<version>1.0.0.11</version>
<scope>compile</scope>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.getui.push</groupId>-->
<!-- <artifactId>restful-sdk</artifactId>-->
<!-- <version>1.0.0.11</version>-->
<!-- <scope>compile</scope>-->
<!-- </dependency>-->
</dependencies>
<build>

39
mallplus-portal/src/main/java/com/zscat/mallplus/single/SingelHomeController.java

@ -1,6 +1,7 @@
package com.zscat.mallplus.single;
import cn.hutool.core.thread.ThreadUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zscat.mallplus.annotation.IgnoreAuth;
@ -25,6 +26,7 @@ import com.zscat.mallplus.ums.service.IAdminSysNoticeService;
import com.zscat.mallplus.ums.service.IUmsMemberLocationService;
import com.zscat.mallplus.ums.service.IUmsMemberService;
import com.zscat.mallplus.ums.service.RedisService;
import com.zscat.mallplus.unipush.PushCidsService;
import com.zscat.mallplus.util.JsonUtils;
import com.zscat.mallplus.util.OssAliyunUtil;
import com.zscat.mallplus.utils.CommonResult;
@ -98,10 +100,14 @@ public class SingelHomeController {
@Resource
private MallplusProperties mallplusProperties;
@Resource
private PushCidsService pushCidsService;
@RequestMapping(value = "/sysInfo", method = RequestMethod.GET)
public Object sysInfo() {
return new CommonResult().success(mallplusProperties);
}
@IgnoreAuth
@ApiOperation("首页内容页信息展示")
@SysLog(MODULE = "home", REMARK = "首页内容页信息展示")
@ -348,7 +354,8 @@ public class SingelHomeController {
@ApiOperation(value = "手机号 密码登录")
@PostMapping(value = "/login")
public Object login(@RequestParam("phone") String phone,
@RequestParam("password") String password) {
@RequestParam("password") String password,
@RequestParam(required = false) String cid) {
if (phone == null || "".equals(phone)) {
return new CommonResult().validateFailed("用户名或密码错误");
}
@ -361,6 +368,9 @@ public class SingelHomeController {
log.info("用户名或密码错误");
return new CommonResult().failed("用户名或密码错误");
}
if (StringUtils.isNotBlank(cid) && StringUtils.isNotBlank(phone)) {
ThreadUtil.execute(() -> pushCidsService.bindPhone(cid, phone));
}
return new CommonResult().success(token);
} catch (AuthenticationException e) {
log.info("用户名或密码错误");
@ -376,7 +386,8 @@ public class SingelHomeController {
@ApiOperation(value = "手机和验证码登录")
@PostMapping(value = "/loginByCode")
public Object loginByCode(@RequestParam String phone,
@RequestParam String authCode) {
@RequestParam String authCode,
@RequestParam(required = false) String cid) {
if (phone == null || "".equals(phone)) {
return new CommonResult().validateFailed("用户名或密码错误");
}
@ -388,6 +399,9 @@ public class SingelHomeController {
if (token.get("token") == null) {
return new CommonResult().validateFailed("用户名或密码错误");
}
if (StringUtils.isNotBlank(cid) && StringUtils.isNotBlank(phone)) {
ThreadUtil.execute(() -> pushCidsService.bindPhone(cid, phone));
}
return new CommonResult().success(token);
} catch (AuthenticationException e) {
return new CommonResult().validateFailed("用户名或密码错误");
@ -448,19 +462,19 @@ public class SingelHomeController {
@IgnoreAuth
@ApiOperation("获取验证码")
@PostMapping(value = "/sms/codes")
public Object sendSmsCode(@RequestParam("phone") String phone,@RequestParam(value = "type")String type) {
public Object sendSmsCode(@RequestParam("phone") String phone, @RequestParam(value = "type") String type) {
try {
if (!PhoneUtil.checkPhone(phone)) {
throw new IllegalArgumentException("手机号格式不正确");
}
if(StringUtils.isBlank(type)){
if (StringUtils.isBlank(type)) {
return new CommonResult().failed("参数错误:type");
}
//缓存识别码
String redisKey = "";
if(SmsEnum.SendEnum.LOGIN.getCode().equals(type)){
if (SmsEnum.SendEnum.LOGIN.getCode().equals(type)) {
redisKey = REDIS_KEY_PREFIX_LOGIN_CODE;
}else if(SmsEnum.SendEnum.FORGET.getCode().equals(type)){
} else if (SmsEnum.SendEnum.FORGET.getCode().equals(type)) {
redisKey = REDIS_KEY_PREFIX_FORGET_CODE;
}
Date date = new Date();
@ -473,7 +487,7 @@ public class SingelHomeController {
return new CommonResult().failed("请等待一分钟后再次重试!");
}
}
SmsCode smsCode = memberService.generateCode(phone,type,date);
SmsCode smsCode = memberService.generateCode(phone, type, date);
return new CommonResult().success(smsCode);
} catch (Exception e) {
@ -606,4 +620,15 @@ public class SingelHomeController {
SecurityContextHolder.getContext().setAuthentication(null);
return new CommonResult().success(null);
}
@IgnoreAuth
@ApiOperation("提供unipush的ClientID")
@PostMapping(value = "/pushCid")
public Object pushCid(@RequestParam String cid) {
if (StringUtils.isNotBlank(cid)) {
ThreadUtil.execute(() -> pushCidsService.pushCid(cid));
}
return new CommonResult().success();
}
}

94
mallplus-portal/src/main/java/com/zscat/mallplus/unipush/PushCidsService.java

@ -0,0 +1,94 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.zscat.mallplus.unipush;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zscat.mallplus.unipush.entity.PushCids;
import com.zscat.mallplus.unipush.mapper.PushCidsMapper;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
* Project: mallplus <br/>
* File: IPushCidsService.java <br/>
* Class: com.zscat.mallplus.unipush.service.IPushCidsService <br/>
* Description: <描述类的功能>. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2023/3/16 22:18 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Service
public class PushCidsService extends ServiceImpl<PushCidsMapper, PushCids> {
public void pushCid(String cid) {
List<PushCids> list = listByCid(cid);
if (list == null || list.isEmpty()) {
baseMapper.insert(new PushCids(cid));
}
}
public List<PushCids> listByCid(String cid) {
QueryWrapper<PushCids> qw = new QueryWrapper<>();
qw.eq("getuiCid", cid);
return baseMapper.selectList(qw);
}
public void bindPhone(String cid, String phone) {
List<PushCids> list = listByCid(cid);
if (list != null && list.size() == 1) { // 只有一条cid数据,判断是否和手机号相同
PushCids pc = list.get(0);
if (!phone.equals(pc.getUserPhone())) { // 手机号不同或为空,更新手机号
UpdateWrapper<PushCids> uw = new UpdateWrapper<>();
uw.set("userPhone", phone);
uw.eq("getuiCid", cid);
baseMapper.update(null, uw);
}
return;
}
if (list == null || list.isEmpty()) { // 如果没有cid,直接插入
baseMapper.insert(new PushCids(cid, phone));
return;
}
// cid不为空且多于1条,全部删除只保留一条
deleteByCid(cid);
baseMapper.insert(new PushCids(cid, phone));
}
private void deleteByCid(String cid) {
UpdateWrapper<PushCids> uw = new UpdateWrapper<>();
uw.eq("getuiCid", cid);
baseMapper.delete(uw);
}
}

7
mallplus-portal/src/main/resources/application.properties

@ -135,10 +135,3 @@ wxsubpay.partnerKey=xxxx
wxsubpay.certPath=xxxx
wxsubpay.domain=xxxx
unipush.baseurl=https://restapi.getui.com/v2/UBUIDJ8NQm50rGJsB6LYx1
unipush.appid=UBUIDJ8NQm50rGJsB6LYx1
unipush.appkey=RS3UZfeS509hcNEkmfS6R
unipush.appsecret=6QuFcPWFga8DQzSa03ruR7
unipush.mastersecret=6fjUinwRfDA3BcEnDQvTl5
unipush.apppackage=org.jbase.yxt.yyd.pyw

Loading…
Cancel
Save