diff --git a/docs/databases/tables_create.sql b/docs/databases/tables_create.sql
index ab4bf23..29ef738 100644
--- a/docs/databases/tables_create.sql
+++ b/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')
\ No newline at end of file
+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;
\ No newline at end of file
diff --git a/mallplus-portal/src/main/java/com/zscat/mallplus/unipush/UniPushService.java b/mallplus-admin/src/main/java/com/zscat/mallplus/unipush/UniPushService.java
similarity index 76%
rename from mallplus-portal/src/main/java/com/zscat/mallplus/unipush/UniPushService.java
rename to mallplus-admin/src/main/java/com/zscat/mallplus/unipush/UniPushService.java
index 8e063d1..4d4a8de 100644
--- a/mallplus-portal/src/main/java/com/zscat/mallplus/unipush/UniPushService.java
+++ b/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 {
}
-
}
diff --git a/mallplus-admin/src/main/resources/application.properties b/mallplus-admin/src/main/resources/application.properties
index 0288546..e32d32c 100644
--- a/mallplus-admin/src/main/resources/application.properties
+++ b/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===
\ No newline at end of file
+#===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
\ No newline at end of file
diff --git a/mallplus-mbg/src/main/java/com/zscat/mallplus/unipush/entity/PushCids.java b/mallplus-mbg/src/main/java/com/zscat/mallplus/unipush/entity/PushCids.java
new file mode 100644
index 0000000..69ecf06
--- /dev/null
+++ b/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
+ * File: PushCids.java
+ * Class: com.zscat.mallplus.unipush.entity.PushCids
+ * Description: <描述类的功能>.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2023/3/16 21:36
+ *
+ * @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
+}
diff --git a/mallplus-mbg/src/main/java/com/zscat/mallplus/unipush/mapper/PushCidsMapper.java b/mallplus-mbg/src/main/java/com/zscat/mallplus/unipush/mapper/PushCidsMapper.java
new file mode 100644
index 0000000..dc13d74
--- /dev/null
+++ b/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
+ * File: PushCidsMapper.java
+ * Class: com.zscat.mallplus.unipush.entity.PushCidsMapper
+ * Description: <描述类的功能>.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2023/3/16 21:46
+ *
+ * @author liupopo
+ * @version 1.0
+ * @since 1.0
+ */
+public interface PushCidsMapper extends BaseMapper {
+}
diff --git a/mallplus-portal/pom.xml b/mallplus-portal/pom.xml
index 1b5a753..c90a4f6 100644
--- a/mallplus-portal/pom.xml
+++ b/mallplus-portal/pom.xml
@@ -204,12 +204,12 @@
wsdl4j
1.6.3
-
- com.getui.push
- restful-sdk
- 1.0.0.11
- compile
-
+
+
+
+
+
+
diff --git a/mallplus-portal/src/main/java/com/zscat/mallplus/single/SingelHomeController.java b/mallplus-portal/src/main/java/com/zscat/mallplus/single/SingelHomeController.java
index c62daeb..b35466e 100644
--- a/mallplus-portal/src/main/java/com/zscat/mallplus/single/SingelHomeController.java
+++ b/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();
+ }
}
diff --git a/mallplus-portal/src/main/java/com/zscat/mallplus/unipush/PushCidsService.java b/mallplus-portal/src/main/java/com/zscat/mallplus/unipush/PushCidsService.java
new file mode 100644
index 0000000..568ac0c
--- /dev/null
+++ b/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
+ * File: IPushCidsService.java
+ * Class: com.zscat.mallplus.unipush.service.IPushCidsService
+ * Description: <描述类的功能>.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2023/3/16 22:18
+ *
+ * @author liupopo
+ * @version 1.0
+ * @since 1.0
+ */
+@Service
+public class PushCidsService extends ServiceImpl {
+ public void pushCid(String cid) {
+ List list = listByCid(cid);
+ if (list == null || list.isEmpty()) {
+ baseMapper.insert(new PushCids(cid));
+ }
+ }
+
+ public List listByCid(String cid) {
+ QueryWrapper qw = new QueryWrapper<>();
+ qw.eq("getuiCid", cid);
+ return baseMapper.selectList(qw);
+ }
+
+ public void bindPhone(String cid, String phone) {
+ List list = listByCid(cid);
+ if (list != null && list.size() == 1) { // 只有一条cid数据,判断是否和手机号相同
+ PushCids pc = list.get(0);
+ if (!phone.equals(pc.getUserPhone())) { // 手机号不同或为空,更新手机号
+ UpdateWrapper 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 uw = new UpdateWrapper<>();
+ uw.eq("getuiCid", cid);
+ baseMapper.delete(uw);
+ }
+}
diff --git a/mallplus-portal/src/main/resources/application.properties b/mallplus-portal/src/main/resources/application.properties
index 26e4ee1..7c28e74 100644
--- a/mallplus-portal/src/main/resources/application.properties
+++ b/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
-