Commit 4b59e54c by zhangdongwei-intern

feat-1001865: 群打卡排行榜新增点赞和分享功能

parent d2167c92
...@@ -273,4 +273,11 @@ public interface GroupQrcodeDao extends BaseDao<GroupQrcode> { ...@@ -273,4 +273,11 @@ public interface GroupQrcodeDao extends BaseDao<GroupQrcode> {
* @return * @return
*/ */
List<Long> getIdsByBookGroupId(Long bookGroupId); List<Long> getIdsByBookGroupId(Long bookGroupId);
/**
* 根据群id获取群信息
* @param wxGroupId
* @return
*/
GroupQrcode getByWxGroupId(String wxGroupId);
} }
...@@ -277,4 +277,9 @@ public class GroupQrcodeDaoImpl extends BaseDaoImpl<GroupQrcode> implements Grou ...@@ -277,4 +277,9 @@ public class GroupQrcodeDaoImpl extends BaseDaoImpl<GroupQrcode> implements Grou
public List<Long> getIdsByBookGroupId(Long bookGroupId) { public List<Long> getIdsByBookGroupId(Long bookGroupId) {
return this.getSqlSession().selectList(this.getStatement("getIdsByBookGroupId"), bookGroupId); return this.getSqlSession().selectList(this.getStatement("getIdsByBookGroupId"), bookGroupId);
} }
@Override
public GroupQrcode getByWxGroupId(String wxGroupId) {
return super.getSessionTemplate().selectOne(getStatement("getByWxGroupId"), wxGroupId);
}
} }
...@@ -2,6 +2,7 @@ package com.pcloud.book.weixinclock.biz; ...@@ -2,6 +2,7 @@ package com.pcloud.book.weixinclock.biz;
import com.pcloud.book.group.vo.BookGroupClassifyVO; import com.pcloud.book.group.vo.BookGroupClassifyVO;
import com.pcloud.book.group.vo.ListGroupClassifyParam; import com.pcloud.book.group.vo.ListGroupClassifyParam;
import com.pcloud.book.weixinclock.dto.ListWeixinClockRankDto;
import com.pcloud.book.weixinclock.dto.RankDto; import com.pcloud.book.weixinclock.dto.RankDto;
import com.pcloud.book.weixinclock.dto.WeixinClockDto; import com.pcloud.book.weixinclock.dto.WeixinClockDto;
import com.pcloud.common.exceptions.BizException; import com.pcloud.common.exceptions.BizException;
...@@ -77,10 +78,10 @@ public interface WeixinClockBiz { ...@@ -77,10 +78,10 @@ public interface WeixinClockBiz {
/** /**
* 获取某个群内的打卡排行榜 * 获取某个群内的打卡排行榜
* @param wxGroupId * @param dto
* @return * @return
*/ */
PageBeanNew<RankDto> listWeixinClockRank(String wxGroupId, String wxUserId, Integer currentPage, Integer numPerPage); PageBeanNew<RankDto> listWeixinClockRank(ListWeixinClockRankDto dto);
/** /**
* 获取某个群内某个用户的信息 * 获取某个群内某个用户的信息
......
package com.pcloud.book.weixinclock.biz;
import com.pcloud.book.weixinclock.dto.ListWeixinClockRankDto;
import com.pcloud.book.weixinclock.dto.RankDto;
import com.pcloud.book.weixinclock.vo.request.PraiseForMemberRequestVO;
import java.util.List;
/**
* @Describe: 微信打卡点赞逻辑层
* @Author: zhangdongwei
* @Date: Create on 9:10 2019/10/23 0023
*/
public interface WeixinClockPraiseBiz {
/**
* 为打卡成员点赞/取消点赞
* @param vo
*/
void praiseForMember(PraiseForMemberRequestVO vo);
/**
* 填充打卡排行榜点赞信息
* @param list
* @param listWeixinClockRankDto
*/
void fillPraise(List<RankDto> list, ListWeixinClockRankDto listWeixinClockRankDto);
}
package com.pcloud.book.weixinclock.biz;
import com.pcloud.book.weixinclock.vo.response.DoShareResponseVO;
/**
* @Describe: 微信群打卡分享逻辑层
* @Author: zhangdongwei
* @Date: Create on 10:23 2019/10/29 0029
*/
public interface WeixinClockShareBiz {
/**
* 微信群打卡分享
* @param wechatUserId
* @param wxGroupId
* @param wxUserId
* @return
*/
DoShareResponseVO doShare(Long wechatUserId, String wxGroupId, String wxUserId);
}
...@@ -17,7 +17,9 @@ import com.pcloud.book.group.dto.GroupClassifyQrcodeDTO; ...@@ -17,7 +17,9 @@ import com.pcloud.book.group.dto.GroupClassifyQrcodeDTO;
import com.pcloud.book.group.vo.BookGroupClassifyVO; import com.pcloud.book.group.vo.BookGroupClassifyVO;
import com.pcloud.book.group.vo.ListGroupClassifyParam; import com.pcloud.book.group.vo.ListGroupClassifyParam;
import com.pcloud.book.weixinclock.biz.WeixinClockBiz; import com.pcloud.book.weixinclock.biz.WeixinClockBiz;
import com.pcloud.book.weixinclock.biz.WeixinClockPraiseBiz;
import com.pcloud.book.weixinclock.check.WeixinClockCheck; import com.pcloud.book.weixinclock.check.WeixinClockCheck;
import com.pcloud.book.weixinclock.dao.WeixinClockBrowseDao;
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;
...@@ -25,11 +27,14 @@ import com.pcloud.book.weixinclock.dao.WeixinClockPrizeRecordDao; ...@@ -25,11 +27,14 @@ 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;
import com.pcloud.book.weixinclock.dto.ListWeixinClockRankDto;
import com.pcloud.book.weixinclock.dto.RankDto; import com.pcloud.book.weixinclock.dto.RankDto;
import com.pcloud.book.weixinclock.dto.WeixinClockDto; 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.WeixinClockBrowse;
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.WeixinClockPraise;
import com.pcloud.book.weixinclock.entity.WeixinClockPrizeRecord; 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;
...@@ -125,6 +130,10 @@ public class WeixinClockBizImpl implements WeixinClockBiz { ...@@ -125,6 +130,10 @@ public class WeixinClockBizImpl implements WeixinClockBiz {
private WeixinClockPrizeRecordDao weixinClockPrizeRecordDao; private WeixinClockPrizeRecordDao weixinClockPrizeRecordDao;
@Autowired @Autowired
private AdviserConsr adviserConsr; private AdviserConsr adviserConsr;
@Autowired
private WeixinClockPraiseBiz weixinClockPraiseBiz;
@Autowired
private WeixinClockBrowseDao weixinClockBrowseDao;
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();
...@@ -326,6 +335,7 @@ public class WeixinClockBizImpl implements WeixinClockBiz { ...@@ -326,6 +335,7 @@ public class WeixinClockBizImpl implements WeixinClockBiz {
WeixinClockDto weixinClockDto = weixinClockDao.getWeixinClockBaseInfo(weixinClockId); WeixinClockDto weixinClockDto = weixinClockDao.getWeixinClockBaseInfo(weixinClockId);
if(null != weixinClockDto && null != weixinClockDto.getClockPrizeId() && !weixinClockDto.getClockPrizeId().equals(0L)) { if(null != weixinClockDto && null != weixinClockDto.getClockPrizeId() && !weixinClockDto.getClockPrizeId().equals(0L)) {
AppDto appDto = appConsr.getBaseById(weixinClockDto.getClockPrizeId()); AppDto appDto = appConsr.getBaseById(weixinClockDto.getClockPrizeId());
appDto = null == appDto ? new AppDto() :appDto;
DrawRewardDto drawRewardDto = new DrawRewardDto(); DrawRewardDto drawRewardDto = new DrawRewardDto();
drawRewardDto.setAppId(weixinClockDto.getClockPrizeId()); drawRewardDto.setAppId(weixinClockDto.getClockPrizeId());
drawRewardDto.setChannelId(appDto.getChannelId()); drawRewardDto.setChannelId(appDto.getChannelId());
...@@ -584,21 +594,29 @@ public class WeixinClockBizImpl implements WeixinClockBiz { ...@@ -584,21 +594,29 @@ public class WeixinClockBizImpl implements WeixinClockBiz {
/** /**
* 获取某个群内的打卡排行榜 * 获取某个群内的打卡排行榜
* @param wxGroupId * @param dto
* @param wxUserId
* @return * @return
*/ */
@Override @Override
@ParamLog("获取某个群内的打卡排行榜") @ParamLog("获取某个群内的打卡排行榜")
public PageBeanNew<RankDto> listWeixinClockRank(String wxGroupId, String wxUserId, Integer currentPage, Integer numPerPage) { public PageBeanNew<RankDto> listWeixinClockRank(ListWeixinClockRankDto dto) {
PageParam pageParam = new PageParam(currentPage, numPerPage); PageParam pageParam = new PageParam(dto.getCurrentPage(), dto.getNumPerPage());
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("wxGroupId", wxGroupId); map.put("wxGroupId", dto.getWxGroupId());
map.put("wxUserId", wxUserId); map.put("wxUserId", dto.getWxUserId());
PageBeanNew<RankDto> rankDtos = weixinClockMemberDao.listPageNew(pageParam, map, "listWeixinClockRank"); PageBeanNew<RankDto> rankDtos = weixinClockMemberDao.listPageNew(pageParam, map, "listWeixinClockRank");
if (null == rankDtos || ListUtils.isEmpty(rankDtos.getRecordList())) { if (null == rankDtos || ListUtils.isEmpty(rankDtos.getRecordList())) {
return new PageBeanNew<>(currentPage, numPerPage, 0, new ArrayList<>()); return new PageBeanNew<>(dto.getCurrentPage(), dto.getNumPerPage(), 0, new ArrayList<>());
} }
List<RankDto> list = rankDtos.getRecordList();
weixinClockPraiseBiz.fillPraise(list, dto);
rankDtos.setRecordList(list);
//埋点,用户浏览排行榜记录
WeixinClockBrowse clockBrowse = new WeixinClockBrowse();
BeanUtils.copyProperties(dto, clockBrowse);
clockBrowse.setBrowseTime(new Date());
clockBrowse.setIpAddress(dto.getIpAddress());
weixinClockBrowseDao.insert(clockBrowse);
return rankDtos; return rankDtos;
} }
......
package com.pcloud.book.weixinclock.biz.impl;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.weixinclock.biz.WeixinClockPraiseBiz;
import com.pcloud.book.weixinclock.dao.WeixinClockMemberDao;
import com.pcloud.book.weixinclock.dao.WeixinClockPraiseDao;
import com.pcloud.book.weixinclock.dto.GetByMemberAndUserDto;
import com.pcloud.book.weixinclock.dto.ListWeixinClockRankDto;
import com.pcloud.book.weixinclock.dto.RankDto;
import com.pcloud.book.weixinclock.entity.WeixinClockMember;
import com.pcloud.book.weixinclock.entity.WeixinClockPraise;
import com.pcloud.book.weixinclock.vo.request.PraiseForMemberRequestVO;
import com.pcloud.common.utils.ListUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
/**
* @Describe: 微信打卡点赞逻辑层实现类
* @Author: zhangdongwei
* @Date: Create on 9:10 2019/10/23 0023
*/
@Service("weixinClockPraiseBiz")
public class WeixinClockPraiseBizImpl implements WeixinClockPraiseBiz {
@Autowired
private WeixinClockPraiseDao weixinClockPraiseDao;
@Autowired
private WeixinClockMemberDao weixinClockMemberDao;
@Override
@Transactional(rollbackFor = Exception.class)
public void praiseForMember(PraiseForMemberRequestVO vo) {
//根据微信群id和打卡成员id获取打卡成员信息
WeixinClockMember weixinClockMember = weixinClockMemberDao.getByWxUserId(vo.getWxGroupId(), vo.getWxUserId());
Optional.ofNullable(weixinClockMember).orElseThrow(() -> new BookBizException(BookBizException.ID_NOT_EXIST, "该打卡成员不存在,不能点赞"));
if (weixinClockMember.getAllClockDay() <= 0){
throw new BookBizException(BookBizException.ID_NOT_EXIST, "该打卡成员未打过卡,不能点赞");
}
//获取当天零点的时间
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
Date zero = calendar.getTime();
GetByMemberAndUserDto dto = new GetByMemberAndUserDto();
dto.setCreateTime(zero);
dto.setWechatUserId(vo.getPraiseUserId());
dto.setWxGroupId(vo.getWxGroupId());
dto.setWxUserId(vo.getWxUserId());
WeixinClockPraise oldWeixinClockPraise = weixinClockPraiseDao.getByMemberAndUser(dto);
WeixinClockPraise weixinClockPraise = PraiseForMemberRequestVO.valueToClockPraise(vo);
weixinClockPraise.setWeixinClockId(weixinClockMember.getWeixinClockId());
if (null == oldWeixinClockPraise){
weixinClockPraise.setIsCancel(1);
weixinClockPraiseDao.insert(weixinClockPraise);
}else{
weixinClockPraise.setId(oldWeixinClockPraise.getId());
weixinClockPraiseDao.update(weixinClockPraise);
}
}
@Override
public void fillPraise(List<RankDto> list, ListWeixinClockRankDto listWeixinClockRankDto) {
if (ListUtils.isEmpty(list)){
return;
}
List<String> wxUserIds = list.stream().map(RankDto::getWxUserId).collect(Collectors.toList());
if (ListUtils.isEmpty(wxUserIds)){
return;
}
listWeixinClockRankDto.setWxUserIdList(wxUserIds);
List<WeixinClockPraise> weixinClockPraiseList = weixinClockPraiseDao.getMemberPraise(listWeixinClockRankDto);
Map<String, List<WeixinClockPraise>> praiseMap = weixinClockPraiseList.stream().collect(Collectors.groupingBy(WeixinClockPraise::getWxUserId));
Map<String, Boolean> map = new HashMap<>();
//获取当天零点的时间
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
Date zero = calendar.getTime();
for (WeixinClockPraise praise : weixinClockPraiseList){
if (null == praise.getPraiseUserId()
|| !listWeixinClockRankDto.getWechatUserId().equals(praise.getPraiseUserId())
|| map.getOrDefault(praise.getWxUserId(), Boolean.FALSE )|| praise.getCreateTime().before(zero)){
continue;
}
map.put(praise.getWxUserId(), Boolean.TRUE);
}
for (RankDto rankDto : list){
rankDto.setPraiseNum(ListUtils.isEmpty(praiseMap.get(rankDto.getWxUserId())) ? 0 : praiseMap.get(rankDto.getWxUserId()).size());
rankDto.setIsPraise(map.getOrDefault(rankDto.getWxUserId(), Boolean.FALSE) ? 1 : 0);
}
}
}
package com.pcloud.book.weixinclock.biz.impl;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.group.dao.GroupQrcodeDao;
import com.pcloud.book.group.entity.GroupQrcode;
import com.pcloud.book.util.common.LunarCalendarUtils;
import com.pcloud.book.weixinclock.biz.WeixinClockShareBiz;
import com.pcloud.book.weixinclock.dao.WeixinClockMemberDao;
import com.pcloud.book.weixinclock.dao.WeixinClockShareDao;
import com.pcloud.book.weixinclock.dao.WeixinClockShareWordDao;
import com.pcloud.book.weixinclock.dao.WeixinClockTopicDao;
import com.pcloud.book.weixinclock.dto.RankDto;
import com.pcloud.book.weixinclock.entity.WeixinClockMember;
import com.pcloud.book.weixinclock.entity.WeixinClockShare;
import com.pcloud.book.weixinclock.vo.response.DoShareResponseVO;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.Map;
/**
* @Describe: 微信群打卡分享逻辑层实现
* @Author: zhangdongwei
* @Date: Create on 10:24 2019/10/29 0029
*/
@Service("weixinClockShareBiz")
public class WeixinClockShareBizImpl implements WeixinClockShareBiz {
@Autowired
private WeixinClockShareWordDao weixinClockShareWordDao;
@Autowired
private WeixinClockMemberDao weixinClockMemberDao;
@Autowired
private WeixinClockTopicDao weixinClockTopicDao;
@Autowired
private GroupQrcodeDao groupQrcodeDao;
@Autowired
private WeixinClockShareDao weixinClockShareDao;
@Override
public DoShareResponseVO doShare(Long wechatUserId, String wxGroupId, String wxUserId) {
if (null == wxGroupId || null == wxUserId){
throw new BookBizException(BookBizException.PARAM_IS_NULL, "分享失败,参数为空");
}
RankDto rankDto = weixinClockMemberDao.getClockWechatUserRank(wechatUserId, wxGroupId);
if (null == rankDto || null == rankDto.getWxUserId()){
rankDto = weixinClockMemberDao.getClockWechatUserRankByWxUserId(wxUserId, wxGroupId);
}
if (null == rankDto){
return new DoShareResponseVO();
}
wxUserId = null != rankDto.getWxUserId() ? rankDto.getWxUserId() : wxUserId;
DoShareResponseVO doShareResponseVO = DoShareResponseVO.valueFromRankDto(rankDto);
Date today = new Date();
Map<String, String> strMap = LunarCalendarUtils.dataToLunar(today);
doShareResponseVO.setLunar(strMap.get("lunar"));
doShareResponseVO.setToday(today);
doShareResponseVO.setGanZhi(strMap.get("ganZhi"));
String shareWord = weixinClockShareWordDao.getRoundWord();
doShareResponseVO.setShareWord(shareWord);
Date date = weixinClockTopicDao.getFirstClockDay(wxUserId, wxGroupId);
doShareResponseVO.setStartClockDate(date);
GroupQrcode groupQrcode = groupQrcodeDao.getByWxGroupId(wxGroupId);
doShareResponseVO.setTitle(groupQrcode.getGroupName());
doShareResponseVO.setQrcodeUrl(groupQrcode.getQrcodeUrl());
//埋点,用户分享记录
WeixinClockShare weixinClockShare = new WeixinClockShare();
weixinClockShare.setShareTime(new Date());
weixinClockShare.setShareUserId(wechatUserId);
weixinClockShare.setWxGroupId(wxGroupId);
weixinClockShareDao.insert(weixinClockShare);
return doShareResponseVO;
}
}
package com.pcloud.book.weixinclock.dao;
import com.pcloud.book.weixinclock.entity.WeixinClockBrowse;
import com.pcloud.common.core.dao.BaseDao;
/**
* @Describe: 微信打卡分享记录dao接口层
* @Author: zhangdongwei
* @Date: Create on 17:03 2019/10/31 0031
*/
public interface WeixinClockBrowseDao extends BaseDao<WeixinClockBrowse> {
}
\ No newline at end of file
...@@ -57,4 +57,12 @@ public interface WeixinClockMemberDao extends BaseDao<WeixinClockMember> { ...@@ -57,4 +57,12 @@ public interface WeixinClockMemberDao extends BaseDao<WeixinClockMember> {
* @return * @return
*/ */
void updatMemberWechatUserId(String wxUserId, Long wechatUserId); void updatMemberWechatUserId(String wxUserId, Long wechatUserId);
/**
* 获取某个群内某个用户的信息
* @param wxGroupId
* @param wxUserId
* @return
*/
RankDto getClockWechatUserRankByWxUserId(String wxUserId, String wxGroupId);
} }
package com.pcloud.book.weixinclock.dao;
import com.pcloud.book.weixinclock.dto.GetByMemberAndUserDto;
import com.pcloud.book.weixinclock.dto.ListWeixinClockRankDto;
import com.pcloud.book.weixinclock.entity.WeixinClockPraise;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
/**
* @Describe: 打卡点赞dao
* @Author: zhangdongwei
* @Date: Create on 17:19 2019/10/22 0022
*/
public interface WeixinClockPraiseDao extends BaseDao<WeixinClockPraise> {
/**
* 获取用户为成员点赞信息
* @param dto
* @return
*/
WeixinClockPraise getByMemberAndUser(GetByMemberAndUserDto dto);
/**
* 获取去打卡成员收到的点赞
* @param dto
* @return
*/
List<WeixinClockPraise> getMemberPraise(ListWeixinClockRankDto dto);
}
package com.pcloud.book.weixinclock.dao;
import com.pcloud.book.weixinclock.entity.WeixinClockShare;
import com.pcloud.common.core.dao.BaseDao;
/**
* @Describe: 微信群打卡分享dao接口层
* @Author: zhangdongwei
* @Date: Create on 17:40 2019/10/31 0031
*/
public interface WeixinClockShareDao extends BaseDao<WeixinClockShare> {
}
\ No newline at end of file
package com.pcloud.book.weixinclock.dao;
import com.pcloud.book.weixinclock.entity.WeixinClockShareWord;
import com.pcloud.common.core.dao.BaseDao;
/**
* @Describe: 微信打卡分享句子dao接口
* @Author: zhangdongwei
* @Date: Create on 9:52 2019/10/29 0029
*/
public interface WeixinClockShareWordDao extends BaseDao<WeixinClockShareWord> {
/**
* 随机获取一个句子
* @return
*/
String getRoundWord();
}
...@@ -3,6 +3,8 @@ package com.pcloud.book.weixinclock.dao; ...@@ -3,6 +3,8 @@ package com.pcloud.book.weixinclock.dao;
import com.pcloud.book.weixinclock.entity.WeixinClockTopic; import com.pcloud.book.weixinclock.entity.WeixinClockTopic;
import com.pcloud.common.core.dao.BaseDao; import com.pcloud.common.core.dao.BaseDao;
import java.util.Date;
/** /**
* @author 杨涛 * @author 杨涛
* @description TODO * @description TODO
...@@ -26,4 +28,12 @@ public interface WeixinClockTopicDao extends BaseDao<WeixinClockTopic> { ...@@ -26,4 +28,12 @@ public interface WeixinClockTopicDao extends BaseDao<WeixinClockTopic> {
*/ */
Long getClockCountByUser(String wxGroupId, String wxUserId); Long getClockCountByUser(String wxGroupId, String wxUserId);
/**
* 获取成员第一次打卡日期
* @param wxUserId
* @param wxGroupId
* @return
*/
Date getFirstClockDay(String wxUserId, String wxGroupId);
} }
package com.pcloud.book.weixinclock.dao.impl;
import com.pcloud.book.weixinclock.dao.WeixinClockBrowseDao;
import com.pcloud.book.weixinclock.entity.WeixinClockBrowse;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Repository;
/**
* @Describe: 微信打卡分享记录dao实现层
* @Author: zhangdongwei
* @Date: Create on 17:08 2019/10/31 0031
*/
@Repository("weixinClockBrowseDao")
public class WeixinClockBrowseDaoImpl extends BaseDaoImpl<WeixinClockBrowse> implements WeixinClockBrowseDao {
}
\ No newline at end of file
...@@ -92,4 +92,12 @@ public class WeixinClockMemberDaoImpl extends BaseDaoImpl<WeixinClockMember> imp ...@@ -92,4 +92,12 @@ public class WeixinClockMemberDaoImpl extends BaseDaoImpl<WeixinClockMember> imp
paramMap.put("wechatUserId",wechatUserId); paramMap.put("wechatUserId",wechatUserId);
super.sqlSessionTemplate.update(getStatement("updatMemberWechatUserId"),paramMap); super.sqlSessionTemplate.update(getStatement("updatMemberWechatUserId"),paramMap);
} }
@Override
public RankDto getClockWechatUserRankByWxUserId(String wxUserId, String wxGroupId) {
Map<String, Object> map = new HashMap<>();
map.put("wxUserId", wxUserId);
map.put("wechatGroupId", wxGroupId);
return super.getSqlSession().selectOne(getStatement("getClockWechatUserRankByWxUserId"), map);
}
} }
package com.pcloud.book.weixinclock.dao.impl;
import com.pcloud.book.weixinclock.dao.WeixinClockPraiseDao;
import com.pcloud.book.weixinclock.dto.GetByMemberAndUserDto;
import com.pcloud.book.weixinclock.dto.ListWeixinClockRankDto;
import com.pcloud.book.weixinclock.entity.WeixinClockPraise;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @Describe: 打卡点赞dao实现类
* @Author: zhangdongwei
* @Date: Create on 17:20 2019/10/22 0022
*/
@Repository("weixinClockPraise")
public class WeixinClockPraiseDaoImpl extends BaseDaoImpl<WeixinClockPraise> implements WeixinClockPraiseDao {
@Override
public WeixinClockPraise getByMemberAndUser(GetByMemberAndUserDto dto){
return super.sqlSessionTemplate.selectOne(getStatement("getByMemberAndUser"), dto);
}
@Override
public List<WeixinClockPraise> getMemberPraise(ListWeixinClockRankDto dto) {
return super.sqlSessionTemplate.selectList(getStatement("getMemberPraise"), dto);
}
}
package com.pcloud.book.weixinclock.dao.impl;
import com.pcloud.book.weixinclock.dao.WeixinClockShareDao;
import com.pcloud.book.weixinclock.entity.WeixinClockShare;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Repository;
/**
* @Describe: 微信群打卡分享dao实现层
* @Author: zhangdongwei
* @Date: Create on 17:42 2019/10/31 0031
*/
@Repository("weixinClockShareDao")
public class WeixinClockShareDaoImpl extends BaseDaoImpl<WeixinClockShare> implements WeixinClockShareDao {
}
\ No newline at end of file
package com.pcloud.book.weixinclock.dao.impl;
import com.pcloud.book.weixinclock.dao.WeixinClockShareWordDao;
import com.pcloud.book.weixinclock.entity.WeixinClockShareWord;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Repository;
/**
* @Describe: 微信打卡分享句子dao接口实现
* @Author: zhangdongwei
* @Date: Create on 9:52 2019/10/29 0029
*/
@Repository("weixinClockShareWordDao")
public class WeixinClockShareWordDaoImpl extends BaseDaoImpl<WeixinClockShareWord> implements WeixinClockShareWordDao {
@Override
public String getRoundWord() {
return super.sqlSessionTemplate.selectOne(getStatement("getRoundWord"));
}
}
...@@ -9,6 +9,7 @@ import com.pcloud.common.utils.DateNewUtils; ...@@ -9,6 +9,7 @@ import com.pcloud.common.utils.DateNewUtils;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.Date;
import java.util.Map; import java.util.Map;
/** /**
...@@ -42,4 +43,12 @@ public class WeixinClockTopicDaoImpl extends BaseDaoImpl<WeixinClockTopic> imple ...@@ -42,4 +43,12 @@ public class WeixinClockTopicDaoImpl extends BaseDaoImpl<WeixinClockTopic> imple
return super.getSqlSession().selectOne(getStatement("getClockCountByUser"), paramMap); return super.getSqlSession().selectOne(getStatement("getClockCountByUser"), paramMap);
} }
@Override
public Date getFirstClockDay(String wxUserId, String wxGroupId) {
Map<String, Object> paramMap = Maps.newHashMap();
paramMap.put("wxGroupId", wxGroupId);
paramMap.put("wxUserId", wxUserId);
return super.getSqlSession().selectOne(getStatement("getFirstClockDay"), paramMap);
}
} }
package com.pcloud.book.weixinclock.dto;
import java.util.Date;
import lombok.Data;
/**
* @Describe: 获取用户为打卡成员点赞参数dto
* @Author: zhangdongwei
* @Date: Create on 16:39 2019/10/29 0029
*/
@Data
public class GetByMemberAndUserDto {
private String wxUserId;
private String wxGroupId;
private Long wechatUserId;
private Date createTime;
}
package com.pcloud.book.weixinclock.dto;
import java.util.List;
import lombok.Data;
/**
* @Describe: 获取微信群打卡排名请求dto
* @Author: zhangdongwei
* @Date: Create on 10:11 2019/10/28 0028
*/
@Data
public class ListWeixinClockRankDto {
/**
* 微信群id
*/
private String wxGroupId;
/**
* 微信打卡成员id
*/
private String wxUserId;
/**
* 微信用户di
*/
private Long wechatUserId;
/**
* 当前页
*/
private Integer currentPage;
/**
* 每页条数
*/
private Integer numPerPage;
/**
* 打卡成员id列表
*/
private List<String> wxUserIdList;
private String ipAddress;
}
\ No newline at end of file
...@@ -16,6 +16,9 @@ public class RankDto extends BaseDto { ...@@ -16,6 +16,9 @@ public class RankDto extends BaseDto {
@ApiModelProperty("排名") @ApiModelProperty("排名")
private Integer rankNum; private Integer rankNum;
@ApiModelProperty("打卡成员微信号")
private String wxUserId;
@ApiModelProperty("昵称") @ApiModelProperty("昵称")
private String nickname; private String nickname;
...@@ -25,6 +28,12 @@ public class RankDto extends BaseDto { ...@@ -25,6 +28,12 @@ public class RankDto extends BaseDto {
@ApiModelProperty("打卡次数") @ApiModelProperty("打卡次数")
private Integer clockNum; private Integer clockNum;
@ApiModelProperty("获取的点赞数")
private Integer praiseNum;
@ApiModelProperty("当前用户是否点赞")
private Integer isPraise;
public Integer getRankNum() { public Integer getRankNum() {
return rankNum; return rankNum;
} }
...@@ -33,6 +42,14 @@ public class RankDto extends BaseDto { ...@@ -33,6 +42,14 @@ public class RankDto extends BaseDto {
this.rankNum = rankNum; this.rankNum = rankNum;
} }
public String getWxUserId() {
return wxUserId;
}
public void setWxUserId(String wxUserId) {
this.wxUserId = wxUserId;
}
public String getNickname() { public String getNickname() {
return nickname; return nickname;
} }
...@@ -57,6 +74,22 @@ public class RankDto extends BaseDto { ...@@ -57,6 +74,22 @@ public class RankDto extends BaseDto {
this.clockNum = clockNum; this.clockNum = clockNum;
} }
public Integer getPraiseNum() {
return praiseNum;
}
public void setPraiseNum(Integer praiseNum) {
this.praiseNum = praiseNum;
}
public Integer getIsPraise() {
return isPraise;
}
public void setIsPraise(Integer isPraise) {
this.isPraise = isPraise;
}
@Override @Override
public String toString() { public String toString() {
return "RankDto{" + return "RankDto{" +
...@@ -64,6 +97,8 @@ public class RankDto extends BaseDto { ...@@ -64,6 +97,8 @@ public class RankDto extends BaseDto {
", nickname='" + nickname + '\'' + ", nickname='" + nickname + '\'' +
", headPic='" + headPic + '\'' + ", headPic='" + headPic + '\'' +
", clockNum=" + clockNum + ", clockNum=" + clockNum +
", praiseNum=" + praiseNum +
", isPraise=" + isPraise +
'}'; '}';
} }
} }
package com.pcloud.book.weixinclock.entity;
import com.pcloud.common.entity.BaseEntity;
import java.util.Date;
import lombok.Data;
/**
* @Describe: 打卡排行榜浏览记录实体类
* @Author: zhangdongwei
* @Date: Create on 17:00 2019/10/31 0031
*/
@Data
public class WeixinClockBrowse extends BaseEntity {
/**
* 微信打卡id
*/
private Long weixinClockId;
/**
* 微信群id
*/
private String wxGroupId;
/**
* 微信用户id
*/
private Long wechatUserId;
/**
* 浏览时间
*/
private Date browseTime;
}
\ No newline at end of file
package com.pcloud.book.weixinclock.entity;
import com.pcloud.common.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
/**
* @Describe: 打卡点赞实体
* @Author: zhangdongwei
* @Date: Create on 10:46 2019/10/22 0022
*/
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class WeixinClockPraise extends BaseEntity {
/**
* 打卡id
*/
private Long weixinClockId;
/**
* 打卡成员id
*/
private String wxUserId;
/**
* 打卡所在微信群id
*/
private String wxGroupId;
/**
* 点赞用户id
*/
private Long praiseUserId;
/**
* 是否取消点赞
*/
private Integer isCancel;
}
package com.pcloud.book.weixinclock.entity;
import com.pcloud.common.entity.BaseEntity;
import java.util.Date;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
/**
* @Describe: 打卡分享实体
* @Author: zhangdongwei
* @Date: Create on 11:53 2019/10/22 0022
*/
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class WeixinClockShare extends BaseEntity {
/**
* 分享用户id
*/
private Long shareUserId;
/**
* 微信群id
*/
private String wxGroupId;
/**
* 分享时间
*/
private Date shareTime;
}
package com.pcloud.book.weixinclock.entity;
import com.pcloud.common.entity.BaseEntity;
import lombok.Data;
import lombok.ToString;
/**
* @Describe: 微信打卡分享句子
* @Author: zhangdongwei
* @Date: Create on 9:39 2019/10/29 0029
*/
@Data
@ToString(callSuper = true)
public class WeixinClockShareWord extends BaseEntity {
private String shareWord;
}
...@@ -16,6 +16,8 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -16,6 +16,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpServletRequest;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
...@@ -103,7 +105,8 @@ public interface WeixinClockFacade { ...@@ -103,7 +105,8 @@ public interface 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,
@RequestParam(value = "currentPage", required = false) Integer currentPage, @RequestParam(value = "currentPage", required = false) Integer currentPage,
@RequestParam(value = "numPerPage", required = false) Integer numPerPage) @RequestParam(value = "numPerPage", required = false) Integer numPerPage,
HttpServletRequest request)
throws BizException, PermissionException; throws BizException, PermissionException;
@ApiOperation("获取某个群内某个用户的信息") @ApiOperation("获取某个群内某个用户的信息")
......
...@@ -4,6 +4,7 @@ import com.pcloud.book.base.exception.BookBizException; ...@@ -4,6 +4,7 @@ import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.group.vo.BookGroupClassifyVO; import com.pcloud.book.group.vo.BookGroupClassifyVO;
import com.pcloud.book.group.vo.ListGroupClassifyParam; import com.pcloud.book.group.vo.ListGroupClassifyParam;
import com.pcloud.book.weixinclock.biz.WeixinClockBiz; import com.pcloud.book.weixinclock.biz.WeixinClockBiz;
import com.pcloud.book.weixinclock.dto.ListWeixinClockRankDto;
import com.pcloud.book.weixinclock.dto.WeixinClockDto; import com.pcloud.book.weixinclock.dto.WeixinClockDto;
import com.pcloud.book.weixinclock.facade.WeixinClockFacade; import com.pcloud.book.weixinclock.facade.WeixinClockFacade;
import com.pcloud.common.dto.ResponseDto; import com.pcloud.common.dto.ResponseDto;
...@@ -13,6 +14,7 @@ import com.pcloud.common.page.PageParam; ...@@ -13,6 +14,7 @@ import com.pcloud.common.page.PageParam;
import com.pcloud.common.permission.PermissionException; import com.pcloud.common.permission.PermissionException;
import com.pcloud.common.utils.SessionUtil; import com.pcloud.common.utils.SessionUtil;
import com.pcloud.common.utils.cookie.Cookie; import com.pcloud.common.utils.cookie.Cookie;
import com.pcloud.common.utils.nginx.NginxUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CookieValue; import org.springframework.web.bind.annotation.CookieValue;
...@@ -26,6 +28,8 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -26,6 +28,8 @@ import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
/** /**
...@@ -181,10 +185,19 @@ public class WeixinClockFacadeImpl implements WeixinClockFacade { ...@@ -181,10 +185,19 @@ 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,
@RequestParam(value = "currentPage", required = false) Integer currentPage, @RequestParam(value = "currentPage", required = false) Integer currentPage,
@RequestParam(value = "numPerPage", required = false) Integer numPerPage) @RequestParam(value = "numPerPage", required = false) Integer numPerPage,
HttpServletRequest request)
throws BizException, PermissionException { throws BizException, PermissionException {
Long wechatUserId = Cookie.getId(userInfo, Cookie._WECHAT_USER_ID); Long wechatUserId = Cookie.getId(userInfo, Cookie._WECHAT_USER_ID);
return new ResponseDto<>(weixinClockBiz.listWeixinClockRank(wxGroupId, wxUserId, currentPage, numPerPage)); ListWeixinClockRankDto dto = new ListWeixinClockRankDto();
dto.setCurrentPage(currentPage);
dto.setNumPerPage(numPerPage);
dto.setWxGroupId(wxGroupId);
dto.setWxGroupId(wxGroupId);
dto.setWechatUserId(wechatUserId);
String ipAddress = NginxUtils.getClientIp(request);
dto.setIpAddress(ipAddress);
return new ResponseDto<>(weixinClockBiz.listWeixinClockRank(dto));
} }
/** /**
......
package com.pcloud.book.weixinclock.facade.impl;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.weixinclock.biz.WeixinClockPraiseBiz;
import com.pcloud.book.weixinclock.vo.request.PraiseForMemberRequestVO;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.permission.PermissionException;
import com.pcloud.common.utils.cookie.Cookie;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Optional;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
* @Describe: 微信打卡点赞外部接口实现
* @Author: zhangdongwei
* @Date: Create on 17:37 2019/10/22 0022
*/
@Api(description = "微信群签到打卡")
@RestController("weixinClockPraiseFacade")
@RequestMapping("weixinClockPraise")
public class WeixinClockPraiseFacadeImpl {
@Autowired
private WeixinClockPraiseBiz weixinClockPraiseBiz;
/**
* 为打卡成员点赞/取消点赞
* @param userInfo
* @param vo
* @return
* @throws BizException
* @throws PermissionException
*/
@ApiOperation(value = "为打卡成员点赞/取消点赞", httpMethod = "POST")
@PostMapping("praiseForMember")
public ResponseDto<?> praiseForMember(@CookieValue("userInfo") String userInfo, @RequestBody PraiseForMemberRequestVO vo) throws BizException, PermissionException {
Optional.ofNullable(vo).orElseThrow(() -> new BookBizException(BookBizException.PARAM_IS_ERROR, "点赞失败,参数为空"));
Long wechatUserId = Cookie.getId(userInfo, Cookie._WECHAT_USER_ID);
vo.setPraiseUserId(wechatUserId);
weixinClockPraiseBiz.praiseForMember(vo);
return new ResponseDto<>();
}
}
package com.pcloud.book.weixinclock.facade.impl;
import com.pcloud.book.weixinclock.biz.WeixinClockShareBiz;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.permission.PermissionException;
import com.pcloud.common.utils.cookie.Cookie;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
/**
* @Describe: 微信群打卡分享接口类
* @Author: zhangdongwei
* @Date: Create on 10:21 2019/10/29 0029
*/
@Api(description = "微信群签到打卡分享")
@RestController("weixinClockShareFacade")
@RequestMapping("weixinClockShare")
public class WeixinClockShareFacadeImpl {
@Autowired
private WeixinClockShareBiz weixinClockShareBiz;
/**
* 获取我的打卡排名
* @param userInfo
* @param wxGroupId
* @param wxUserId
* @return
* @throws BizException
* @throws PermissionException
*/
@ApiOperation("分享我的排名")
@ApiImplicitParams({@ApiImplicitParam(name = "wxGroupId", value = "微信群id", dataType = "string", paramType = "query"),
@ApiImplicitParam(name = "weUserId", value = "微信群id", dataType = "string", paramType = "query")})
@RequestMapping(value = "doShare", method = RequestMethod.GET)
public ResponseDto<?> doShare(@CookieValue("userInfo") String userInfo,
@RequestParam("wxGroupId") String wxGroupId,
@RequestParam("wxUserId") String wxUserId) throws BizException, PermissionException {
Long wechatUserId = Cookie.getId(userInfo, Cookie._WECHAT_USER_ID);
return new ResponseDto<>(weixinClockShareBiz.doShare(wechatUserId, wxGroupId, wxUserId));
}
}
package com.pcloud.book.weixinclock.vo.request;
import com.pcloud.book.weixinclock.entity.WeixinClockPraise;
import com.pcloud.common.utils.bean.BeanUtils;
import com.pcloud.common.vo.BaseVO;
import javax.validation.constraints.NotNull;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Describe: 为打卡成员点赞请求vo
* @Author: zhangdongwei
* @Date: Create on 17:57 2019/10/22 0022
*/
@Data
@ApiModel("为打卡成员点赞请求类")
public class PraiseForMemberRequestVO extends BaseVO {
/**
* 点赞人id
*/
private Long praiseUserId;
/**
* 打卡成员id
*/
@NotNull(message = "打卡成员不能为空")
@ApiModelProperty("打卡成员id")
private String wxUserId;
/**
* 群id
*/
@NotNull(message = "群id不能为空")
@ApiModelProperty("打卡关联微信群id")
private String wxGroupId;
@ApiModelProperty("是否取消点赞")
private Integer isCancel;
public static WeixinClockPraise valueToClockPraise(PraiseForMemberRequestVO vo){
WeixinClockPraise weixinClockPraise = BeanUtils.copy(vo, WeixinClockPraise.class);
weixinClockPraise.setIsCancel(vo.getIsCancel() == null ? 0 : vo.getIsCancel());
return weixinClockPraise;
}
}
package com.pcloud.book.weixinclock.vo.response;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.book.weixinclock.dto.RankDto;
import com.pcloud.common.utils.BeanUtils;
import com.pcloud.common.vo.BaseVO;
import java.util.Date;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Describe: 微信群打卡分享返回类
* @Author: zhangdongwei
* @Date: Create on 10:43 2019/10/29 0029
*/
@Data
@ApiModel("微信群打卡分享返回类")
public class DoShareResponseVO extends BaseVO {
@ApiModelProperty("排名")
private Integer rankNum;
@ApiModelProperty("打卡成员微信号")
private String wxUserId;
@ApiModelProperty("昵称")
private String nickname;
@ApiModelProperty("头像")
private String headPic;
@ApiModelProperty("打卡次数")
private Integer clockNum;
@ApiModelProperty("开始打卡日期")
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
private Date startClockDate;
@ApiModelProperty("今天日期")
@JsonFormat(
pattern = "MM/dd",
timezone = "GMT+8"
)
private Date today;
@ApiModelProperty("农历日期")
private String lunar;
@ApiModelProperty("干支日期")
private String ganZhi;
@ApiModelProperty("分享句子")
private String shareWord;
@ApiModelProperty("二维码链接")
private String qrcodeUrl;
@ApiModelProperty("标题")
private String title;
public static DoShareResponseVO valueFromRankDto(RankDto dto){
DoShareResponseVO vo = new DoShareResponseVO();
BeanUtils.copyProperties(dto, vo);
return vo;
}
}
...@@ -770,5 +770,10 @@ ...@@ -770,5 +770,10 @@
WHERE WHERE
c.book_group_id = #{bookGroupId} c.book_group_id = #{bookGroupId}
</select> </select>
<select id="getByWxGroupId" parameterType="string" resultMap="BaseResultMap">
select <include refid="Base_Column_List"/>
from book_group_qrcode where weixin_group_id = #{wxGroupId}
and is_delete = 0
</select>
</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.WeixinClockBrowseDaoImpl" >
<resultMap id="BaseResultMap" type="com.pcloud.book.weixinclock.entity.WeixinClockBrowse">
<id column="id" property="id" jdbcType="BIGINT" />
<result column="weixin_clock_id" property="weixinClockId" jdbcType="BIGINT" />
<result column="wx_group_id" property="wxGroupId" jdbcType="VARCHAR" />
<result column="wechat_user_id" property="wechatUserId" jdbcType="BIGINT" />
<result column="browse_time" property="browseTime" jdbcType="TIMESTAMP" />
<result column="ip_address" property="ipAddress" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List" >
id, weixin_clock_id, wx_group_id, wechat_user_id, browse_time, ip_address
</sql>
<insert id="insert" parameterType="com.pcloud.book.weixinclock.entity.WeixinClockBrowse" useGeneratedKeys="true" keyProperty="id">
insert into weixin_clock_browse (weixin_clock_id, wx_group_id, wechat_user_id, browse_time, ip_address)
values (#{weixinClockId}, #{wxGroupId}, #{wechatUserId}, #{browseTime}, #{ipAddress})
</insert>
</mapper>
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
<select id="listWeixinClockRank" parameterType="map" resultType="com.pcloud.book.weixinclock.dto.RankDto"> <select id="listWeixinClockRank" parameterType="map" resultType="com.pcloud.book.weixinclock.dto.RankDto">
SELECT SELECT
w.all_clock_day clockNum, w.nickname nickname, w.head_pic headPic, (@i :=@i + 1) rankNum w.wx_user_id wxUserId, w.all_clock_day clockNum, w.nickname nickname, w.head_pic headPic, (@i :=@i + 1) rankNum
FROM FROM
weixin_clock_member w, weixin_clock_member w,
(SELECT @i := 0) i (SELECT @i := 0) i
...@@ -80,7 +80,7 @@ ...@@ -80,7 +80,7 @@
</select> </select>
<select id="getClockWechatUserRank" parameterType="map" resultType="com.pcloud.book.weixinclock.dto.RankDto"> <select id="getClockWechatUserRank" parameterType="map" resultType="com.pcloud.book.weixinclock.dto.RankDto">
select cm.rankNum rankNum, cm.clockNum clockNum, cm.nickname nickname, cm.headPic headPic from ( select cm.wx_user_id wxUserId, cm.rankNum rankNum, cm.clockNum clockNum, cm.nickname nickname, cm.headPic headPic from (
select wx_user_id, (@rowNum:=@rowNum+1) AS rankNum, all_clock_day clockNum, nickname nickname, head_pic headPic, wechat_user_id from ( select wx_user_id, (@rowNum:=@rowNum+1) AS rankNum, all_clock_day clockNum, nickname nickname, head_pic headPic, wechat_user_id from (
select wx_user_id, all_clock_day, nickname, head_pic, wechat_user_id, @rowNum:=0 from weixin_clock_member select wx_user_id, all_clock_day, nickname, head_pic, wechat_user_id, @rowNum:=0 from weixin_clock_member
where wx_group_id = #{wechatGroupId} where wx_group_id = #{wechatGroupId}
...@@ -98,4 +98,16 @@ ...@@ -98,4 +98,16 @@
where wx_user_id = #{wxUserId,jdbcType=VARCHAR} where wx_user_id = #{wxUserId,jdbcType=VARCHAR}
</update> </update>
<select id="getClockWechatUserRankByWxUserId" parameterType="map" resultType="com.pcloud.book.weixinclock.dto.RankDto">
select cm.wx_user_id wxUserId, cm.rankNum rankNum, cm.clockNum clockNum, cm.nickname nickname, cm.headPic headPic from (
select wx_user_id, (@rowNum:=@rowNum+1) AS rankNum, all_clock_day clockNum, nickname nickname, head_pic headPic, wechat_user_id from (
select wx_user_id, all_clock_day, nickname, head_pic, wechat_user_id, @rowNum:=0 from weixin_clock_member
where wx_group_id = #{wechatGroupId}
AND (all_clock_day <![CDATA[ >]]> 0 or wx_user_id = #{wxUserId, jdbcType=VARCHAR})
order by all_clock_day desc, update_time asc
) a
) cm where cm.wx_user_id = #{wxUserId}
LIMIT 1
</select>
</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.WeixinClockPraiseDaoImpl" >
<resultMap id="BaseResultMap" type="com.pcloud.book.weixinclock.entity.WeixinClockPraise">
<id column="id" property="id" jdbcType="BIGINT" />
<result column="weixin_clock_id" property="weixinClockId" jdbcType="BIGINT" />
<result column="wx_user_id" property="wxUserId" jdbcType="VARCHAR" />
<result column="wx_group_id" property="wxGroupId" jdbcType="VARCHAR" />
<result column="praise_user_id" property="praiseUserId" jdbcType="BIGINT" />
<result column="is_cancel" property="isCancel" jdbcType="INTEGER" />
<result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP" />
</resultMap>
<sql id="Base_Column_List" >
id, weixin_clock_id, wx_user_id, wx_group_id, praise_user_id, is_cancel, create_time, update_time
</sql>
<insert id="insert" parameterType="com.pcloud.book.weixinclock.entity.WeixinClockPraise" useGeneratedKeys="true" keyProperty="id">
insert into weixin_clock_praise (weixin_clock_id, wx_user_id, wx_group_id, praise_user_id, is_cancel, create_time, update_time)
values (#{weixinClockId}, #{wxUserId}, #{wxGroupId}, #{praiseUserId}, #{isCancel}, now(), now())
</insert>
<update id="update" parameterType="com.pcloud.book.weixinclock.entity.WeixinClockPraise">
update weixin_clock_praise
<set>
<if test="weixinClockId != null">
weixin_clock_id = #{weixinClockId},
</if>
<if test="wxUserId != null">
wx_user_id = #{wxUserId},
</if>
<if test="wxGroupId">
wx_group_id = #{wxGroupId},
</if>
<if test="praiseUserId != null">
praise_user_id = #{praiseUserId},
</if>
<if test="isCancel != null">
is_cancel = #{isCancel},
</if>
update_time = now(),
</set>
where id = #{id}
</update>
<select id="getByMemberAndUser" parameterType="com.pcloud.book.weixinclock.dto.GetByMemberAndUserDto" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from weixin_clock_praise
where wx_group_id = #{wxGroupId} and wx_user_id = #{wxUserId}
and praise_user_id = #{wechatUserId} and create_time <![CDATA[>]]> #{createTime}
limit 1
</select>
<select id="getMemberPraise" parameterType="com.pcloud.book.weixinclock.dto.ListWeixinClockRankDto" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from weixin_clock_praise
where wx_group_id = #{wxGroupId}
and wx_user_id in
<foreach collection="wxUserIdList" open="(" close=")" separator="," item="item">
#{item}
</foreach>
and is_cancel = 1
</select>
</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.WeixinClockShareDaoImpl" >
<resultMap id="BaseResultMap" type="com.pcloud.book.weixinclock.entity.WeixinClockShare">
<id column="id" property="id" jdbcType="BIGINT" />
<result column="share_user_id" property="shareUserId" jdbcType="BIGINT"/>
<result column="wx_group_id" property="wxGroupId" jdbcType="VARCHAR" />
<result column="share_time" property="shareTime" jdbcType="TIMESTAMP" />
</resultMap>
<sql id="Base_Column_List" >
id, share_user_id, wx_group_id, share_time
</sql>
<insert id="insert" parameterType="com.pcloud.book.weixinclock.entity.WeixinClockShare" useGeneratedKeys="true" keyProperty="id">
insert into weixin_clock_share (share_user_id, wx_group_id, share_time)
values (#{shareUserId}, #{wxGroupId}, #{shareTime})
</insert>
</mapper>
<?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.WeixinClockShareWordDaoImpl" >
<resultMap id="BaseResultMap" type="com.pcloud.book.weixinclock.entity.WeixinClockShareWord">
<id column="id" property="id" jdbcType="BIGINT" />
<result column="share_word" property="shareWord" jdbcType="VARCHAR" />
</resultMap>
<sql id="Base_Column_List" >
id, share_word
</sql>
<select id="getRoundWord" resultType="string">
SELECT share_word
FROM weixin_clock_share_word AS t1 JOIN (
SELECT ROUND(RAND() * ((SELECT MAX(id) FROM weixin_clock_share_word)-(SELECT MIN(id) FROM weixin_clock_share_word))+(SELECT MIN(id) FROM weixin_clock_share_word)) AS id) AS t2
WHERE t1.id >= t2.id
ORDER BY t1.id LIMIT 1;
</select>
</mapper>
\ No newline at end of file
...@@ -56,4 +56,11 @@ ...@@ -56,4 +56,11 @@
</if> </if>
</select> </select>
<select id="getFirstClockDay" parameterType="map" resultType="date">
select CREATED_DAY from weixin_clock_topic
where wx_group_id = #{wxGroupId, jdbcType=VARCHAR}
AND wx_user_id = #{wxUserId, jdbcType=VARCHAR}
order by CREATED_DAY limit 1
</select>
</mapper> </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