diff --git a/src/main/java/com/bsd/say/controller/UsersController.java b/src/main/java/com/bsd/say/controller/UsersController.java index ae3ca9b..ac13b22 100644 --- a/src/main/java/com/bsd/say/controller/UsersController.java +++ b/src/main/java/com/bsd/say/controller/UsersController.java @@ -61,4 +61,19 @@ public class UsersController extends BaseController{ return ajaxResult; } + @RequestMapping(value = "/is-subscribe") + public AjaxResult isSubscribe(@RequestBody AjaxRequest ajaxRequest){ + + AjaxResult ajaxResult = new AjaxResult(); + try { + ajaxResult = usersService.isSubscribe(ajaxRequest); + } catch (Exception e) { + e.printStackTrace(); + String errMsg = e.getMessage() != null ? e.getMessage() : "操作失败"; + ajaxResult.setRetcode(AjaxResult.FAILED); + ajaxResult.setRetmsg(errMsg); + } + return ajaxResult; + } + } diff --git a/src/main/java/com/bsd/say/service/UsersService.java b/src/main/java/com/bsd/say/service/UsersService.java index cd00639..ad1d257 100644 --- a/src/main/java/com/bsd/say/service/UsersService.java +++ b/src/main/java/com/bsd/say/service/UsersService.java @@ -6,5 +6,5 @@ import com.bsd.say.entities.Users; public interface UsersService extends BaseService{ AjaxResult sendNote(AjaxRequest ajaxRequest); - + AjaxResult isSubscribe(AjaxRequest ajaxRequest); } diff --git a/src/main/java/com/bsd/say/service/impl/AwardListServiceImpl.java b/src/main/java/com/bsd/say/service/impl/AwardListServiceImpl.java index d1e27f3..3a3afff 100644 --- a/src/main/java/com/bsd/say/service/impl/AwardListServiceImpl.java +++ b/src/main/java/com/bsd/say/service/impl/AwardListServiceImpl.java @@ -14,7 +14,9 @@ import com.bsd.say.mapper.RecordMapper; import com.bsd.say.mapper.UsersMapper; import com.bsd.say.service.AwardListService; import com.bsd.say.service.CouponService; +import com.bsd.say.util.LogUtils; import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; @@ -40,12 +42,16 @@ public class AwardListServiceImpl extends BaseServiceImpllambdaQuery().eq(Users::getUnionId,unionId) .and(queryWrapper1 -> queryWrapper1.eq(Users::getState,1))); AwardList maxIdAward = awardListMapper.selectByMaxId(); @@ -116,7 +123,8 @@ public class AwardListServiceImpl extends BaseServiceImpllambdaQuery().eq(Users::getUnionId,unionId) .and(queryWrapper1 -> queryWrapper1.eq(Users::getState,1))); if (users == null){ @@ -184,7 +192,8 @@ public class AwardListServiceImpl extends BaseServiceImpllambdaQuery().eq(Users::getUnionId,unionId) .and(queryWrapper1 -> queryWrapper1.eq(Users::getState,1))); if (users == null){ @@ -250,7 +259,8 @@ public class AwardListServiceImpl extends BaseServiceImpllambdaQuery().eq(Users::getUnionId,unionId) .and(queryWrapper1 -> queryWrapper1.eq(Users::getState,1))); if (users == null){ diff --git a/src/main/java/com/bsd/say/service/impl/CouponServiceImpl.java b/src/main/java/com/bsd/say/service/impl/CouponServiceImpl.java index 8801178..994bd85 100644 --- a/src/main/java/com/bsd/say/service/impl/CouponServiceImpl.java +++ b/src/main/java/com/bsd/say/service/impl/CouponServiceImpl.java @@ -11,8 +11,10 @@ import com.bsd.say.mapper.RecordMapper; import com.bsd.say.mapper.UsersMapper; import com.bsd.say.service.CouponService; import com.bsd.say.util.HttpRequestUtils; +import com.bsd.say.util.LogUtils; import com.bsd.say.util.MD5Utils; import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; @@ -48,6 +50,10 @@ public class CouponServiceImpl extends BaseServiceImpl imp public CouponMapper getBaseMapper() { return this.couponMapper; } + @Autowired + WeixinService weixinService; + + private Logger logger = LogUtils.getBussinessLogger(); /** * 领取优惠券 @@ -96,7 +102,8 @@ public class CouponServiceImpl extends BaseServiceImpl imp Coupon coupon = new Coupon(); Users users; if (isAward){ - String unionId = "123"; + String unionId = weixinService.getUnionId(code); + logger.info("union_id:"+unionId); users = usersMapper.selectOne(Wrappers.lambdaQuery().eq(Users::getUnionId,unionId) .and(queryWrapper1 -> queryWrapper1.eq(Users::getState,1))); users.setPhone(phone); @@ -119,7 +126,8 @@ public class CouponServiceImpl extends BaseServiceImpl imp }else { //来源微信 - String unionId = "123"; + String unionId = weixinService.getUnionId(code); + logger.info("union_id:"+unionId); users = usersMapper.selectOne(Wrappers.lambdaQuery().eq(Users::getUnionId,unionId) .and(queryWrapper1 -> queryWrapper1.eq(Users::getState,1))); @@ -177,7 +185,8 @@ public class CouponServiceImpl extends BaseServiceImpl imp Users users ; Boolean isWechat = true; if (StringUtils.isNotEmpty(code)){ - String unionId = "123"; + String unionId = weixinService.getUnionId(code); + logger.info("union_id:"+unionId); users= usersMapper.selectOne(Wrappers.lambdaQuery().eq(Users::getUnionId,unionId) .and(queryWrapper1 -> queryWrapper1.eq(Users::getState,1))); }else { @@ -189,7 +198,8 @@ public class CouponServiceImpl extends BaseServiceImpl imp //新会员直接创,肯定没领取过券 Users newUsers = new Users(); if (isWechat){ - String unionId = "123"; + String unionId = weixinService.getUnionId(code); + logger.info("union_id:"+unionId); newUsers.setUnionId(unionId); }else { newUsers.setPhone(phone); diff --git a/src/main/java/com/bsd/say/service/impl/LoveLetterServiceImpl.java b/src/main/java/com/bsd/say/service/impl/LoveLetterServiceImpl.java index 58a40a3..b93a124 100644 --- a/src/main/java/com/bsd/say/service/impl/LoveLetterServiceImpl.java +++ b/src/main/java/com/bsd/say/service/impl/LoveLetterServiceImpl.java @@ -9,10 +9,14 @@ import com.bsd.say.entities.Record; import com.bsd.say.mapper.LoveLetterMapper; import com.bsd.say.mapper.RecordMapper; import com.bsd.say.service.LoveLetterService; +import com.bsd.say.util.HttpRequestUtils; +import com.bsd.say.util.LogUtils; import com.bsd.say.util.RandomUtils; import com.sun.org.apache.bcel.internal.generic.NEW; import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -21,15 +25,19 @@ import java.util.Date; @Service("loveLetterService") @Transactional public class LoveLetterServiceImpl extends BaseServiceImpl implements LoveLetterService { + @Value("${wechat.getWxUserInfoUrl}") + private String getWxUserInfoUrl; @Autowired protected LoveLetterMapper loveLetterMapper; @Autowired private RecordMapper recordMapper; + @Autowired + private WeixinService weixinService; @Override public LoveLetterMapper getBaseMapper() { return this.loveLetterMapper; } - + private Logger logger = LogUtils.getBussinessLogger(); /** * 生成情书 * @param ajaxRequest @@ -77,7 +85,8 @@ public class LoveLetterServiceImpl extends BaseServiceImpllambdaQuery().eq(Record::getUnionId,unionId) .and(queryWrapper1 -> queryWrapper1.eq(Record::getState,1))); int createLetterTimes = record.getCreateLetterTimes(); @@ -133,27 +142,29 @@ public class LoveLetterServiceImpl extends BaseServiceImpllambdaQuery().eq(Record::getUnionId,unionId) .and(queryWrapper1 -> queryWrapper1.eq(Record::getState,1))); if (record == null){ //新用户第一次收到情书礼物 - String openId = "456"; + JSONObject weixin = weixinService.getAccessToken(code); + String openId = weixin.getString("openid"); + String accessToken = weixin.getString("access_token"); + String userInfoUrl = getWxUserInfoUrl + accessToken + "&openid=" + openId + "&lang=zh_CN" ; + String userString = HttpRequestUtils.sendGet(userInfoUrl); + JSONObject userJson = JSONObject.parseObject(userString); + String nickName = userJson.getString("nickname"); Record record1 = new Record(); record1.setSource("微信"); record1.setUnionId(unionId); record1.setOpenId(openId); - /** - * 昵称等 - */ + record1.setNickName(nickName); record1.setCreateDateTime(new Date()); record1.setUpdateDateTime(new Date()); record1.setReceiveLetterTimes(1); recordMapper.insert(record1); }else { - /** - * 更新用户信息 - */ int receiveLetterTimes = record.getReceiveLetterTimes(); record.setReceiveLetterTimes(receiveLetterTimes + 1); record.setUpdateDateTime(new Date()); diff --git a/src/main/java/com/bsd/say/service/impl/RecordServiceImpl.java b/src/main/java/com/bsd/say/service/impl/RecordServiceImpl.java index 42a4181..aa05b76 100644 --- a/src/main/java/com/bsd/say/service/impl/RecordServiceImpl.java +++ b/src/main/java/com/bsd/say/service/impl/RecordServiceImpl.java @@ -8,9 +8,11 @@ import com.bsd.say.entities.Record; import com.bsd.say.mapper.RecordMapper; import com.bsd.say.mapper.UsersMapper; import com.bsd.say.service.RecordService; +import com.bsd.say.util.HttpRequestUtils; import com.bsd.say.util.LogUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -20,11 +22,16 @@ import java.util.Date; @Service("recordService") @Transactional public class RecordServiceImpl extends BaseServiceImpl implements RecordService { + @Value("${wechat.getWxUserInfoUrl}") + private String getWxUserInfoUrl; @Resource private RecordMapper recordMapper; private Logger logger = LogUtils.getBussinessLogger(); + @Resource + WeixinService weixinService; + @Override public RecordMapper getBaseMapper() { return this.recordMapper; @@ -49,18 +56,24 @@ public class RecordServiceImpl extends BaseServiceImpl impl String code = data.getString("code"); if (StringUtils.isNotEmpty(code)){ //微信端 - String unionId = "123"; + String unionId = weixinService.getUnionId(code); + logger.info("union_id:"+unionId); Record record = recordMapper.selectOne(Wrappers.lambdaQuery().eq(Record::getUnionId,unionId) .and(queryWrapper1 -> queryWrapper1.eq(Record::getState,1))); if (record == null){ //微信端新用户第一次访问 - String openId = "456"; + JSONObject weixin = weixinService.getAccessToken(code); + String openId = weixin.getString("openid"); + logger.info("open_id:"+openId); Record newRecord = new Record(); newRecord.setOpenId(openId); newRecord.setUnionId(unionId); - /** - * 昵称之类的 - */ + String accessToken = weixin.getString("access_token"); + String userInfoUrl = getWxUserInfoUrl + accessToken + "&openid=" + openId + "&lang=zh_CN" ; + String userString = HttpRequestUtils.sendGet(userInfoUrl); + JSONObject userJson = JSONObject.parseObject(userString); + String nickName = userJson.getString("nickname"); + newRecord.setNickName(nickName); newRecord.setCreateDateTime(new Date()); newRecord.setUpdateDateTime(new Date()); newRecord.setSource("微信"); diff --git a/src/main/java/com/bsd/say/service/impl/UsersServiceImpl.java b/src/main/java/com/bsd/say/service/impl/UsersServiceImpl.java index 7d580a9..3d4a13e 100644 --- a/src/main/java/com/bsd/say/service/impl/UsersServiceImpl.java +++ b/src/main/java/com/bsd/say/service/impl/UsersServiceImpl.java @@ -32,8 +32,12 @@ public class UsersServiceImpl extends BaseServiceImpl impleme private String sendSource; @Value("${bsd.verifySMSCodeUrl}") private String verifySMSCodeUrl; + @Value("${wechat.getWxUserInfoUrl}") + private String getWxUserInfoUrl; @Autowired protected UsersMapper usersMapper; + @Autowired + private WeixinService weixinService; @Override public UsersMapper getBaseMapper() { @@ -82,4 +86,37 @@ public class UsersServiceImpl extends BaseServiceImpl impleme } } + @Override + public AjaxResult isSubscribe(AjaxRequest ajaxRequest) { + AjaxResult ajaxResult = new AjaxResult(); + JSONObject data = ajaxRequest.getData(); + if (data == null){ + ajaxResult.setRetmsg("DATA MISSING"); + ajaxResult.setRetcode(AjaxResult.FAILED); + return ajaxResult; + }else { + String code = data.getString("code"); + if (StringUtils.isEmpty(code)){ + ajaxResult.setRetmsg("CODE MISSING"); + ajaxResult.setRetcode(AjaxResult.FAILED); + return ajaxResult; + }else { + JSONObject weixin = weixinService.getAccessToken(code); + String openId = weixin.getString("openid"); + String accessToken = weixin.getString("access_token"); + String userInfoUrl = getWxUserInfoUrl + accessToken + "&openid=" + openId + "&lang=zh_CN" ; + JSONObject userinfo = JSONObject.parseObject(HttpRequestUtils.sendGet(userInfoUrl)); + int subscribe = userinfo.getInteger("subscribe"); + if (subscribe == 1){ + ajaxResult.setData(1); + ajaxResult.setRetmsg("已关注公众号"); + }else { + ajaxResult.setData(0); + ajaxResult.setRetmsg("未关注公众号"); + } + return ajaxResult; + } + } + } + } diff --git a/src/main/java/com/bsd/say/service/impl/WeixinService.java b/src/main/java/com/bsd/say/service/impl/WeixinService.java index c6dc0bd..a037c9f 100644 --- a/src/main/java/com/bsd/say/service/impl/WeixinService.java +++ b/src/main/java/com/bsd/say/service/impl/WeixinService.java @@ -41,6 +41,8 @@ public class WeixinService extends WxOpenServiceImpl { private String getAccessTokenUrl; @Value("${wechat.getUnionIdUrl}") private String getUnionIdUrl; + @Value("${wechat.getWxUserInfoUrl}") + private String getWxUserInfoUrl; @Resource private RedisTemplate redisTemplate; @@ -120,4 +122,5 @@ public class WeixinService extends WxOpenServiceImpl { String unionId = resultJson.getString("unionid"); return unionId; } + } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index ba1474d..62d9dee 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -52,6 +52,8 @@ wechat: getComponentAccessTokenUrl: https://api.weixin.qq.com/cgi-bin/component/api_component_token getAccessTokenUrl: https://api.weixin.qq.com/sns/oauth2/component/access_token?appid= getUnionIdUrl: https://api.weixin.qq.com/sns/userinfo?access_token= + getWxUserInfoUrl: https://api.weixin.qq.com/cgi-bin/user/info?access_token= + bsd: tokenkey: BOSIDENG