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/AwardListServiceImpl.java b/src/main/java/com/bsd/say/service/impl/AwardListServiceImpl.java index 303a23d..af59a53 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); @@ -279,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/CouponServiceImpl.java b/src/main/java/com/bsd/say/service/impl/CouponServiceImpl.java index b9f0d21..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))); } //防非法请求,再校验一遍 @@ -206,7 +217,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 +342,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("可以领取优惠券"); 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/java/com/bsd/say/service/impl/WeixinService.java b/src/main/java/com/bsd/say/service/impl/WeixinService.java index 70b3542..3cf318e 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; @@ -17,10 +20,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; @@ -49,6 +54,8 @@ public class WeixinService extends WxOpenServiceImpl { private String getTicketUrl; @Resource private RedisTemplate redisTemplate; + @Resource + private RecordMapper recordMapper; private WxOpenMessageRouter wxOpenMessageRouter; Logger logger = LogUtils.getBussinessLogger(); @@ -167,4 +174,41 @@ public class WeixinService extends WxOpenServiceImpl { logger.info("sign:" + sign); return sign; } + + /** + * 插入记录的 + * @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("老粉丝访问过,已关注"); + } + } + } } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index d7b89eb..c8aa494 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