From 54d23cdd109a411b52c3b33fa5d18b267d9c1f2d Mon Sep 17 00:00:00 2001 From: ck <851316342@qq.com> Date: Tue, 11 Aug 2020 20:06:44 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E4=B8=8D=E9=80=9A=E8=BF=87unionId=EF=BC=8C?= =?UTF-8?q?=E9=80=9A=E8=BF=87openId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bsd/say/controller/WechatController.java | 29 +----------- .../service/impl/AwardListServiceImpl.java | 2 +- .../bsd/say/service/impl/WeixinService.java | 44 +++++++++++++++++++ 3 files changed, 46 insertions(+), 29 deletions(-) diff --git a/src/main/java/com/bsd/say/controller/WechatController.java b/src/main/java/com/bsd/say/controller/WechatController.java index a3a93e2..d750422 100644 --- a/src/main/java/com/bsd/say/controller/WechatController.java +++ b/src/main/java/com/bsd/say/controller/WechatController.java @@ -151,34 +151,7 @@ public class WechatController { String resutl = HttpRequestUtils.sendGet("https://api.weixin.qq.com/cgi-bin/user/info?access_token=" + decode + "&openid=" + openId + "&lang=zh_CN"); JSONObject jsonObject = JSONObject.parseObject(resutl); Integer subscribe = jsonObject.getInteger("subscribe"); - logger.info("subscribe:"+ subscribe); - Record recordByOpenId = recordMapper.selectOne(Wrappers.lambdaQuery().eq(Record::getOpenId,openId) - .and(queryWrapper1 -> queryWrapper1.eq(Record::getState,1))); - if (subscribe == 0){ - //未关注公众号 - if (recordByOpenId == null){ - logger.info("新粉丝第一次进入"); - Record record = new Record(); - record.setOpenId(openId); - record.setFan("新粉丝"); - record.setCreateDateTime(new Date()); - recordMapper.insert(record); - }else { - logger.info("游客访问过,但未关注"); - } - }else { - //关注过公众号 - if (recordByOpenId == null){ - logger.info("老粉丝第一次进入"); - Record record = new Record(); - record.setOpenId(openId); - record.setFan("老粉丝"); - record.setCreateDateTime(new Date()); - recordMapper.insert(record); - }else { - logger.info("老粉丝访问过,已关注"); - } - } + weixinService.insertRecord(openId,subscribe); AjaxResult ajaxResult = new AjaxResult(); ajaxResult.setData(jsonObject); return ajaxResult; 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 ce0e3e0..93db591 100644 --- a/src/main/java/com/bsd/say/service/impl/AwardListServiceImpl.java +++ b/src/main/java/com/bsd/say/service/impl/AwardListServiceImpl.java @@ -280,7 +280,7 @@ public class AwardListServiceImpl extends BaseServiceImpllambdaQuery().eq(Users::getUnionId,unionId) + Users users = usersMapper.selectOne(Wrappers.lambdaQuery().eq(Users::getOpenId,openId) .and(queryWrapper1 -> queryWrapper1.eq(Users::getState,1))); if (users == null){ ajaxResult.setRetcode(AjaxResult.SUCCESS); 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 2df6ccf..25db2de 100644 --- a/src/main/java/com/bsd/say/service/impl/WeixinService.java +++ b/src/main/java/com/bsd/say/service/impl/WeixinService.java @@ -2,7 +2,10 @@ package com.bsd.say.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.bsd.say.config.RedisProperies; +import com.bsd.say.entities.Record; +import com.bsd.say.mapper.RecordMapper; import com.bsd.say.service.WxOpenServiceDemo; import com.bsd.say.util.AESWithJCEUtils; import com.bsd.say.util.HttpRequestUtils; @@ -16,10 +19,12 @@ import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import redis.clients.jedis.JedisPool; import javax.annotation.PostConstruct; import javax.annotation.Resource; +import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; @@ -46,6 +51,8 @@ public class WeixinService extends WxOpenServiceImpl { private String getWxUserInfoUrl; @Resource private RedisTemplate redisTemplate; + @Resource + private RecordMapper recordMapper; private WxOpenMessageRouter wxOpenMessageRouter; Logger logger = LogUtils.getBussinessLogger(); @@ -140,4 +147,41 @@ public class WeixinService extends WxOpenServiceImpl { logger.info("userInfo:"+ jsonObject.toString()); return jsonObject; } + + /** + * 插入记录的 + * @param openId + * @param subscribe + */ + @Transactional + public void insertRecord(String openId,Integer subscribe){ + logger.info("subscribe:"+ subscribe); + Record recordByOpenId = recordMapper.selectOne(Wrappers.lambdaQuery().eq(Record::getOpenId,openId) + .and(queryWrapper1 -> queryWrapper1.eq(Record::getState,1))); + if (subscribe == 0){ + //未关注公众号 + if (recordByOpenId == null){ + logger.info("新粉丝第一次进入"); + Record record = new Record(); + record.setOpenId(openId); + record.setFan("新粉丝"); + record.setCreateDateTime(new Date()); + recordMapper.insert(record); + }else { + logger.info("游客访问过,但未关注"); + } + }else { + //关注过公众号 + if (recordByOpenId == null){ + logger.info("老粉丝第一次进入"); + Record record = new Record(); + record.setOpenId(openId); + record.setFan("老粉丝"); + record.setCreateDateTime(new Date()); + recordMapper.insert(record); + }else { + logger.info("老粉丝访问过,已关注"); + } + } + } } From f328029676f7cc426d177e2ff5fde80e261aa17f Mon Sep 17 00:00:00 2001 From: ck <851316342@qq.com> Date: Tue, 11 Aug 2020 20:18:13 +0800 Subject: [PATCH 2/4] up --- .../com/bsd/say/service/impl/AwardListServiceImpl.java | 7 ++++--- .../java/com/bsd/say/service/impl/CouponServiceImpl.java | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) 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 93db591..7c22f93 100644 --- a/src/main/java/com/bsd/say/service/impl/AwardListServiceImpl.java +++ b/src/main/java/com/bsd/say/service/impl/AwardListServiceImpl.java @@ -79,7 +79,7 @@ public class AwardListServiceImpl extends BaseServiceImpllambdaQuery().eq(Users::getUnionId,unionId) + Users users = usersMapper.selectOne(Wrappers.lambdaQuery().eq(Users::getOpenId,openId) .and(queryWrapper1 -> queryWrapper1.eq(Users::getState,1))); AwardList maxIdAward = awardListMapper.selectByMaxId(); Integer newAwardNumner = maxIdAward.getAwardNumber()+ 1; @@ -138,11 +138,12 @@ public class AwardListServiceImpl extends BaseServiceImpllambdaQuery().eq(Users::getUnionId,unionId) + Users users = usersMapper.selectOne(Wrappers.lambdaQuery().eq(Users::getOpenId,openId) .and(queryWrapper1 -> queryWrapper1.eq(Users::getState,1))); if (users == null){ //新会员直接创,肯定没抽过奖 Users newUsers = new Users(); + newUsers.setOpenId(openId); newUsers.setUnionId(unionId); newUsers.setUserType(2); newUsers.setCreateDateTime(new Date()); @@ -210,7 +211,7 @@ public class AwardListServiceImpl extends BaseServiceImpllambdaQuery().eq(Users::getUnionId,unionId) + Users users = usersMapper.selectOne(Wrappers.lambdaQuery().eq(Users::getOpenId,openId) .and(queryWrapper1 -> queryWrapper1.eq(Users::getState,1))); if (users == null){ ajaxResult.setRetcode(AjaxResult.FAILED); 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 515d4cb..39c7488 100644 --- a/src/main/java/com/bsd/say/service/impl/CouponServiceImpl.java +++ b/src/main/java/com/bsd/say/service/impl/CouponServiceImpl.java @@ -206,7 +206,7 @@ public class CouponServiceImpl extends BaseServiceImpl imp if (isAward){ String unionId = userInfo.getString("unionid"); logger.info("union_id:"+unionId); - users = usersMapper.selectOne(Wrappers.lambdaQuery().eq(Users::getUnionId,unionId) + users = usersMapper.selectOne(Wrappers.lambdaQuery().eq(Users::getOpenId,openId) .and(queryWrapper1 -> queryWrapper1.eq(Users::getState,1))); users.setPhone(phone); users.setUpdateDateTime(new Date()); @@ -331,7 +331,7 @@ public class CouponServiceImpl extends BaseServiceImpl imp JSONObject userInfo = weixinService.getUserInfoByOpenId(openId); String unionId = userInfo.getString("unionid"); logger.info("union_id:"+unionId); - Users users= usersMapper.selectOne(Wrappers.lambdaQuery().eq(Users::getUnionId,unionId) + Users users= usersMapper.selectOne(Wrappers.lambdaQuery().eq(Users::getOpenId,openId) .and(queryWrapper1 -> queryWrapper1.eq(Users::getState,1))); if (users == null){ ajaxResult.setRetmsg("可以领取优惠券"); From d4b1ffbf7604ed126ccfdd8504806f7deb2a915d Mon Sep 17 00:00:00 2001 From: ck <851316342@qq.com> Date: Tue, 11 Aug 2020 22:45:26 +0800 Subject: [PATCH 3/4] up --- .../bsd/say/controller/UsersController.java | 15 +++++++ .../com/bsd/say/service/UsersService.java | 1 + .../say/service/impl/UsersServiceImpl.java | 40 +++++++++++++++++++ src/main/resources/application.yml | 2 +- 4 files changed, 57 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/bsd/say/controller/UsersController.java b/src/main/java/com/bsd/say/controller/UsersController.java index ac13b22..94b5c61 100644 --- a/src/main/java/com/bsd/say/controller/UsersController.java +++ b/src/main/java/com/bsd/say/controller/UsersController.java @@ -76,4 +76,19 @@ public class UsersController extends BaseController{ return ajaxResult; } + @RequestMapping(value = "/get-info") + @ResponseBody + public AjaxResult getUserInfoByOpenId(@RequestBody AjaxRequest ajaxRequest){ + AjaxResult ajaxResult = new AjaxResult(); + try { + ajaxResult = usersService.getUserInfoByOpenId(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 ad1d257..63b25b8 100644 --- a/src/main/java/com/bsd/say/service/UsersService.java +++ b/src/main/java/com/bsd/say/service/UsersService.java @@ -7,4 +7,5 @@ import com.bsd.say.entities.Users; public interface UsersService extends BaseService{ AjaxResult sendNote(AjaxRequest ajaxRequest); AjaxResult isSubscribe(AjaxRequest ajaxRequest); + AjaxResult getUserInfoByOpenId(AjaxRequest ajaxRequest); } 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 3d4a13e..ee86eee 100644 --- a/src/main/java/com/bsd/say/service/impl/UsersServiceImpl.java +++ b/src/main/java/com/bsd/say/service/impl/UsersServiceImpl.java @@ -1,13 +1,17 @@ package com.bsd.say.service.impl; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.bsd.say.beans.AjaxRequest; import com.bsd.say.beans.AjaxResult; +import com.bsd.say.entities.Record; import com.bsd.say.entities.Users; +import com.bsd.say.mapper.RecordMapper; import com.bsd.say.mapper.UsersMapper; import com.bsd.say.service.UsersService; import com.bsd.say.util.HttpRequestUtils; import com.bsd.say.util.MD5Utils; +import com.sun.org.apache.bcel.internal.generic.NEW; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -38,6 +42,8 @@ public class UsersServiceImpl extends BaseServiceImpl impleme protected UsersMapper usersMapper; @Autowired private WeixinService weixinService; + @Resource + private RecordMapper recordMapper; @Override public UsersMapper getBaseMapper() { @@ -119,4 +125,38 @@ public class UsersServiceImpl extends BaseServiceImpl impleme } } + /** + * 通过openId获取record中的name 和 phone + * @param ajaxRequest + * @return + */ + @Override + public AjaxResult getUserInfoByOpenId(AjaxRequest ajaxRequest) { + AjaxResult ajaxResult = new AjaxResult(); + JSONObject data = ajaxRequest.getData(); + if (data == null){ + ajaxResult.setRetcode(AjaxResult.FAILED); + ajaxResult.setRetmsg("data missing"); + return ajaxResult; + }else { + String openId = data.getString("openId"); + if (StringUtils.isBlank(openId)){ + ajaxResult.setRetcode(AjaxResult.FAILED); + ajaxResult.setRetmsg("openId missing"); + return ajaxResult; + }else { + JSONObject userInfo = new JSONObject(); + Record record = recordMapper.selectOne(Wrappers.lambdaQuery().eq(Record::getOpenId,openId) + .and(queryWrapper1 -> queryWrapper1.eq(Record::getState,1))); + if (record != null){ + userInfo.put("name",record.getName()); + userInfo.put("phone",record.getPhone()); + } + ajaxResult.setData(userInfo); + ajaxResult.setRetcode(AjaxResult.SUCCESS); + } + } + return ajaxResult; + } + } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 0181ea2..c43dbfd 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -42,7 +42,7 @@ server: award: rule: 5 - amount: 2 + amount: 10 wechat: aesKey: r4cbRuIfbbnTIgJoQE33vJACJuoioZ5pRAhumITsP8O From 104ffb70011794737a68e01dd9004a7639f880ff Mon Sep 17 00:00:00 2001 From: ck <851316342@qq.com> Date: Tue, 11 Aug 2020 23:08:52 +0800 Subject: [PATCH 4/4] up --- .../say/service/impl/CouponServiceImpl.java | 45 ++++++++++++------- 1 file changed, 28 insertions(+), 17 deletions(-) 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 a63294a..68e78d4 100644 --- a/src/main/java/com/bsd/say/service/impl/CouponServiceImpl.java +++ b/src/main/java/com/bsd/say/service/impl/CouponServiceImpl.java @@ -162,23 +162,34 @@ public class CouponServiceImpl extends BaseServiceImpl imp Users usersByPhone = usersMapper.selectOne(Wrappers.lambdaQuery().eq(Users::getPhone, phone) .and(queryWrapper1 -> queryWrapper1.eq(Users::getState, 1))); //防止先第三方领券,再微信端领券 - if (usersByPhone == null) { - Users users1 = new Users(); - users1.setPhone(phone); - users1.setUnionId(unionId); - users1.setOpenId(openId); - users1.setUserType(1); - users1.setCreateDateTime(new Date()); - users1.setUpdateDateTime(new Date()); - usersMapper.insert(users1); - coupons = couponMapper.selectList(Wrappers.lambdaQuery().eq(Coupon::getUserId, users1.getId()) - .and(queryWrapper1 -> queryWrapper1.eq(Coupon::getState, 1))); - } else { - usersByPhone.setUnionId(unionId); - usersByPhone.setOpenId(openId); - usersByPhone.setUpdateDateTime(new Date()); - usersMapper.updateById(usersByPhone); - coupons = couponMapper.selectList(Wrappers.lambdaQuery().eq(Coupon::getUserId, usersByPhone.getId()) + Users usersByOpenId = usersMapper.selectOne(Wrappers.lambdaQuery().eq(Users::getPhone, openId) + .and(queryWrapper1 -> queryWrapper1.eq(Users::getState, 1))); + if (usersByOpenId == null){ + if (usersByPhone == null) { + Users users1 = new Users(); + users1.setPhone(phone); + users1.setUnionId(unionId); + users1.setOpenId(openId); + users1.setUserType(1); + users1.setCreateDateTime(new Date()); + users1.setUpdateDateTime(new Date()); + usersMapper.insert(users1); + coupons = couponMapper.selectList(Wrappers.lambdaQuery().eq(Coupon::getUserId, users1.getId()) + .and(queryWrapper1 -> queryWrapper1.eq(Coupon::getState, 1))); + } else { + usersByPhone.setUnionId(unionId); + usersByPhone.setOpenId(openId); + usersByPhone.setUpdateDateTime(new Date()); + usersMapper.updateById(usersByPhone); + coupons = couponMapper.selectList(Wrappers.lambdaQuery().eq(Coupon::getUserId, usersByPhone.getId()) + .and(queryWrapper1 -> queryWrapper1.eq(Coupon::getState, 1))); + } + }else { + usersByOpenId.setPhone(phone); + usersByOpenId.setUnionId(unionId); + usersByOpenId.setUpdateDateTime(new Date()); + usersMapper.updateById(usersByOpenId); + coupons = couponMapper.selectList(Wrappers.lambdaQuery().eq(Coupon::getUserId, usersByOpenId.getId()) .and(queryWrapper1 -> queryWrapper1.eq(Coupon::getState, 1))); } //防非法请求,再校验一遍