Commit 18c910bc by 高鹏

Merge branch 'feat-1002381' into 'master'

需求1002381

See merge request rays/pcloud-book!442
parents 15a7c181 01c1bd33
...@@ -40,4 +40,6 @@ public class CreateTaskItemDto implements Serializable { ...@@ -40,4 +40,6 @@ public class CreateTaskItemDto implements Serializable {
@NotNull(message = "发送时间设置不能为空") @NotNull(message = "发送时间设置不能为空")
private String sendHour; private String sendHour;
private Integer progressGuidance;
} }
...@@ -43,5 +43,5 @@ public class TaskItemDto implements Serializable { ...@@ -43,5 +43,5 @@ public class TaskItemDto implements Serializable {
private String sendHour; private String sendHour;
private Integer progressGuidance;
} }
package com.pcloud.book.timecontrol.dto;
import java.io.Serializable;
import java.util.List;
/**
* 任务进度DTO
* @author PENG
* @date 2020年2月19日14:59:40
*/
public class TaskProgressDTO implements Serializable {
private static final long serialVersionUID = -5460644900501987914L;
private String wxUserId;
private String nickname;
private String headPic;
private Integer subscribeCount;
private Integer finishCount;
private String taskName;
private String taskIntroduce;
private Integer taskCount;
private Integer finishTaskCount;
private Integer prizeTaskCount;
private List<TaskProgressItemDTO> itemList;
public String getWxUserId() {
return wxUserId;
}
public void setWxUserId(String wxUserId) {
this.wxUserId = wxUserId;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getHeadPic() {
return headPic;
}
public void setHeadPic(String headPic) {
this.headPic = headPic;
}
public Integer getSubscribeCount() {
return subscribeCount;
}
public void setSubscribeCount(Integer subscribeCount) {
this.subscribeCount = subscribeCount;
}
public Integer getFinishCount() {
return finishCount;
}
public void setFinishCount(Integer finishCount) {
this.finishCount = finishCount;
}
public String getTaskName() {
return taskName;
}
public void setTaskName(String taskName) {
this.taskName = taskName;
}
public String getTaskIntroduce() {
return taskIntroduce;
}
public void setTaskIntroduce(String taskIntroduce) {
this.taskIntroduce = taskIntroduce;
}
public Integer getTaskCount() {
return taskCount;
}
public void setTaskCount(Integer taskCount) {
this.taskCount = taskCount;
}
public Integer getFinishTaskCount() {
return finishTaskCount;
}
public void setFinishTaskCount(Integer finishTaskCount) {
this.finishTaskCount = finishTaskCount;
}
public Integer getPrizeTaskCount() {
return prizeTaskCount;
}
public void setPrizeTaskCount(Integer prizeTaskCount) {
this.prizeTaskCount = prizeTaskCount;
}
public List<TaskProgressItemDTO> getItemList() {
return itemList;
}
public void setItemList(List<TaskProgressItemDTO> itemList) {
this.itemList = itemList;
}
@Override
public String toString() {
return "TaskProgressDTO{" +
"wxUserId='" + wxUserId + '\'' +
", nickname='" + nickname + '\'' +
", headPic='" + headPic + '\'' +
", subscribeCount=" + subscribeCount +
", finishCount=" + finishCount +
", taskName='" + taskName + '\'' +
", taskIntroduce='" + taskIntroduce + '\'' +
", taskCount=" + taskCount +
", finishTaskCount=" + finishTaskCount +
", prizeTaskCount=" + prizeTaskCount +
", itemList=" + itemList +
'}';
}
}
package com.pcloud.book.timecontrol.dto;
import java.io.Serializable;
/**
* 单项任务进度DTO
* @author PENG
* @date 2020年2月19日15:09:44
*/
public class TaskProgressItemDTO implements Serializable {
private static final long serialVersionUID = 4206283984013286771L;
private Integer taskSendId;
private Integer taskId;
private Integer taskItemId;
private String taskItemName;
private Boolean completeState;
private Boolean hasPrize;
public Integer getTaskSendId() {
return taskSendId;
}
public void setTaskSendId(Integer taskSendId) {
this.taskSendId = taskSendId;
}
public Integer getTaskId() {
return taskId;
}
public void setTaskId(Integer taskId) {
this.taskId = taskId;
}
public Integer getTaskItemId() {
return taskItemId;
}
public void setTaskItemId(Integer taskItemId) {
this.taskItemId = taskItemId;
}
public String getTaskItemName() {
return taskItemName;
}
public void setTaskItemName(String taskItemName) {
this.taskItemName = taskItemName;
}
public Boolean getCompleteState() {
return completeState;
}
public void setCompleteState(Boolean completeState) {
this.completeState = completeState;
}
public Boolean getHasPrize() {
return hasPrize;
}
public void setHasPrize(Boolean hasPrize) {
this.hasPrize = hasPrize;
}
@Override
public String toString() {
return "TaskProgressItemDTO{" +
"taskSendId=" + taskSendId +
"taskId=" + taskId +
", taskItemId=" + taskItemId +
", taskItemName='" + taskItemName + '\'' +
", completeState=" + completeState +
", hasPrize=" + hasPrize +
'}';
}
}
...@@ -41,4 +41,6 @@ public class UpdateTaskItemDto implements Serializable { ...@@ -41,4 +41,6 @@ public class UpdateTaskItemDto implements Serializable {
@NotNull(message = "发送时间设置不能为空") @NotNull(message = "发送时间设置不能为空")
private String sendHour; private String sendHour;
private Integer progressGuidance;
} }
package com.pcloud.book.timecontrol.biz; package com.pcloud.book.timecontrol.biz;
import com.pcloud.book.timecontrol.dto.*; import com.pcloud.book.timecontrol.dto.*;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBeanNew; import com.pcloud.common.page.PageBeanNew;
import java.util.List; import java.util.List;
...@@ -25,4 +26,5 @@ public interface TaskCompletedBiz { ...@@ -25,4 +26,5 @@ public interface TaskCompletedBiz {
List<String> getTaskSendDateList(String date); List<String> getTaskSendDateList(String date);
TaskProgressDTO getUserTaskProgress(Integer taskId, String wxUserId) throws BizException;
} }
...@@ -265,6 +265,9 @@ public class TaskBizImpl implements TaskBiz { ...@@ -265,6 +265,9 @@ public class TaskBizImpl implements TaskBiz {
if(null==item.getAddSendTime()){ if(null==item.getAddSendTime()){
item.setAddSendTime(0); item.setAddSendTime(0);
} }
if(null == item.getProgressGuidance()) {
item.setProgressGuidance(0);
}
taskItemMapper.insert(item); taskItemMapper.insert(item);
Integer taskItemId = item.getId(); Integer taskItemId = item.getId();
List<TimeControlReplyMessage> list = new ArrayList<>(); List<TimeControlReplyMessage> list = new ArrayList<>();
...@@ -352,6 +355,9 @@ public class TaskBizImpl implements TaskBiz { ...@@ -352,6 +355,9 @@ public class TaskBizImpl implements TaskBiz {
if(null == timeControlTaskItem.getAddSendTime()){ if(null == timeControlTaskItem.getAddSendTime()){
timeControlTaskItem.setAddSendTime(0); timeControlTaskItem.setAddSendTime(0);
} }
if (null == timeControlTaskItem.getProgressGuidance()) {
timeControlTaskItem.setProgressGuidance(0);
}
taskItemMapper.updateTtaskItem(timeControlTaskItem); taskItemMapper.updateTtaskItem(timeControlTaskItem);
//删除原item下的配置 //删除原item下的配置
replyMessageMapper.deleteByItemId(taskItemId); replyMessageMapper.deleteByItemId(taskItemId);
......
...@@ -4,17 +4,11 @@ import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr; ...@@ -4,17 +4,11 @@ import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr;
import com.pcloud.book.timecontrol.biz.TaskBiz; import com.pcloud.book.timecontrol.biz.TaskBiz;
import com.pcloud.book.timecontrol.biz.TaskCompletedBiz; import com.pcloud.book.timecontrol.biz.TaskCompletedBiz;
import com.pcloud.book.timecontrol.biz.TaskSubscribeBiz; import com.pcloud.book.timecontrol.biz.TaskSubscribeBiz;
import com.pcloud.book.timecontrol.dto.ReplyMessageDto; import com.pcloud.book.timecontrol.dto.*;
import com.pcloud.book.timecontrol.dto.SubscribeTaskUserDTO; import com.pcloud.book.timecontrol.entity.TimeControlTask;
import com.pcloud.book.timecontrol.dto.TaskCompletedDto; import com.pcloud.book.timecontrol.entity.TimeControlTaskPrize;
import com.pcloud.book.timecontrol.dto.TaskItemSendDto; import com.pcloud.book.timecontrol.mapper.*;
import com.pcloud.book.timecontrol.dto.TaskSendUserDto; import com.pcloud.common.exceptions.BizException;
import com.pcloud.book.timecontrol.dto.TodayTaskSendDto;
import com.pcloud.book.timecontrol.mapper.TimeControlReplyMessageMapper;
import com.pcloud.book.timecontrol.mapper.TimeControlTaskItemMapper;
import com.pcloud.book.timecontrol.mapper.TimeControlTaskMapper;
import com.pcloud.book.timecontrol.mapper.TimeControlTaskSendMapper;
import com.pcloud.book.timecontrol.mapper.TimeControlTaskSubscribeMapper;
import com.pcloud.common.page.PageBeanNew; import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.utils.ListUtils; import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.string.StringUtil; import com.pcloud.common.utils.string.StringUtil;
...@@ -62,6 +56,8 @@ public class TaskCompletedBizImpl implements TaskCompletedBiz { ...@@ -62,6 +56,8 @@ public class TaskCompletedBizImpl implements TaskCompletedBiz {
private TaskBiz taskBiz; private TaskBiz taskBiz;
@Autowired @Autowired
private WechatGroupConsr wechatGroupConsr; private WechatGroupConsr wechatGroupConsr;
@Autowired
private TaskPrizeMapper taskPrizeMapper;
//@Autowired //@Autowired
//private PcloudKeywordService pcloudKeywordService; //private PcloudKeywordService pcloudKeywordService;
...@@ -222,4 +218,43 @@ public class TaskCompletedBizImpl implements TaskCompletedBiz { ...@@ -222,4 +218,43 @@ public class TaskCompletedBizImpl implements TaskCompletedBiz {
List<String> taskSendDateList = timeControlTaskSendMapper.getTaskSendDateList(date); List<String> taskSendDateList = timeControlTaskSendMapper.getTaskSendDateList(date);
return taskSendDateList; return taskSendDateList;
} }
@Override
public TaskProgressDTO getUserTaskProgress(Integer taskId, String wxUserId) throws BizException {
TaskProgressDTO taskProgressDTO = new TaskProgressDTO();
taskProgressDTO.setWxUserId(wxUserId);
TimeControlTask timeControlTask = taskMapper.selectByPrimaryKey(taskId);
if (null == timeControlTask) {
return taskProgressDTO;
}
taskProgressDTO.setTaskName(timeControlTask.getTaskName());
taskProgressDTO.setTaskIntroduce(timeControlTask.getTaskIntroduce());
GroupUserDTO groupUserDTO = wechatGroupConsr.getWxUserInfoByWxUserId(wxUserId);
if (null != groupUserDTO) {
taskProgressDTO.setNickname(groupUserDTO.getNickName());
taskProgressDTO.setHeadPic(groupUserDTO.getHeadPic());
}
TaskProgressDTO progressDTO = taskSubscribeMapper.getSubscribeStatics(taskId);
if (null != progressDTO) {
taskProgressDTO.setSubscribeCount(progressDTO.getSubscribeCount());
taskProgressDTO.setFinishCount(progressDTO.getFinishCount());
}
taskProgressDTO.setTaskCount(taskItemMapper.getTaskItemCount(taskId));
List<TaskProgressItemDTO> itemList = timeControlTaskSendMapper.getUserTaskItemProgress(taskId, wxUserId);
taskProgressDTO.setItemList(itemList);
Integer finishTaskCount = 0;
if (!ListUtils.isEmpty(itemList)) {
for(TaskProgressItemDTO dto : itemList) {
if (null != dto.getCompleteState() && dto.getCompleteState()) {
finishTaskCount += 1;
}
}
}
taskProgressDTO.setFinishTaskCount(finishTaskCount);
TimeControlTaskPrize prize = taskPrizeMapper.getByTaskId(taskId, 0);
if (null != prize && null != prize.getTotalPrizeNum()) {
taskProgressDTO.setPrizeTaskCount(prize.getTotalPrizeNum());
}
return taskProgressDTO;
}
} }
...@@ -430,6 +430,20 @@ public class TaskSubscribeBizImpl implements TaskSubscribeBiz { ...@@ -430,6 +430,20 @@ public class TaskSubscribeBizImpl implements TaskSubscribeBiz {
sendTextMessageVO.setContent(content); sendTextMessageVO.setContent(content);
WxGroupSDK.sendTextMessage(sendTextMessageVO); WxGroupSDK.sendTextMessage(sendTextMessageVO);
} }
if (YesOrNoEnums.YES.getValue().equals(timeControlTaskItem.getProgressGuidance())) {
//封装任务进度
SendTextMessageVO sendTextMessageVO = new SendTextMessageVO();
sendTextMessageVO.setCode(SendMessageTypeEnum.SELF.getCode());
sendTextMessageVO.setWxId(robotWxId);
sendTextMessageVO.setAltId(robotWxId);
sendTextMessageVO.setWxGroupId(wxUserId);
sendTextMessageVO.setIp(ip);
String link = wechatGroupLinkPrefix + "/time/task?taskId=" + timeControlTaskItem.getTaskId()
+ "&taskItemId=" + taskItemId + "&wxUserId=" + wxUserId;
String content = "当前任务进度→\n" + UrlUtils.getShortUrl4Own(link) + "";
sendTextMessageVO.setContent(content);
WxGroupSDK.sendTextMessage(sendTextMessageVO);
}
//更新发送状态 //更新发送状态
Integer completeState = null; Integer completeState = null;
if (!YesOrNoEnums.YES.getValue().equals(timeControlTaskItem.getFinishConfirm())) { if (!YesOrNoEnums.YES.getValue().equals(timeControlTaskItem.getFinishConfirm())) {
......
...@@ -30,6 +30,8 @@ public class TimeControlTaskItem { ...@@ -30,6 +30,8 @@ public class TimeControlTaskItem {
private String sendHour; private String sendHour;
private Integer progressGuidance;
public Integer getAddSendTime() { public Integer getAddSendTime() {
return addSendTime; return addSendTime;
} }
...@@ -125,4 +127,12 @@ public class TimeControlTaskItem { ...@@ -125,4 +127,12 @@ public class TimeControlTaskItem {
public void setUpdateTime(Date updateTime) { public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime; this.updateTime = updateTime;
} }
public Integer getProgressGuidance() {
return progressGuidance;
}
public void setProgressGuidance(Integer progressGuidance) {
this.progressGuidance = progressGuidance;
}
} }
\ No newline at end of file
...@@ -5,9 +5,11 @@ import com.pcloud.book.timecontrol.biz.TaskCompletedBiz; ...@@ -5,9 +5,11 @@ import com.pcloud.book.timecontrol.biz.TaskCompletedBiz;
import com.pcloud.book.timecontrol.biz.TaskSubscribeBiz; import com.pcloud.book.timecontrol.biz.TaskSubscribeBiz;
import com.pcloud.book.timecontrol.dto.*; import com.pcloud.book.timecontrol.dto.*;
import com.pcloud.common.dto.ResponseDto; import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBeanNew; import com.pcloud.common.page.PageBeanNew;
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 io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -105,4 +107,10 @@ public class TimeControlStatisFacadeImpl { ...@@ -105,4 +107,10 @@ public class TimeControlStatisFacadeImpl {
return new ResponseDto<>(pageResult); return new ResponseDto<>(pageResult);
} }
@GetMapping("getUserTaskProgress")
@ApiOperation(value = "获取用户任务进度", httpMethod = "GET")
ResponseDto<?> getUserTaskProgress(@RequestParam("wxUserId") String wxUserId, @RequestParam("taskId") Integer taskId)
throws PermissionException, BizException {
return new ResponseDto<>(taskCompletedBiz.getUserTaskProgress(taskId, wxUserId));
}
} }
\ No newline at end of file
...@@ -24,4 +24,6 @@ public interface TimeControlTaskItemMapper { ...@@ -24,4 +24,6 @@ public interface TimeControlTaskItemMapper {
List<ReplyMessageBaseDto> listTaskItemDay(Integer taskId); List<ReplyMessageBaseDto> listTaskItemDay(Integer taskId);
List<TimeControlTaskItem> getByItemIdList(@Param("taskItemIds") List<Integer> taskItemIds); List<TimeControlTaskItem> getByItemIdList(@Param("taskItemIds") List<Integer> taskItemIds);
Integer getTaskItemCount(@Param("taskId") Integer taskId);
} }
\ No newline at end of file
package com.pcloud.book.timecontrol.mapper; package com.pcloud.book.timecontrol.mapper;
import com.pcloud.book.timecontrol.dto.SubscribeTaskUserDTO; import com.pcloud.book.timecontrol.dto.*;
import com.pcloud.book.timecontrol.dto.TaskItemSendDto;
import com.pcloud.book.timecontrol.dto.TaskSendDto;
import com.pcloud.book.timecontrol.dto.TaskSendUserDto;
import com.pcloud.book.timecontrol.entity.TimeControlTaskSend; import com.pcloud.book.timecontrol.entity.TimeControlTaskSend;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -63,4 +60,7 @@ public interface TimeControlTaskSendMapper { ...@@ -63,4 +60,7 @@ public interface TimeControlTaskSendMapper {
Integer getNoCompletedCount(@Param("subscribeId") Integer subscribeId); Integer getNoCompletedCount(@Param("subscribeId") Integer subscribeId);
Integer getCompletedCount(Integer subscribeId); Integer getCompletedCount(Integer subscribeId);
List<TaskProgressItemDTO> getUserTaskItemProgress(@Param("taskId")Integer taskId, @Param("wxUserId") String wxUserId);
} }
package com.pcloud.book.timecontrol.mapper; package com.pcloud.book.timecontrol.mapper;
import com.pcloud.book.timecontrol.dto.TaskProgressDTO;
import com.pcloud.book.timecontrol.entity.TimeControlTaskSubscribe; import com.pcloud.book.timecontrol.entity.TimeControlTaskSubscribe;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -31,4 +32,10 @@ public interface TimeControlTaskSubscribeMapper { ...@@ -31,4 +32,10 @@ public interface TimeControlTaskSubscribeMapper {
void completedTaskById(Integer subscribeId); void completedTaskById(Integer subscribeId);
/**
* 查询参与人数和完成人数
* @param taskId
* @return
*/
TaskProgressDTO getSubscribeStatics(@Param("taskId") Integer taskId);
} }
...@@ -14,17 +14,18 @@ ...@@ -14,17 +14,18 @@
<result column="finish_link_url" property="finishLinkUrl" jdbcType="VARCHAR" /> <result column="finish_link_url" property="finishLinkUrl" jdbcType="VARCHAR" />
<result column="add_send_time" property="addSendTime" jdbcType="INTEGER" /> <result column="add_send_time" property="addSendTime" jdbcType="INTEGER" />
<result column="send_hour" property="sendHour" jdbcType="VARCHAR" /> <result column="send_hour" property="sendHour" jdbcType="VARCHAR" />
<result column="progress_guidance" property="progressGuidance" jdbcType="INTEGER" />
</resultMap> </resultMap>
<sql id="Base_Column_List" > <sql id="Base_Column_List" >
id, task_id, start_day, finish_confirm, finish_key_word, create_time, update_time,td_confirm,finish_link_introduce,finish_link_url id, task_id, start_day, finish_confirm, finish_key_word, create_time, update_time,td_confirm,finish_link_introduce,finish_link_url
,add_send_time,send_hour ,add_send_time,send_hour,progress_guidance
</sql> </sql>
<insert id="insert" parameterType="com.pcloud.book.timecontrol.entity.TimeControlTaskItem" useGeneratedKeys="true" keyProperty="id"> <insert id="insert" parameterType="com.pcloud.book.timecontrol.entity.TimeControlTaskItem" useGeneratedKeys="true" keyProperty="id">
insert into time_control_task_item(task_id, start_day, finish_confirm, finish_key_word, create_time, update_time insert into time_control_task_item(task_id, start_day, finish_confirm, finish_key_word, create_time, update_time
,td_confirm,finish_link_introduce,finish_link_url,add_send_time,send_hour) ,td_confirm,finish_link_introduce,finish_link_url,add_send_time,send_hour,progress_guidance)
values (#{taskId}, #{startDay}, #{finishConfirm}, #{finishKeyWord}, now(), now(),#{tdConfirm},#{finishLinkIntroduce},#{finishLinkUrl} values (#{taskId}, #{startDay}, #{finishConfirm}, #{finishKeyWord}, now(), now(),#{tdConfirm},#{finishLinkIntroduce},#{finishLinkUrl}
,#{addSendTime},#{sendHour}) ,#{addSendTime},#{sendHour},#{progressGuidance})
</insert> </insert>
<update id="updateTtaskItem" parameterType="com.pcloud.book.timecontrol.entity.TimeControlTaskItem"> <update id="updateTtaskItem" parameterType="com.pcloud.book.timecontrol.entity.TimeControlTaskItem">
...@@ -38,6 +39,7 @@ ...@@ -38,6 +39,7 @@
</if> </if>
add_send_time=#{addSendTime}, add_send_time=#{addSendTime},
send_hour=#{sendHour}, send_hour=#{sendHour},
progress_guidance=#{progressGuidance},
update_time = now() update_time = now()
where id = #{id} where id = #{id}
</update> </update>
...@@ -78,4 +80,12 @@ ...@@ -78,4 +80,12 @@
</foreach> </foreach>
</select> </select>
<select id="getTaskItemCount" parameterType="Integer" resultType="Integer">
SELECT
count(1)
FROM
time_control_task_item
WHERE
task_id = #{taskId}
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -238,4 +238,27 @@ ...@@ -238,4 +238,27 @@
WHERE subscribe_id =#{subscribeId} WHERE subscribe_id =#{subscribeId}
and working =1 and complete_state = 1 and working =1 and complete_state = 1
</select> </select>
<select id="getUserTaskItemProgress" resultType="com.pcloud.book.timecontrol.dto.TaskProgressItemDTO">
SELECT
s.id taskSendId,
s.task_id taskId,
s.task_item_id taskItemId,
CONCAT(s.send_day, ' ', s.send_hour) taskItemName,
s.complete_state completeState,
IF (i.id IS NULL, 0, 1) hasPrize
FROM
time_control_task_send s
LEFT JOIN time_control_task_prize_item i ON s.task_id = i.task_id
AND s.task_item_id = i.task_item_id
WHERE
s.task_id = #{taskId}
AND s.wx_user_id = #{wxUserId}
AND working = 1
GROUP BY
s.id
ORDER BY
s.send_day,
s.send_hour
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -59,4 +59,14 @@ ...@@ -59,4 +59,14 @@
where id = #{subscribeId} where id = #{subscribeId}
</update> </update>
<select id="getSubscribeStatics" parameterType="Integer" resultType="com.pcloud.book.timecontrol.dto.TaskProgressDTO">
SELECT
count(1) subscribeCount,
sum(IF(state = 2, 1, 0)) finishCount
FROM
time_control_task_subscribe
WHERE
task_id = #{taskId}
AND state IN (1, 2)
</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