Commit 0da4f991 authored by shiyu's avatar shiyu

订阅消息

parent b52c1d5d
package com.wwdz.ch.db.bean;
import com.xxdxxs.entity.Entity;
import lombok.Data;
@Data
public class QdUserSignInRecord implements Entity {
private Long userId;
private Long totalDays;
}
package com.wwdz.ch.db.dao.qiandao; package com.wwdz.ch.db.dao.qiandao;
import com.wwdz.ch.db.bean.QdUserSignInRecord;
import com.wwdz.ch.db.domain.qiandao.QdUserSignIn; import com.wwdz.ch.db.domain.qiandao.QdUserSignIn;
import com.wwdz.ch.db.dto.request.qiandao.QdUserSignInRequestDto; import com.wwdz.ch.db.dto.request.qiandao.QdUserSignInRequestDto;
import java.util.List; import java.util.List;
import java.util.Map;
public interface QdUserSignInDao { public interface QdUserSignInDao {
...@@ -48,4 +50,11 @@ public interface QdUserSignInDao { ...@@ -48,4 +50,11 @@ public interface QdUserSignInDao {
* 签到任务id为空时,则统计所有任务 * 签到任务id为空时,则统计所有任务
*/ */
long countTotalRecord(Long userId, Long taskId); long countTotalRecord(Long userId, Long taskId);
/**
* 统计前100个用户的总打卡数
* @param taskId
* @return
*/
List<QdUserSignInRecord> countGroupByUser(long taskId);
} }
package com.wwdz.ch.db.impl.qiandao; package com.wwdz.ch.db.impl.qiandao;
import com.github.pagehelper.PageHelper;
import com.wwdz.ch.db.bean.QdUserSignInRecord;
import com.wwdz.ch.db.dao.qiandao.QdUserSignInDao; import com.wwdz.ch.db.dao.qiandao.QdUserSignInDao;
import com.wwdz.ch.db.domain.qiandao.QdUserSignIn; import com.wwdz.ch.db.domain.qiandao.QdUserSignIn;
import com.wwdz.ch.db.domain.qiandao.QdUserSignInExample; import com.wwdz.ch.db.domain.qiandao.QdUserSignInExample;
...@@ -12,6 +14,7 @@ import org.springframework.boot.autoconfigure.quartz.QuartzProperties; ...@@ -12,6 +14,7 @@ import org.springframework.boot.autoconfigure.quartz.QuartzProperties;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.List; import java.util.List;
import java.util.Map;
@Repository @Repository
public class QdUserSignInDaoImpl implements QdUserSignInDao { public class QdUserSignInDaoImpl implements QdUserSignInDao {
...@@ -153,4 +156,14 @@ public class QdUserSignInDaoImpl implements QdUserSignInDao { ...@@ -153,4 +156,14 @@ public class QdUserSignInDaoImpl implements QdUserSignInDao {
criteria.andIsValidEqualTo(true); criteria.andIsValidEqualTo(true);
return qdUserSignInMapper.countByExample(example); return qdUserSignInMapper.countByExample(example);
} }
@Override
public List<QdUserSignInRecord> countGroupByUser(long taskId) {
QdUserSignInExample example = new QdUserSignInExample();
QdUserSignInExample.Criteria criteria = example.createCriteria();
criteria.andTaskIdEqualTo(taskId);
criteria.andIsValidEqualTo(true);
PageHelper.startPage(1, 100);
return qdUserSignInMapper.countGroupByUser(example);
}
} }
package com.wwdz.ch.db.mapper.qiandao; package com.wwdz.ch.db.mapper.qiandao;
import com.wwdz.ch.db.bean.QdUserSignInRecord;
import com.wwdz.ch.db.domain.qiandao.QdUserSignIn; import com.wwdz.ch.db.domain.qiandao.QdUserSignIn;
import com.wwdz.ch.db.domain.qiandao.QdUserSignInExample; import com.wwdz.ch.db.domain.qiandao.QdUserSignInExample;
import java.util.List; import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -66,4 +68,11 @@ public interface QdUserSignInMapper { ...@@ -66,4 +68,11 @@ public interface QdUserSignInMapper {
int updateByPrimaryKeySelective(QdUserSignIn record); int updateByPrimaryKeySelective(QdUserSignIn record);
int updateByPrimaryKey(QdUserSignIn record); int updateByPrimaryKey(QdUserSignIn record);
/**
* 统计前100个用户的总打卡数
* @param example
* @return
*/
List<QdUserSignInRecord> countGroupByUser(QdUserSignInExample example);
} }
\ No newline at end of file
...@@ -401,4 +401,14 @@ ...@@ -401,4 +401,14 @@
</if> </if>
limit 1 limit 1
</select> </select>
<select id="countGroupByUser" parameterType="com.wwdz.ch.db.domain.qiandao.QdUserSignInExample" resultType="com.wwdz.ch.db.bean.QdUserSignInRecord">
select `user_id` as userId, count(1) as totalDays from qd_user_sign_in
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
group by `user_id` order by totalDays desc
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -2,10 +2,10 @@ package com.wwdz.ch.wx.impl.qiandao; ...@@ -2,10 +2,10 @@ package com.wwdz.ch.wx.impl.qiandao;
import com.wwdz.ch.core.consts.qiandao.SignInTaskEnum; import com.wwdz.ch.core.consts.qiandao.SignInTaskEnum;
import com.wwdz.ch.core.type.Result; import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.db.dao.qiandao.QdUserSignInDao; import com.wwdz.ch.db.bean.QdUserSignInRecord;
import com.wwdz.ch.db.dao.qiandao.QdUserSignInNoteDao; import com.wwdz.ch.db.dao.qiandao.*;
import com.wwdz.ch.db.dao.qiandao.QdUserSignInTaskDao; import com.wwdz.ch.db.domain.User;
import com.wwdz.ch.db.dao.qiandao.SignInTaskDao; import com.wwdz.ch.db.domain.qiandao.QdUser;
import com.wwdz.ch.db.domain.qiandao.QdUserSignIn; import com.wwdz.ch.db.domain.qiandao.QdUserSignIn;
import com.wwdz.ch.db.domain.qiandao.QdUserSignInTask; import com.wwdz.ch.db.domain.qiandao.QdUserSignInTask;
import com.wwdz.ch.db.domain.qiandao.SignInTask; import com.wwdz.ch.db.domain.qiandao.SignInTask;
...@@ -47,6 +47,9 @@ public class QdUserSignInTaskServiceImpl implements QdUserSignInTaskService { ...@@ -47,6 +47,9 @@ public class QdUserSignInTaskServiceImpl implements QdUserSignInTaskService {
@Autowired @Autowired
QdUserSignInService qdUserSignInService; QdUserSignInService qdUserSignInService;
@Autowired
QdUserDao qdUserDao;
@Override @Override
public Result join(QdUserSignInTaskRequestDto dto) { public Result join(QdUserSignInTaskRequestDto dto) {
try { try {
...@@ -246,4 +249,47 @@ public class QdUserSignInTaskServiceImpl implements QdUserSignInTaskService { ...@@ -246,4 +249,47 @@ public class QdUserSignInTaskServiceImpl implements QdUserSignInTaskService {
} }
} }
@Override
public Result findCharts(QdUserSignInTaskRequestDto dto) {
try {
long taskId = dto.getTaskId();
long userId = dto.getUserId();
QdUser cUser = qdUserDao.queryById(userId);
//当前用户总打卡数
long currentUserTotalDays = qdUserSignInDao.countTotalRecord(userId, taskId);
//当期用户排名
int currentUserRanking = 0;
List<QdUserSignInRecord> list = qdUserSignInDao.countGroupByUser(taskId);
List<Map<String, Object>> dataList = new ArrayList<>();
Map<String, Object> chartsListInfo = new HashMap<>();
for (int i =0; i < list.size(); i++) {
int ranking = i + 1;
QdUser qdUser = qdUserDao.queryById(list.get(i).getUserId());
chartsListInfo.put("ranking", ranking);
chartsListInfo.put("avatar", qdUser.getAvatar());
chartsListInfo.put("userName", qdUser.getNickName());
chartsListInfo.put("totalDays", list.get(i).getTotalDays());
if (userId == list.get(i).getUserId()) {
currentUserRanking = ranking;
}
dataList.add(chartsListInfo);
}
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("currentUserName", cUser.getNickName());
resultMap.put("currentAvatar", cUser.getAvatar());
resultMap.put("currentAvatar", cUser.getAvatar());
if (currentUserRanking == 0) {
resultMap.put("currentUserRanking", "未上榜");
} else {
resultMap.put("currentUserRanking", currentUserRanking);
}
resultMap.put("currentUserTotalDays", currentUserTotalDays);
resultMap.put("list", dataList);
return Result.success(resultMap);
} catch (Exception e) {
logger.error("查询打卡排行榜失败 error :{}", e);
}
return Result.failed();
}
} }
...@@ -39,4 +39,10 @@ public interface QdUserSignInTaskService { ...@@ -39,4 +39,10 @@ public interface QdUserSignInTaskService {
* 检测过期任务 * 检测过期任务
*/ */
void checkInvalidTask(); void checkInvalidTask();
/**
* 打卡排行榜
* @return
*/
Result findCharts(QdUserSignInTaskRequestDto dto);
} }
...@@ -85,4 +85,21 @@ public class QdUserSignInTaskController { ...@@ -85,4 +85,21 @@ public class QdUserSignInTaskController {
} }
return qdUserSignInTaskService.findTaskList(dto); return qdUserSignInTaskService.findTaskList(dto);
} }
@ApiOperation(value = "打卡排行榜")
@PostMapping("/findCharts")
public Result findCharts(@RequestBody QdUserSignInTaskRequestDto dto) {
logger.info("【请求开始】打卡排行榜,请求参数:{}", JSON.toJSONString(dto));
Validator validator = new Validator(FormHandler.ofEntity(dto));
validator.set("userId", "用户id").must().number()
.set("taskId", "任务id").must().number()
.end();
if (!validator.isValid()) {
return Result.failed(ResultCode.PARAM_ERROR);
}
return qdUserSignInTaskService.findCharts(dto);
}
} }
...@@ -89,12 +89,12 @@ public class WxPayServiceTest { ...@@ -89,12 +89,12 @@ public class WxPayServiceTest {
@Test @Test
public void refund() { public void refund() {
List<String> list = Arrays.asList("DA2501081948572456638"); List<String> list = Arrays.asList("GM2411101240401270325");
list.forEach(orderId ->{ list.forEach(orderId ->{
DistributionOrderRequestDto dto = new DistributionOrderRequestDto(); DistributionOrderRequestDto dto = new DistributionOrderRequestDto();
dto.setDistributionOrderId(orderId); dto.setDistributionOrderId(orderId);
dto.setAmount("128"); dto.setAmount("300");
dto.setRefundPrice("128"); dto.setRefundPrice("300");
Result result = wxPayServiceApi.refund(dto); Result result = wxPayServiceApi.refund(dto);
logger.info("申请微信支付退款:{}", result); logger.info("申请微信支付退款:{}", result);
}); });
......
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