Commit 89f3a982 by 杨涛

fix 抽奖信息混乱

parent 5f46c58d
...@@ -211,4 +211,14 @@ public class BookApplication { ...@@ -211,4 +211,14 @@ public class BookApplication {
public Binding wxGroupAgreeAddUserBind() { public Binding wxGroupAgreeAddUserBind() {
return RabbitMQFactory.bindingExchange(wxGroupAgreeAddUserQueue(), MQTopicProducer.WX_AGREE_ADD_USER); return RabbitMQFactory.bindingExchange(wxGroupAgreeAddUserQueue(), MQTopicProducer.WX_AGREE_ADD_USER);
} }
@Bean
public Queue wxGroupUserBindQueue(){
return RabbitMQFactory.queueBuilder(MQTopicConumer.CONSUMER_WXGROUP_USER_BIND);
}
@Bean
public Binding wxGroupUserBindBind(){
return RabbitMQFactory.bindingExchange(wxGroupUserBindQueue(), MQTopicProducer.WXGROUP_USER_BIND);
}
} }
...@@ -75,4 +75,9 @@ public class MQTopicConumer { ...@@ -75,4 +75,9 @@ public class MQTopicConumer {
*/ */
public static final String WX_AGREE_ADD_USER = PREFIX + MQTopicProducer.WX_AGREE_ADD_USER; public static final String WX_AGREE_ADD_USER = PREFIX + MQTopicProducer.WX_AGREE_ADD_USER;
/**
* 微信群微信ID和微信用户ID绑定
*/
public static final String CONSUMER_WXGROUP_USER_BIND = PREFIX + MQTopicProducer.WXGROUP_USER_BIND;
} }
package com.pcloud.book.mq.topic;
/**
* @author 杨涛
* @description 绑定
* @date 2019/8/23 18:48
*/
import com.pcloud.book.mq.config.MQTopicConumer;
import com.pcloud.book.weixinclock.biz.WeixinClockBiz;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.readercenter.wechat.entity.WechatGroupUser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
@RabbitListener(queues = MQTopicConumer.CONSUMER_WXGROUP_USER_BIND)
public class ReaderCenterBindInfoListener {
private static final Logger LOGGER = LoggerFactory.getLogger(ReaderCenterBindInfoListener.class);
@Autowired
private WeixinClockBiz weixinClockBiz;
@RabbitHandler
@ParamLog("接收到微信用户绑定TOPIC")
public void process(WechatGroupUser wechatGroupUser) {
try {
if (null != wechatGroupUser && null != wechatGroupUser.getWechatUserId() && !StringUtil.isEmpty(wechatGroupUser.getWxUserId())) {
weixinClockBiz.receiveWxGroupUserBindTopic(wechatGroupUser);
}
} catch (Exception e) {
LOGGER.error("接收到微信用户绑定TOPIC,JMS异常+++++" + e.getMessage(), e);
}
}
}
...@@ -7,6 +7,7 @@ import com.pcloud.book.weixinclock.dto.WeixinClockDto; ...@@ -7,6 +7,7 @@ import com.pcloud.book.weixinclock.dto.WeixinClockDto;
import com.pcloud.common.exceptions.BizException; import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBeanNew; import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam; import com.pcloud.common.page.PageParam;
import com.pcloud.readercenter.wechat.entity.WechatGroupUser;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -86,5 +87,11 @@ public interface WeixinClockBiz { ...@@ -86,5 +87,11 @@ public interface WeixinClockBiz {
* @param wxGroupId * @param wxGroupId
* @return * @return
*/ */
RankDto getClockWechatUserRank(String wxGroupId, String wxUserId); RankDto getClockWechatUserRank(Long wechatUserId, String wxGroupId, String wxUserId);
/**
* 接收到微信用户绑定TOPIC
* @param wechatGroupUser
*/
void receiveWxGroupUserBindTopic(WechatGroupUser wechatGroupUser);
} }
...@@ -20,6 +20,7 @@ import com.pcloud.book.weixinclock.check.WeixinClockCheck; ...@@ -20,6 +20,7 @@ import com.pcloud.book.weixinclock.check.WeixinClockCheck;
import com.pcloud.book.weixinclock.dao.WeixinClockDao; import com.pcloud.book.weixinclock.dao.WeixinClockDao;
import com.pcloud.book.weixinclock.dao.WeixinClockGroupClassifyDao; import com.pcloud.book.weixinclock.dao.WeixinClockGroupClassifyDao;
import com.pcloud.book.weixinclock.dao.WeixinClockMemberDao; import com.pcloud.book.weixinclock.dao.WeixinClockMemberDao;
import com.pcloud.book.weixinclock.dao.WeixinClockPrizeRecordDao;
import com.pcloud.book.weixinclock.dao.WeixinClockRewardDao; import com.pcloud.book.weixinclock.dao.WeixinClockRewardDao;
import com.pcloud.book.weixinclock.dao.WeixinClockTopicDao; import com.pcloud.book.weixinclock.dao.WeixinClockTopicDao;
import com.pcloud.book.weixinclock.dto.DrawRewardDto; import com.pcloud.book.weixinclock.dto.DrawRewardDto;
...@@ -28,6 +29,7 @@ import com.pcloud.book.weixinclock.dto.WeixinClockDto; ...@@ -28,6 +29,7 @@ import com.pcloud.book.weixinclock.dto.WeixinClockDto;
import com.pcloud.book.weixinclock.entity.WeixinClock; import com.pcloud.book.weixinclock.entity.WeixinClock;
import com.pcloud.book.weixinclock.entity.WeixinClockGroupClassify; import com.pcloud.book.weixinclock.entity.WeixinClockGroupClassify;
import com.pcloud.book.weixinclock.entity.WeixinClockMember; import com.pcloud.book.weixinclock.entity.WeixinClockMember;
import com.pcloud.book.weixinclock.entity.WeixinClockPrizeRecord;
import com.pcloud.book.weixinclock.entity.WeixinClockTopic; import com.pcloud.book.weixinclock.entity.WeixinClockTopic;
import com.pcloud.channelcenter.base.constants.ChannelConstants; import com.pcloud.channelcenter.base.constants.ChannelConstants;
import com.pcloud.channelcenter.wechat.dto.AccountSettingDto; import com.pcloud.channelcenter.wechat.dto.AccountSettingDto;
...@@ -49,6 +51,7 @@ import com.pcloud.common.utils.cache.redis.JedisClusterUtils; ...@@ -49,6 +51,7 @@ import com.pcloud.common.utils.cache.redis.JedisClusterUtils;
import com.pcloud.common.utils.httpclient.UrlUtils; import com.pcloud.common.utils.httpclient.UrlUtils;
import com.pcloud.common.utils.string.StringUtil; import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.labelcenter.label.service.LabelService; import com.pcloud.labelcenter.label.service.LabelService;
import com.pcloud.readercenter.wechat.entity.WechatGroupUser;
import com.pcloud.wechatgroup.group.dto.GroupUserDTO; import com.pcloud.wechatgroup.group.dto.GroupUserDTO;
import com.sdk.wxgroup.SendTextMessageVO; import com.sdk.wxgroup.SendTextMessageVO;
import com.sdk.wxgroup.WxGroupSDK; import com.sdk.wxgroup.WxGroupSDK;
...@@ -117,6 +120,8 @@ public class WeixinClockBizImpl implements WeixinClockBiz { ...@@ -117,6 +120,8 @@ public class WeixinClockBizImpl implements WeixinClockBiz {
private ReaderConsr readerConsr; private ReaderConsr readerConsr;
@Autowired @Autowired
private WeixinClockCheck weixinClockCheck; private WeixinClockCheck weixinClockCheck;
@Autowired
private WeixinClockPrizeRecordDao weixinClockPrizeRecordDao;
private static final ThreadFactory NAMED_THREAD_FACTORY = new ThreadFactoryBuilder() private static final ThreadFactory NAMED_THREAD_FACTORY = new ThreadFactoryBuilder()
.setNameFormat("weixinclock-pool-%d").build(); .setNameFormat("weixinclock-pool-%d").build();
...@@ -408,7 +413,8 @@ public class WeixinClockBizImpl implements WeixinClockBiz { ...@@ -408,7 +413,8 @@ public class WeixinClockBizImpl implements WeixinClockBiz {
sbu.append(protocol).append("app.").append(accountSettingDto.getFirstDomain()) sbu.append(protocol).append("app.").append(accountSettingDto.getFirstDomain())
.append("/luck").append("/W").append(accountSettingDto.getAccountSettingId()).append("/C").append(appDto.getChannelId()) .append("/luck").append("/W").append(accountSettingDto.getAccountSettingId()).append("/C").append(appDto.getChannelId())
.append("/A").append(appDto.getAppId()) .append("/A").append(appDto.getAppId())
.append("/luckPage?isPreview=1&adviserId=").append(appDto.getCreatedUser()).append("&appType==").append(appDto.getTypeCode()); .append("/luckPage?isPreview=1&adviserId=").append(appDto.getCreatedUser()).append("&appType==").append(appDto.getTypeCode())
.append("&origin=wxGroup");
} }
LOGGER.info("抽奖的跳转链接=====" + sbu.toString() + "================s"); LOGGER.info("抽奖的跳转链接=====" + sbu.toString() + "================s");
return UrlUtils.getShortUrl4Own(sbu.toString()); return UrlUtils.getShortUrl4Own(sbu.toString());
...@@ -429,10 +435,12 @@ public class WeixinClockBizImpl implements WeixinClockBiz { ...@@ -429,10 +435,12 @@ public class WeixinClockBizImpl implements WeixinClockBiz {
LOGGER.info("接受到的关键词信息" + content); LOGGER.info("接受到的关键词信息" + content);
GroupClassifyQrcodeDTO classifyQrcodeInfo = bookGroupClassifyBiz.getClassifyQrcodeInfo(wechatGroupId); GroupClassifyQrcodeDTO classifyQrcodeInfo = bookGroupClassifyBiz.getClassifyQrcodeInfo(wechatGroupId);
if(null == classifyQrcodeInfo){ if(null == classifyQrcodeInfo){
return null; return false;
} }
WeixinClockDto weixinClockDto = weixinClockGroupClassifyDao.getClockBaseInfoByClassify(classifyQrcodeInfo.getClassifyId()); WeixinClockDto weixinClockDto = weixinClockGroupClassifyDao.getClockBaseInfoByClassify(classifyQrcodeInfo.getClassifyId());
WeixinClockMember clockMember = weixinClockMemberDao.getByWxUserId(wechatGroupId, userWxId); WeixinClockMember clockMember = weixinClockMemberDao.getByWxUserId(wechatGroupId, userWxId);
AppDto appDto = appConsr.getBaseById(weixinClockDto.getClockPrizeId());
Long wechatUserId = readerConsr.getWechatUserId(userWxId, appDto.getChannelId());
GroupUserDTO groupUserDTO = wechatGroupConsr.getWxUserInfoByWxUserId(userWxId); GroupUserDTO groupUserDTO = wechatGroupConsr.getWxUserInfoByWxUserId(userWxId);
Long weixinClockMemberId = clockMember == null ? null : clockMember.getWeixinClockMemberId(); Long weixinClockMemberId = clockMember == null ? null : clockMember.getWeixinClockMemberId();
if(null == clockMember) { if(null == clockMember) {
...@@ -444,6 +452,7 @@ public class WeixinClockBizImpl implements WeixinClockBiz { ...@@ -444,6 +452,7 @@ public class WeixinClockBizImpl implements WeixinClockBiz {
weixinClockMember.setNickname(groupUserDTO.getNickName()); weixinClockMember.setNickname(groupUserDTO.getNickName());
weixinClockMember.setWxGroupId(wechatGroupId); weixinClockMember.setWxGroupId(wechatGroupId);
weixinClockMember.setWxUserId(userWxId); weixinClockMember.setWxUserId(userWxId);
weixinClockMember.setWechatUserId(wechatUserId);
weixinClockMemberDao.insert(weixinClockMember); weixinClockMemberDao.insert(weixinClockMember);
weixinClockMemberId = weixinClockMember.getWeixinClockMemberId(); weixinClockMemberId = weixinClockMember.getWeixinClockMemberId();
} }
...@@ -465,11 +474,12 @@ public class WeixinClockBizImpl implements WeixinClockBiz { ...@@ -465,11 +474,12 @@ public class WeixinClockBizImpl implements WeixinClockBiz {
weixinClockTopic.setWxGroupId(wechatGroupId); weixinClockTopic.setWxGroupId(wechatGroupId);
weixinClockTopic.setWxUserId(userWxId); weixinClockTopic.setWxUserId(userWxId);
weixinClockTopic.setWeixinClockMemberId(weixinClockMemberId); weixinClockTopic.setWeixinClockMemberId(weixinClockMemberId);
weixinClockMemberDao.updateClockDays(wechatGroupId, userWxId); weixinClockMemberDao.updateClockDays(wechatGroupId, userWxId, wechatUserId);
weixinClockTopicDao.insert(weixinClockTopic); weixinClockTopicDao.insert(weixinClockTopic);
//发topic,增加抽奖次数 //发topic,增加抽奖次数
//发送抽奖的TOPIC //发送抽奖的TOPIC
Long clockDays = weixinClockTopicDao.getClockCountByUser(wechatGroupId, userWxId); Long clockDays = weixinClockTopicDao.getClockCountByUser(wechatGroupId, userWxId);
if(null != wechatUserId && !wechatUserId.equals(0L)) {
EXECUTOR_SERVICE.execute(() -> { EXECUTOR_SERVICE.execute(() -> {
LOGGER.info("异步校验是否满足抽奖要求,clockDays=" + clockDays); LOGGER.info("异步校验是否满足抽奖要求,clockDays=" + clockDays);
PromotionOrderDto promotionOrderDto = new PromotionOrderDto(); PromotionOrderDto promotionOrderDto = new PromotionOrderDto();
...@@ -482,11 +492,25 @@ public class WeixinClockBizImpl implements WeixinClockBiz { ...@@ -482,11 +492,25 @@ public class WeixinClockBizImpl implements WeixinClockBiz {
promotionGiftDto.setGrantNum(grantNum == null ? "0" : grantNum.toString()); promotionGiftDto.setGrantNum(grantNum == null ? "0" : grantNum.toString());
promotionGiftDtoList.add(promotionGiftDto); promotionGiftDtoList.add(promotionGiftDto);
promotionOrderDto.setGifts(promotionGiftDtoList); promotionOrderDto.setGifts(promotionGiftDtoList);
AppDto appDto = appConsr.getBaseById(weixinClockDto.getClockPrizeId()); promotionOrderDto.setUserId(wechatUserId);
promotionOrderDto.setUserId(readerConsr.getWechatUserId(userWxId, appDto.getChannelId()));
LOGGER.info("发送抽奖规则,参数:promotionOrderDto=" + promotionOrderDto); LOGGER.info("发送抽奖规则,参数:promotionOrderDto=" + promotionOrderDto);
amqpTemplate.convertAndSend(MQTopicProducer.EXCHAGE, MQTopicProducer.GIVE_GIFT, promotionOrderDto); amqpTemplate.convertAndSend(MQTopicProducer.EXCHAGE, MQTopicProducer.GIVE_GIFT, promotionOrderDto);
}); });
} else {
WeixinClockPrizeRecord weixinClockPrizeRecord1 = weixinClockPrizeRecordDao.selectByWxUserIdAndAppId(userWxId, weixinClockDto.getClockPrizeId());
if (null == weixinClockPrizeRecord1) {
WeixinClockPrizeRecord weixinClockPrizeRecord2 = new WeixinClockPrizeRecord();
weixinClockPrizeRecord2.setClockPrizeId(weixinClockDto.getClockPrizeId());
weixinClockPrizeRecord2.setWxUserId(userWxId);
Integer grantNum = weixinClockRewardDao.getGrantNumFromReward(weixinClockDto.getWeixinClockId(), clockDays);
weixinClockPrizeRecord2.setPrizeTime(grantNum == null ? 0 : grantNum);
weixinClockPrizeRecordDao.insert(weixinClockPrizeRecord2);
} else {
Integer grantNum = weixinClockRewardDao.getGrantNumFromReward(weixinClockDto.getWeixinClockId(), clockDays);
grantNum = grantNum == null ? 0 : grantNum;
weixinClockPrizeRecordDao.updatePrizeTime(userWxId, weixinClockDto.getClockPrizeId(), grantNum);
}
}
//获取我的新排名 //获取我的新排名
Integer newOrder = weixinClockMemberDao.getMyNewOrder(wechatGroupId, userWxId); Integer newOrder = weixinClockMemberDao.getMyNewOrder(wechatGroupId, userWxId);
String clockRewardUrl = getClockRewardUrl(weixinClockDto.getClockPrizeId()); String clockRewardUrl = getClockRewardUrl(weixinClockDto.getClockPrizeId());
...@@ -534,9 +558,36 @@ public class WeixinClockBizImpl implements WeixinClockBiz { ...@@ -534,9 +558,36 @@ public class WeixinClockBizImpl implements WeixinClockBiz {
*/ */
@Override @Override
@ParamLog("获取某个群内某个用户的信息") @ParamLog("获取某个群内某个用户的信息")
public RankDto getClockWechatUserRank(String wxGroupId, String wxUserId) { public RankDto getClockWechatUserRank(Long wechatUserId, String wxGroupId, String wxUserId) {
RankDto rankDto = weixinClockMemberDao.getClockWechatUserRank(wxGroupId, wxUserId); RankDto rankDto = weixinClockMemberDao.getClockWechatUserRank(wechatUserId, wxGroupId);
return null == rankDto ? new RankDto() : rankDto; return null == rankDto ? new RankDto() : rankDto;
} }
/**
* 接收到微信用户绑定TOPIC
* @param wechatGroupUser
*/
@Override
@ParamLog("微信用户绑定")
public void receiveWxGroupUserBindTopic(WechatGroupUser wechatGroupUser) {
List<WeixinClockPrizeRecord> weixinClockPrizeRecords = weixinClockPrizeRecordDao.getAllPrizeList(wechatGroupUser.getWxUserId());
PromotionOrderDto promotionOrderDto = new PromotionOrderDto();
List<PromotionGiftDto> promotionGiftDtoList = new ArrayList<>();
for(WeixinClockPrizeRecord weixinClockPrizeRecord : weixinClockPrizeRecords){
PromotionGiftDto promotionGiftDto = new PromotionGiftDto();
promotionGiftDto.setTargetClass(PromotionOrderEnum.TARGET_CLASS_APP.getCode());
promotionGiftDto.setTargetType(AppTypeEnum.DRAW.value);
promotionGiftDto.setTargetId(weixinClockPrizeRecord.getClockPrizeId());
Integer grantNum = weixinClockPrizeRecord.getPrizeTime();
promotionGiftDto.setGrantNum(grantNum == null ? "0" : grantNum.toString());
promotionGiftDtoList.add(promotionGiftDto);
}
promotionOrderDto.setGifts(promotionGiftDtoList);
promotionOrderDto.setUserId(wechatGroupUser.getWechatUserId());
LOGGER.info("发送抽奖规则,参数:promotionOrderDto=" + promotionOrderDto);
amqpTemplate.convertAndSend(MQTopicProducer.EXCHAGE, MQTopicProducer.GIVE_GIFT, promotionOrderDto);
weixinClockPrizeRecordDao.deleteByWxUserId(wechatGroupUser.getWxUserId());
weixinClockMemberDao.updatMemberWechatUserId(wechatGroupUser.getWxUserId(), wechatGroupUser.getWechatUserId());
}
} }
...@@ -32,7 +32,7 @@ public interface WeixinClockMemberDao extends BaseDao<WeixinClockMember> { ...@@ -32,7 +32,7 @@ public interface WeixinClockMemberDao extends BaseDao<WeixinClockMember> {
* @param userWxId * @param userWxId
* @return * @return
*/ */
void updateClockDays(String wechatGroupId, String userWxId); void updateClockDays(String wechatGroupId, String userWxId, Long wchatUserId);
/** /**
* 获取的打卡排名(微信群) * 获取的打卡排名(微信群)
...@@ -45,8 +45,16 @@ public interface WeixinClockMemberDao extends BaseDao<WeixinClockMember> { ...@@ -45,8 +45,16 @@ public interface WeixinClockMemberDao extends BaseDao<WeixinClockMember> {
/** /**
* 获取某个群内某个用户的信息 * 获取某个群内某个用户的信息
* @param wxGroupId * @param wxGroupId
* @param wechatUserId
* @return
*/
RankDto getClockWechatUserRank(Long wechatUserId, String wxGroupId);
/**
* 同步wechatuserId
* @param wxUserId * @param wxUserId
* @param wechatUserId
* @return * @return
*/ */
RankDto getClockWechatUserRank(String wxGroupId, String wxUserId); void updatMemberWechatUserId(String wxUserId, Long wechatUserId);
} }
package com.pcloud.book.weixinclock.dao;
import com.pcloud.book.weixinclock.entity.WeixinClockPrizeRecord;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
public interface WeixinClockPrizeRecordDao extends BaseDao<WeixinClockPrizeRecord> {
int deleteByWxUserId(String wxUserId);
WeixinClockPrizeRecord selectByWxUserIdAndAppId(String wxUserId, Long appId);
void updatePrizeTime(String wxUserId, Long clockPrizeId, Integer grantNum);
List<WeixinClockPrizeRecord> getAllPrizeList(String wxUserId);
}
\ No newline at end of file
...@@ -51,10 +51,11 @@ public class WeixinClockMemberDaoImpl extends BaseDaoImpl<WeixinClockMember> imp ...@@ -51,10 +51,11 @@ public class WeixinClockMemberDaoImpl extends BaseDaoImpl<WeixinClockMember> imp
* @return * @return
*/ */
@Override @Override
public void updateClockDays(String wechatGroupId, String userWxId) { public void updateClockDays(String wechatGroupId, String userWxId, Long wchatUserId) {
Map<String,Object> paramMap = new HashMap<>(); Map<String,Object> paramMap = new HashMap<>();
paramMap.put("wechatGroupId",wechatGroupId); paramMap.put("wechatGroupId",wechatGroupId);
paramMap.put("userWxId",userWxId); paramMap.put("userWxId",userWxId);
paramMap.put("wchatUserId",wchatUserId);
super.getSqlSession().update(this.getStatement("updateClockDays"), paramMap); super.getSqlSession().update(this.getStatement("updateClockDays"), paramMap);
} }
...@@ -77,10 +78,18 @@ public class WeixinClockMemberDaoImpl extends BaseDaoImpl<WeixinClockMember> imp ...@@ -77,10 +78,18 @@ public class WeixinClockMemberDaoImpl extends BaseDaoImpl<WeixinClockMember> imp
* @return * @return
*/ */
@Override @Override
public RankDto getClockWechatUserRank(String wxGroupId, String wxUserId) { public RankDto getClockWechatUserRank(Long wechatUserId, String wxGroupId) {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("wechatUserId", wechatUserId);
map.put("wechatGroupId", wxGroupId); map.put("wechatGroupId", wxGroupId);
map.put("userWxId", wxUserId);
return super.getSqlSession().selectOne(getStatement("getClockWechatUserRank"), map); return super.getSqlSession().selectOne(getStatement("getClockWechatUserRank"), map);
} }
@Override
public void updatMemberWechatUserId(String wxUserId, Long wechatUserId) {
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("wxUserId",wxUserId);
paramMap.put("wechatUserId",wechatUserId);
super.sqlSessionTemplate.update(getStatement("updatMemberWechatUserId"),paramMap);
}
} }
package com.pcloud.book.weixinclock.dao.impl;
import com.pcloud.book.weixinclock.dao.WeixinClockPrizeRecordDao;
import com.pcloud.book.weixinclock.entity.WeixinClockPrizeRecord;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Repository;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author 杨涛
* @description TODO
* @date 2019/8/23 17:32
*/
@Repository("weixinClockPrizeRecordDao")
public class WeixinClockPrizeRecordDaoImpl extends BaseDaoImpl<WeixinClockPrizeRecord> implements WeixinClockPrizeRecordDao {
@Override
public int deleteByWxUserId(String wxUserId) {
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("wxUserId",wxUserId);
return super.sqlSessionTemplate.delete(getStatement("deleteByWxUserId"),paramMap);
}
@Override
public WeixinClockPrizeRecord selectByWxUserIdAndAppId(String wxUserId, Long appId) {
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("wxUserId",wxUserId);
paramMap.put("appId",appId);
return super.sqlSessionTemplate.selectOne(getStatement("selectByWxUserIdAndAppId"),paramMap);
}
@Override
public void updatePrizeTime(String userWxId, Long clockPrizeId, Integer grantNum) {
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("wxUserId",userWxId);
paramMap.put("appId",clockPrizeId);
paramMap.put("grantNum",grantNum);
super.sqlSessionTemplate.update(getStatement("updatePrizeTime"),paramMap);
}
@Override
public List<WeixinClockPrizeRecord> getAllPrizeList(String wxUserId) {
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("wxUserId",wxUserId);
return super.sqlSessionTemplate.selectOne(getStatement("getAllPrizeList"),paramMap);
}
}
...@@ -40,6 +40,9 @@ public class WeixinClockMember extends BaseEntity { ...@@ -40,6 +40,9 @@ public class WeixinClockMember extends BaseEntity {
@ApiModelProperty("打卡天数") @ApiModelProperty("打卡天数")
private Integer allClockDay; private Integer allClockDay;
@ApiModelProperty("微信用户ID")
private Long wechatUserId;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("创建时间") @ApiModelProperty("创建时间")
private Date createTime; private Date createTime;
...@@ -108,6 +111,14 @@ public class WeixinClockMember extends BaseEntity { ...@@ -108,6 +111,14 @@ public class WeixinClockMember extends BaseEntity {
this.allClockDay = allClockDay; this.allClockDay = allClockDay;
} }
public Long getWechatUserId() {
return wechatUserId;
}
public void setWechatUserId(Long wechatUserId) {
this.wechatUserId = wechatUserId;
}
@Override @Override
public Date getCreateTime() { public Date getCreateTime() {
return createTime; return createTime;
...@@ -129,6 +140,7 @@ public class WeixinClockMember extends BaseEntity { ...@@ -129,6 +140,7 @@ public class WeixinClockMember extends BaseEntity {
", nickname='" + nickname + '\'' + ", nickname='" + nickname + '\'' +
", headPic='" + headPic + '\'' + ", headPic='" + headPic + '\'' +
", allClockDay=" + allClockDay + ", allClockDay=" + allClockDay +
", wechatUserId=" + wechatUserId +
", createTime=" + createTime + ", createTime=" + createTime +
'}'; '}';
} }
......
package com.pcloud.book.weixinclock.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.common.entity.BaseEntity;
import java.util.Date;
import io.swagger.annotations.ApiModelProperty;
/**
* @author 杨涛
* @description 奖励记录表
* @date 2019/8/23 17:20
*/
public class WeixinClockPrizeRecord extends BaseEntity {
private static final long serialVersionUID = -8507834064618771705L;
@ApiModelProperty("主键标识")
private Long weixinClockPrizeRecordId;
@ApiModelProperty("微信ID")
private String wxUserId;
@ApiModelProperty("微信用户ID")
private Long wechatUserId;
@ApiModelProperty("奖励appId")
private Long clockPrizeId;
@ApiModelProperty("奖励次数")
private Integer prizeTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("创建时间")
private Date createTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("更新时间")
private Date updateTime;
public Long getWeixinClockPrizeRecordId() {
return weixinClockPrizeRecordId;
}
public void setWeixinClockPrizeRecordId(Long weixinClockPrizeRecordId) {
this.weixinClockPrizeRecordId = weixinClockPrizeRecordId;
}
public String getWxUserId() {
return wxUserId;
}
public void setWxUserId(String wxUserId) {
this.wxUserId = wxUserId;
}
public Long getWechatUserId() {
return wechatUserId;
}
public void setWechatUserId(Long wechatUserId) {
this.wechatUserId = wechatUserId;
}
public Long getClockPrizeId() {
return clockPrizeId;
}
public void setClockPrizeId(Long clockPrizeId) {
this.clockPrizeId = clockPrizeId;
}
public Integer getPrizeTime() {
return prizeTime;
}
public void setPrizeTime(Integer prizeTime) {
this.prizeTime = prizeTime;
}
@Override
public Date getCreateTime() {
return createTime;
}
@Override
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
@Override
public Date getUpdateTime() {
return updateTime;
}
@Override
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
@Override
public String toString() {
return "WeixinClockPrizeRecord{" +
"weixinClockPrizeRecordId=" + weixinClockPrizeRecordId +
", wxUserId='" + wxUserId + '\'' +
", wechatUserId=" + wechatUserId +
", clockPrizeId=" + clockPrizeId +
", prizeTime=" + prizeTime +
", createTime=" + createTime +
", updateTime=" + updateTime +
'}';
}
}
...@@ -200,8 +200,8 @@ public class WeixinClockFacadeImpl implements WeixinClockFacade { ...@@ -200,8 +200,8 @@ public class WeixinClockFacadeImpl implements WeixinClockFacade {
@RequestParam(value = "wxGroupId", required = false) String wxGroupId, @RequestParam(value = "wxGroupId", required = false) String wxGroupId,
@RequestParam(value = "wxUserId", required = false) String wxUserId) @RequestParam(value = "wxUserId", required = false) String wxUserId)
throws BizException, PermissionException { throws BizException, PermissionException {
Cookie.getId(userInfo, Cookie._WECHAT_USER_ID); Long wechatUserId = Cookie.getId(userInfo, Cookie._WECHAT_USER_ID);
return new ResponseDto<>(weixinClockBiz.getClockWechatUserRank(wxGroupId, wxUserId)); return new ResponseDto<>(weixinClockBiz.getClockWechatUserRank(wechatUserId, wxGroupId, wxUserId));
} }
} }
...@@ -22,11 +22,11 @@ ...@@ -22,11 +22,11 @@
<insert id="insert" parameterType="weixinClockMember" useGeneratedKeys="true" keyProperty="weixinClockMemberId" flushCache="true"> <insert id="insert" parameterType="weixinClockMember" useGeneratedKeys="true" keyProperty="weixinClockMemberId" flushCache="true">
INSERT INTO weixin_clock_member ( INSERT INTO weixin_clock_member (
weixin_clock_id, wx_user_id, book_group_classify_id, wx_group_id, nickname, head_pic, all_clock_day, weixin_clock_id, wx_user_id, book_group_classify_id, wx_group_id, nickname, head_pic, all_clock_day,
create_time, update_time create_time, update_time,wechat_user_id
) )
VALUES ( VALUES (
#{weixinClockId, jdbcType=BIGINT}, #{wxUserId, jdbcType=VARCHAR}, #{bookGroupClassifyId, jdbcType=BIGINT}, #{wxGroupId, jdbcType=VARCHAR}, #{weixinClockId, jdbcType=BIGINT}, #{wxUserId, jdbcType=VARCHAR}, #{bookGroupClassifyId, jdbcType=BIGINT}, #{wxGroupId, jdbcType=VARCHAR},
#{nickname, jdbcType=VARCHAR}, #{headPic, jdbcType=VARCHAR}, #{allClockDay, jdbcType=INTEGER}, NOW(), NOW() #{nickname, jdbcType=VARCHAR}, #{headPic, jdbcType=VARCHAR}, #{allClockDay, jdbcType=INTEGER}, NOW(), NOW(),#{wchatUserId, jdbcType=BIGINT}
) )
</insert> </insert>
...@@ -57,6 +57,7 @@ ...@@ -57,6 +57,7 @@
update weixin_clock_member update weixin_clock_member
set set
all_clock_day = all_clock_day + 1, all_clock_day = all_clock_day + 1,
wechat_user_id = #{wchatUserId, jdbcType=BIGINT}
update_time = NOW() update_time = NOW()
where where
wx_user_id = #{userWxId} wx_user_id = #{userWxId}
...@@ -79,11 +80,18 @@ ...@@ -79,11 +80,18 @@
select wx_user_id, (@rowNum:=@rowNum+1) AS rankNum, all_clock_day clockNum, nickname nickname, head_pic headPic from ( select wx_user_id, (@rowNum:=@rowNum+1) AS rankNum, all_clock_day clockNum, nickname nickname, head_pic headPic from (
select wx_user_id, all_clock_day, nickname, head_pic, @rowNum:=0 from weixin_clock_member select wx_user_id, all_clock_day, nickname, head_pic, @rowNum:=0 from weixin_clock_member
where wx_group_id = #{wechatGroupId} where wx_group_id = #{wechatGroupId}
AND (all_clock_day <![CDATA[ >]]> 0 or wx_user_id = #{userWxId, jdbcType=VARCHAR}) AND (all_clock_day <![CDATA[ >]]> 0 or wechat_user_id = #{wechatUserId, jdbcType=VARCHAR})
order by all_clock_day desc, update_time asc order by all_clock_day desc, update_time asc
) a ) a
) cm where cm.wx_user_id = #{userWxId} ) cm where cm.wechat_user_id = #{wechatUserId}
LIMIT 1 LIMIT 1
</select> </select>
<update id="updatMemberWechatUserId" parameterType="map">
update weixin_clock_member
set wechat_user_id = #{wechatUserId,jdbcType=BIGINT},
update_time = NOW()
where wx_user_id = #{wxUserId,jdbcType=VARCHAR}
</update>
</mapper> </mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.pcloud.book.weixinclock.dao.impl.WeixinClockPrizeRecordDaoImpl" >
<resultMap id="BaseResultMap" type="com.pcloud.book.weixinclock.entity.WeixinClockPrizeRecord" >
<id column="weixin_clock_prize_record_id" property="weixinClockPrizeRecordId" jdbcType="BIGINT" />
<result column="wx_user_id" property="wxUserId" jdbcType="VARCHAR" />
<result column="wechat_user_id" property="wechatUserId" jdbcType="BIGINT" />
<result column="clock_prize_id" property="clockPrizeId" jdbcType="BIGINT" />
<result column="prize_time" property="prizeTime" jdbcType="INTEGER" />
<result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP" />
</resultMap>
<sql id="Base_Column_List" >
weixin_clock_prize_record_id, wx_user_id, wechat_user_id, clock_prize_id, prize_time,
create_time, update_time
</sql>
<select id="selectByWxUserIdAndAppId" resultMap="BaseResultMap" parameterType="map" >
select
<include refid="Base_Column_List" />
from weixin_clock_prize_record
where wx_user_id = #{wxUserId,jdbcType=VARCHAR}
and clock_prize_id = #{appId}
LIMIT 1
</select>
<insert id="insert" parameterType="com.pcloud.book.weixinclock.entity.WeixinClockPrizeRecord" >
insert into weixin_clock_prize_record (wx_user_id,wechat_user_id, clock_prize_id, prize_time,
create_time, update_time)
values ( #{wxUserId,jdbcType=VARCHAR},#{wechatUserId,jdbcType=BIGINT}, #{clockPrizeId,jdbcType=BIGINT}, #{prizeTime,jdbcType=INTEGER},
NOW(), NOW())
</insert>
<update id="updatePrizeTime" parameterType="map">
update weixin_clock_prize_record
set prize_time = prize_time + #{prizeTime,jdbcType=INTEGER},
update_time = NOW()
where wx_user_id = #{wxUserId,jdbcType=VARCHAR}
and clock_prize_id = #{appId}
</update>
<select id="getAllPrizeList" parameterType="map" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from weixin_clock_prize_record
where wx_user_id = #{wxUserId,jdbcType=VARCHAR}
</select>
<delete id="deleteByWxUserId" parameterType="map" >
delete from weixin_clock_prize_record
where wx_user_id = #{wxUserId,jdbcType=VARCHAR}
</delete>
</mapper>
\ 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