Commit 7365d894 authored by shiyu's avatar shiyu

公众号订阅

parent 2e44f766
......@@ -12,4 +12,6 @@ public interface OfficialAccountSubscribeRecordDao {
boolean isExisted(String openid);
boolean isSubscribed(String openid);
OfficialAccountSubscribeRecord findOne(String openid);
}
......@@ -30,10 +30,10 @@ public class OfficialAccountSubscribeRecordDaoImpl implements OfficialAccountSub
}
@Override
public boolean isExisted(String unionid) {
public boolean isExisted(String openid) {
OfficialAccountSubscribeRecordExample example = new OfficialAccountSubscribeRecordExample();
OfficialAccountSubscribeRecordExample.Criteria criteria = example.createCriteria();
criteria.andUnionidEqualTo(unionid);
criteria.andOpenidEqualTo(openid);
return officialAccountSubscribeRecordMapper.countByExample(example) > 0;
}
......@@ -45,4 +45,12 @@ public class OfficialAccountSubscribeRecordDaoImpl implements OfficialAccountSub
criteria.andEnabledEqualTo(1);
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 {
* @param openid
* @return
*/
public String getUnionidByopenid(String openid) {
public String getUnionidByOpenid(String openid) {
String token = getAccessToken();
String url = GET_USER_BASE_INFO_URL + "&access_token=" + token + "&openid=" + openid;
OkHttpUtil okHttpUtil = OkHttpUtil.builder().url(url);
......
......@@ -2,6 +2,7 @@ package com.wwdz.ch.wx.api;
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.domain.OfficialAccountSubscribeRecord;
import com.wwdz.ch.db.domain.User;
......@@ -91,25 +92,32 @@ public class OfficialAccountCallbackController {
logger.info("解析xml得到 openId:{}, event :{}, time:{}", userOpenId, event, date);
//新增或更新订阅记录
OfficialAccountSubscribeRecord officialAccountSubscribeRecord = new OfficialAccountSubscribeRecord();
//根据openid获取unionid
String unionid = officialAccountApi.getUnionidByopenid(userOpenId);
officialAccountSubscribeRecord.setUnionid(unionid);
officialAccountSubscribeRecord.setOpenid(userOpenId);
String unionid = null;
if (SUBSCRIBE_EVENT.equals(event)) {
//只有关注了公众号,才可以通过根据openid获取unionid
unionid = officialAccountApi.getUnionidByOpenid(userOpenId);
officialAccountSubscribeRecord.setUnionid(unionid);
officialAccountSubscribeRecord.setEnabled(1);
} else {
officialAccountSubscribeRecord.setEnabled(0);
}
//查询有无历史订阅记录
boolean isExisted = officialAccountSubscribeRecordService.isExisted(unionid);
boolean isExisted = officialAccountSubscribeRecordService.isExisted(userOpenId);
if (isExisted) {
/* Result<OfficialAccountSubscribeRecord> result = officialAccountSubscribeRecordService.findOne(userOpenId);
OfficialAccountSubscribeRecord oldRecord = result.getData();
officialAccountSubscribeRecord.setUnionid(oldRecord.getUnionid());*/
officialAccountSubscribeRecord.setUpdateTime(date);
officialAccountSubscribeRecordService.update(officialAccountSubscribeRecord);
} else {
//没有历史订阅记录,先根据unionid查询手机号
User user = userDao.queryByOid(unionid);
if (user != null) {
officialAccountSubscribeRecord.setPhone(user.getMobile());
//没有历史订阅记录,
if (SUBSCRIBE_EVENT.equals(event)) {
//根据unionid查询手机号
User user = userDao.queryByOid(unionid);
if (user != null) {
officialAccountSubscribeRecord.setPhone(user.getMobile());
}
}
officialAccountSubscribeRecord.setCreateTime(date);
officialAccountSubscribeRecord.setUpdateTime(date);
......
......@@ -62,4 +62,16 @@ public class OfficialAccountSubscribeRecordServiceImpl implements OfficialAccoun
}
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 {
* @return
*/
Result isSubscribed(String openid);
Result findOne(String openid);
}
......@@ -6,8 +6,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import static org.junit.Assert.*;
@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
public class OfficialAccountApiTest {
......@@ -24,6 +22,6 @@ public class OfficialAccountApiTest {
@Test
public void getUserBaseInfo() {
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