Commit 7365d894 authored by shiyu's avatar shiyu

公众号订阅

parent 2e44f766
...@@ -12,4 +12,6 @@ public interface OfficialAccountSubscribeRecordDao { ...@@ -12,4 +12,6 @@ public interface OfficialAccountSubscribeRecordDao {
boolean isExisted(String openid); boolean isExisted(String openid);
boolean isSubscribed(String openid); boolean isSubscribed(String openid);
OfficialAccountSubscribeRecord findOne(String openid);
} }
...@@ -30,10 +30,10 @@ public class OfficialAccountSubscribeRecordDaoImpl implements OfficialAccountSub ...@@ -30,10 +30,10 @@ public class OfficialAccountSubscribeRecordDaoImpl implements OfficialAccountSub
} }
@Override @Override
public boolean isExisted(String unionid) { public boolean isExisted(String openid) {
OfficialAccountSubscribeRecordExample example = new OfficialAccountSubscribeRecordExample(); OfficialAccountSubscribeRecordExample example = new OfficialAccountSubscribeRecordExample();
OfficialAccountSubscribeRecordExample.Criteria criteria = example.createCriteria(); OfficialAccountSubscribeRecordExample.Criteria criteria = example.createCriteria();
criteria.andUnionidEqualTo(unionid); criteria.andOpenidEqualTo(openid);
return officialAccountSubscribeRecordMapper.countByExample(example) > 0; return officialAccountSubscribeRecordMapper.countByExample(example) > 0;
} }
...@@ -45,4 +45,12 @@ public class OfficialAccountSubscribeRecordDaoImpl implements OfficialAccountSub ...@@ -45,4 +45,12 @@ public class OfficialAccountSubscribeRecordDaoImpl implements OfficialAccountSub
criteria.andEnabledEqualTo(1); criteria.andEnabledEqualTo(1);
return officialAccountSubscribeRecordMapper.countByExample(example) > 0; return officialAccountSubscribeRecordMapper.countByExample(example) > 0;
} }
@Override
public OfficialAccountSubscribeRecord findOne(String openid) {
OfficialAccountSubscribeRecordExample example = new OfficialAccountSubscribeRecordExample();
OfficialAccountSubscribeRecordExample.Criteria criteria = example.createCriteria();
criteria.andOpenidEqualTo(openid);
return officialAccountSubscribeRecordMapper.selectOneByExample(example);
}
} }
...@@ -65,7 +65,7 @@ public class OfficialAccountApi { ...@@ -65,7 +65,7 @@ public class OfficialAccountApi {
* @param openid * @param openid
* @return * @return
*/ */
public String getUnionidByopenid(String openid) { public String getUnionidByOpenid(String openid) {
String token = getAccessToken(); String token = getAccessToken();
String url = GET_USER_BASE_INFO_URL + "&access_token=" + token + "&openid=" + openid; String url = GET_USER_BASE_INFO_URL + "&access_token=" + token + "&openid=" + openid;
OkHttpUtil okHttpUtil = OkHttpUtil.builder().url(url); OkHttpUtil okHttpUtil = OkHttpUtil.builder().url(url);
......
...@@ -2,6 +2,7 @@ package com.wwdz.ch.wx.api; ...@@ -2,6 +2,7 @@ package com.wwdz.ch.wx.api;
import com.wwdz.ch.core.consts.OfficalAccountEnum; import com.wwdz.ch.core.consts.OfficalAccountEnum;
import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.db.dao.UserDao; import com.wwdz.ch.db.dao.UserDao;
import com.wwdz.ch.db.domain.OfficialAccountSubscribeRecord; import com.wwdz.ch.db.domain.OfficialAccountSubscribeRecord;
import com.wwdz.ch.db.domain.User; import com.wwdz.ch.db.domain.User;
...@@ -91,25 +92,32 @@ public class OfficialAccountCallbackController { ...@@ -91,25 +92,32 @@ public class OfficialAccountCallbackController {
logger.info("解析xml得到 openId:{}, event :{}, time:{}", userOpenId, event, date); logger.info("解析xml得到 openId:{}, event :{}, time:{}", userOpenId, event, date);
//新增或更新订阅记录 //新增或更新订阅记录
OfficialAccountSubscribeRecord officialAccountSubscribeRecord = new OfficialAccountSubscribeRecord(); OfficialAccountSubscribeRecord officialAccountSubscribeRecord = new OfficialAccountSubscribeRecord();
//根据openid获取unionid
String unionid = officialAccountApi.getUnionidByopenid(userOpenId);
officialAccountSubscribeRecord.setUnionid(unionid);
officialAccountSubscribeRecord.setOpenid(userOpenId); officialAccountSubscribeRecord.setOpenid(userOpenId);
String unionid = null;
if (SUBSCRIBE_EVENT.equals(event)) { if (SUBSCRIBE_EVENT.equals(event)) {
//只有关注了公众号,才可以通过根据openid获取unionid
unionid = officialAccountApi.getUnionidByOpenid(userOpenId);
officialAccountSubscribeRecord.setUnionid(unionid);
officialAccountSubscribeRecord.setEnabled(1); officialAccountSubscribeRecord.setEnabled(1);
} else { } else {
officialAccountSubscribeRecord.setEnabled(0); officialAccountSubscribeRecord.setEnabled(0);
} }
//查询有无历史订阅记录 //查询有无历史订阅记录
boolean isExisted = officialAccountSubscribeRecordService.isExisted(unionid); boolean isExisted = officialAccountSubscribeRecordService.isExisted(userOpenId);
if (isExisted) { if (isExisted) {
/* Result<OfficialAccountSubscribeRecord> result = officialAccountSubscribeRecordService.findOne(userOpenId);
OfficialAccountSubscribeRecord oldRecord = result.getData();
officialAccountSubscribeRecord.setUnionid(oldRecord.getUnionid());*/
officialAccountSubscribeRecord.setUpdateTime(date); officialAccountSubscribeRecord.setUpdateTime(date);
officialAccountSubscribeRecordService.update(officialAccountSubscribeRecord); officialAccountSubscribeRecordService.update(officialAccountSubscribeRecord);
} else { } else {
//没有历史订阅记录,先根据unionid查询手机号 //没有历史订阅记录,
User user = userDao.queryByOid(unionid); if (SUBSCRIBE_EVENT.equals(event)) {
if (user != null) { //根据unionid查询手机号
officialAccountSubscribeRecord.setPhone(user.getMobile()); User user = userDao.queryByOid(unionid);
if (user != null) {
officialAccountSubscribeRecord.setPhone(user.getMobile());
}
} }
officialAccountSubscribeRecord.setCreateTime(date); officialAccountSubscribeRecord.setCreateTime(date);
officialAccountSubscribeRecord.setUpdateTime(date); officialAccountSubscribeRecord.setUpdateTime(date);
......
...@@ -62,4 +62,16 @@ public class OfficialAccountSubscribeRecordServiceImpl implements OfficialAccoun ...@@ -62,4 +62,16 @@ public class OfficialAccountSubscribeRecordServiceImpl implements OfficialAccoun
} }
return Result.failed(); return Result.failed();
} }
@Override
public Result findOne(String openid) {
try {
OfficialAccountSubscribeRecord officialAccountSubscribeRecord = officialAccountSubscribeRecordDao.findOne(openid);
return Result.success(officialAccountSubscribeRecord);
} catch (Exception e) {
logger.error("findOne error :{}", e);
}
return Result.failed();
}
} }
...@@ -22,4 +22,7 @@ public interface OfficialAccountSubscribeRecordService { ...@@ -22,4 +22,7 @@ public interface OfficialAccountSubscribeRecordService {
* @return * @return
*/ */
Result isSubscribed(String openid); Result isSubscribed(String openid);
Result findOne(String openid);
} }
...@@ -6,8 +6,6 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -6,8 +6,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import static org.junit.Assert.*;
@SpringBootTest @SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class) @RunWith(SpringJUnit4ClassRunner.class)
public class OfficialAccountApiTest { public class OfficialAccountApiTest {
...@@ -24,6 +22,6 @@ public class OfficialAccountApiTest { ...@@ -24,6 +22,6 @@ public class OfficialAccountApiTest {
@Test @Test
public void getUserBaseInfo() { public void getUserBaseInfo() {
String openid = "oNPTN6QaVliZfKB53OzZRPBZr_r8"; String openid = "oNPTN6QaVliZfKB53OzZRPBZr_r8";
officialAccountApi.getUnionidByopenid(openid); officialAccountApi.getUnionidByOpenid(openid);
} }
} }
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment