Commit 8dd153da by 徐高华

群发

parent 11e905c7
...@@ -46,8 +46,18 @@ public class GroupChatPlanDTO implements Serializable{ ...@@ -46,8 +46,18 @@ public class GroupChatPlanDTO implements Serializable{
private Integer successChatCount; private Integer successChatCount;
/**总群数*/ /**总群数*/
private Integer totalChatCount; private Integer totalChatCount;
// 1代发送 2已发送
public String getWxEnterpriseId() { private Integer sendFlag;
public Integer getSendFlag() {
return sendFlag;
}
public void setSendFlag(Integer sendFlag) {
this.sendFlag = sendFlag;
}
public String getWxEnterpriseId() {
return wxEnterpriseId; return wxEnterpriseId;
} }
......
...@@ -23,6 +23,8 @@ public interface GroupChatPlanMapper { ...@@ -23,6 +23,8 @@ public interface GroupChatPlanMapper {
public int deleteById(@Param("planId") Long planId, @Param("clerkId") String clerkId, public int deleteById(@Param("planId") Long planId, @Param("clerkId") String clerkId,
@Param("clerkName") String clerkName); @Param("clerkName") String clerkName);
public int updateSendFlag(@Param("planId") Long planId);
public int updateById(TabGroupChatPlan entity); public int updateById(TabGroupChatPlan entity);
public TabGroupChatPlan selectById(Long planId); public TabGroupChatPlan selectById(Long planId);
......
package com.gic.haoban.manage.service.entity.chat; package com.gic.haoban.manage.service.entity.chat;
import java.io.Serializable ; import java.io.Serializable;
/** /**
* *
...@@ -11,44 +11,54 @@ import java.io.Serializable ; ...@@ -11,44 +11,54 @@ import java.io.Serializable ;
* @Modify * @Modify
* @CopyRight * @CopyRight
*/ */
public class TabGroupChatPlan implements Serializable{ public class TabGroupChatPlan implements Serializable {
private static final long serialVersionUID = 21576537277600L; private static final long serialVersionUID = 21576537277600L;
private Long planId; private Long planId;
private String name; private String name;
private String remark; private String remark;
/**[{relation_id:素材id,content:回显示内容}]*/ /**[{relation_id:素材id,content:回显示内容}]*/
private String chatContent; private String chatContent;
private String creatorId; private String creatorId;
private String creatorName; private String creatorName;
private String modifierId; private String modifierId;
private String modifierName; private String modifierName;
private java.util.Date createTime; private java.util.Date createTime;
private java.util.Date updateTime; private java.util.Date updateTime;
/**0已删除 1有效*/ /**0已删除 1有效*/
private Integer statusFlag; private Integer statusFlag;
/**1立即发送 2定时发送*/ /**1立即发送 2定时发送*/
private Integer sendType; private Integer sendType;
private java.util.Date sendTime; private java.util.Date sendTime;
private java.util.Date startTime; private java.util.Date startTime;
private java.util.Date endTime; private java.util.Date endTime;
/**几天后失效*/ /**几天后失效*/
private Integer expireDays; private Integer expireDays;
private String staffIdList; private String staffIdList;
/**群主数量*/ /**群主数量*/
private Integer staffCount; private Integer staffCount;
/**已完成任务的群主数量*/ /**已完成任务的群主数量*/
private Integer sendCount; private Integer sendCount;
/**已送达数的群数*/ /**已送达数的群数*/
private Integer successChatCount; private Integer successChatCount;
/**总群数*/ /**总群数*/
private Integer totalChatCount; private Integer totalChatCount;
private String wxEnterpriseId; private String wxEnterpriseId;
private String enterpriseId; private String enterpriseId;
// 1代发送 2已发送
public String getWxEnterpriseId() { private Integer sendFlag;
public Integer getSendFlag() {
return sendFlag;
}
public void setSendFlag(Integer sendFlag) {
this.sendFlag = sendFlag;
}
public String getWxEnterpriseId() {
return wxEnterpriseId; return wxEnterpriseId;
} }
...@@ -80,137 +90,155 @@ public class TabGroupChatPlan implements Serializable{ ...@@ -80,137 +90,155 @@ public class TabGroupChatPlan implements Serializable{
this.modifierName = modifierName; this.modifierName = modifierName;
} }
public void setPlanId(Long planId){ public void setPlanId(Long planId) {
this.planId = planId; this.planId = planId;
} }
public Long getPlanId(){ public Long getPlanId() {
return planId; return planId;
} }
public void setName(String name){
this.name = name; public void setName(String name) {
} this.name = name;
}
public String getName(){
return name; public String getName() {
} return name;
public void setRemark(String remark){ }
this.remark = remark;
} public void setRemark(String remark) {
this.remark = remark;
public String getRemark(){ }
return remark;
} public String getRemark() {
public void setChatContent(String chatContent){ return remark;
this.chatContent = chatContent; }
}
public void setChatContent(String chatContent) {
public String getChatContent(){ this.chatContent = chatContent;
return chatContent; }
}
public void setCreatorId(String creatorId){ public String getChatContent() {
this.creatorId = creatorId; return chatContent;
} }
public String getCreatorId(){ public void setCreatorId(String creatorId) {
return creatorId; this.creatorId = creatorId;
} }
public void setCreatorName(String creatorName){
this.creatorName = creatorName; public String getCreatorId() {
} return creatorId;
}
public String getCreatorName(){
return creatorName; public void setCreatorName(String creatorName) {
} this.creatorName = creatorName;
public void setCreateTime(java.util.Date createTime){ }
this.createTime = createTime;
} public String getCreatorName() {
return creatorName;
public java.util.Date getCreateTime(){ }
return createTime;
} public void setCreateTime(java.util.Date createTime) {
public void setUpdateTime(java.util.Date updateTime){ this.createTime = createTime;
this.updateTime = updateTime; }
}
public java.util.Date getCreateTime() {
public java.util.Date getUpdateTime(){ return createTime;
return updateTime; }
}
public void setStatusFlag(Integer statusFlag){ public void setUpdateTime(java.util.Date updateTime) {
this.statusFlag = statusFlag; this.updateTime = updateTime;
} }
public Integer getStatusFlag(){ public java.util.Date getUpdateTime() {
return statusFlag; return updateTime;
} }
public void setSendType(Integer sendType){
this.sendType = sendType; public void setStatusFlag(Integer statusFlag) {
} this.statusFlag = statusFlag;
}
public Integer getSendType(){
return sendType; public Integer getStatusFlag() {
} return statusFlag;
public void setSendTime(java.util.Date sendTime){ }
this.sendTime = sendTime;
} public void setSendType(Integer sendType) {
this.sendType = sendType;
public java.util.Date getSendTime(){ }
return sendTime;
} public Integer getSendType() {
public void setStartTime(java.util.Date startTime){ return sendType;
this.startTime = startTime; }
}
public void setSendTime(java.util.Date sendTime) {
public java.util.Date getStartTime(){ this.sendTime = sendTime;
return startTime; }
}
public void setEndTime(java.util.Date endTime){ public java.util.Date getSendTime() {
this.endTime = endTime; return sendTime;
} }
public java.util.Date getEndTime(){ public void setStartTime(java.util.Date startTime) {
return endTime; this.startTime = startTime;
} }
public void setExpireDays(Integer expireDays){
this.expireDays = expireDays; public java.util.Date getStartTime() {
} return startTime;
}
public Integer getExpireDays(){
return expireDays; public void setEndTime(java.util.Date endTime) {
} this.endTime = endTime;
public void setStaffIdList(String staffIdList){ }
this.staffIdList = staffIdList;
} public java.util.Date getEndTime() {
return endTime;
public String getStaffIdList(){ }
return staffIdList;
} public void setExpireDays(Integer expireDays) {
public void setStaffCount(Integer staffCount){ this.expireDays = expireDays;
this.staffCount = staffCount; }
}
public Integer getExpireDays() {
public Integer getStaffCount(){ return expireDays;
return staffCount; }
}
public void setSendCount(Integer sendCount){ public void setStaffIdList(String staffIdList) {
this.sendCount = sendCount; this.staffIdList = staffIdList;
} }
public Integer getSendCount(){ public String getStaffIdList() {
return sendCount; return staffIdList;
} }
public void setSuccessChatCount(Integer successChatCount){
this.successChatCount = successChatCount; public void setStaffCount(Integer staffCount) {
} this.staffCount = staffCount;
}
public Integer getSuccessChatCount(){
return successChatCount; public Integer getStaffCount() {
} return staffCount;
public void setTotalChatCount(Integer totalChatCount){ }
this.totalChatCount = totalChatCount;
} public void setSendCount(Integer sendCount) {
this.sendCount = sendCount;
public Integer getTotalChatCount(){ }
return totalChatCount;
} public Integer getSendCount() {
return sendCount;
}
public void setSuccessChatCount(Integer successChatCount) {
this.successChatCount = successChatCount;
}
public Integer getSuccessChatCount() {
return successChatCount;
}
public void setTotalChatCount(Integer totalChatCount) {
this.totalChatCount = totalChatCount;
}
public Integer getTotalChatCount() {
return totalChatCount;
}
} }
\ No newline at end of file
...@@ -47,8 +47,18 @@ public class GroupChatPlanBO implements Serializable{ ...@@ -47,8 +47,18 @@ public class GroupChatPlanBO implements Serializable{
private Integer successChatCount; private Integer successChatCount;
/**总群数*/ /**总群数*/
private Integer totalChatCount; private Integer totalChatCount;
// 1代发送 2已发送
public String getWxEnterpriseId() { private Integer sendFlag;
public Integer getSendFlag() {
return sendFlag;
}
public void setSendFlag(Integer sendFlag) {
this.sendFlag = sendFlag;
}
public String getWxEnterpriseId() {
return wxEnterpriseId; return wxEnterpriseId;
} }
......
...@@ -101,22 +101,27 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService { ...@@ -101,22 +101,27 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
@Override @Override
public void save(GroupChatPlanDTO dto) { public void save(GroupChatPlanDTO dto) {
TabGroupChatPlan entity = EntityUtil.changeEntityByJSON(TabGroupChatPlan.class, dto); TabGroupChatPlan entity = EntityUtil.changeEntityByJSON(TabGroupChatPlan.class, dto);
if (null == dto.getPlanId()) { Long planId = dto.getPlanId();
entity.setPlanId(UniqueIdUtils.uniqueLong()); if (null == planId) {
planId = UniqueIdUtils.uniqueLong();
entity.setPlanId(planId);
if (entity.getSendType() == 1) {
entity.setSendTime(new Date());
}
this.groupChatPlanMapper.insert(entity); this.groupChatPlanMapper.insert(entity);
// 立即发送 // 立即发送
if (entity.getSendType() == 1) { if (entity.getSendType() == 1) {
this.sendMQ(entity.getPlanId()); this.sendMQ(entity.getPlanId());
}else { } else {
this.addTimer(entity.getPlanId(), entity.getSendTime(), 1); this.addOrDelTimer(entity.getPlanId(), entity.getSendTime(), 1);
} }
} else { } else {
this.groupChatPlanMapper.updateById(entity); this.groupChatPlanMapper.updateById(entity);
// 立即发送 // 立即发送
if (entity.getSendType() == 1) { if (entity.getSendType() == 1) {
this.sendMQ(entity.getPlanId()); this.sendMQ(entity.getPlanId());
}else { } else {
this.addTimer(entity.getPlanId(), entity.getSendTime(), 1); this.addOrDelTimer(entity.getPlanId(), entity.getSendTime(), 1);
} }
} }
} }
...@@ -144,6 +149,11 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService { ...@@ -144,6 +149,11 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
logger.info("计划不存在,planid={}", planId); logger.info("计划不存在,planid={}", planId);
return; return;
} }
if (plan.getSendFlag() == 2) {
logger.info("计划已执行过,planid={}", planId);
return;
}
this.groupChatPlanMapper.updateSendFlag(planId);
// 控制重复发送 // 控制重复发送
String[] staffIdList = plan.getStaffIdList().split(","); String[] staffIdList = plan.getStaffIdList().split(",");
String wxEnterpriseId = plan.getWxEnterpriseId(); String wxEnterpriseId = plan.getWxEnterpriseId();
...@@ -229,11 +239,11 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService { ...@@ -229,11 +239,11 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
} }
} }
} }
@Override @Override
public void del(String clerkId, String clerkName, Long planId) { public void del(String clerkId, String clerkName, Long planId) {
this.groupChatPlanMapper.deleteById(planId,clerkId,clerkName) ; this.groupChatPlanMapper.deleteById(planId, clerkId, clerkName);
this.addTimer(planId, new Date(), 0); this.addOrDelTimer(planId, new Date(), 0);
} }
@Override @Override
...@@ -281,7 +291,7 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService { ...@@ -281,7 +291,7 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
return retPage; return retPage;
} }
public void addTimer(Long planId, Date sendTime, int status) { public void addOrDelTimer(Long planId, Date sendTime, int status) {
QuartzTaskDTO quartzTask = new QuartzTaskDTO(); QuartzTaskDTO quartzTask = new QuartzTaskDTO();
quartzTask.setTaskStatus(status); quartzTask.setTaskStatus(status);
String taskTimeInfo = this.getTaskTime(sendTime); String taskTimeInfo = this.getTaskTime(sendTime);
......
...@@ -86,7 +86,7 @@ ...@@ -86,7 +86,7 @@
a. migrate_trainee_chat_cnt migrateTraineeChatCnt a. migrate_trainee_chat_cnt migrateTraineeChatCnt
from tab_haoban_group_chat_data a left join tab_haoban_staff b on a.staff_id = b.staff_id from tab_haoban_group_chat_data a left join tab_haoban_staff b on a.staff_id = b.staff_id
where a.wx_enterprise_id = #{wxEnterpriseId} where a.wx_enterprise_id = #{wxEnterpriseId}
and a.date >= #{startDate} and a.date <= #{endDate} and a.date >= #{startDate} and a.date <![CDATA[ <= ]]> #{endDate}
<if test="null != staffIdList and staffIdList.size > 0"> <if test="null != staffIdList and staffIdList.size > 0">
and a.staff_id in and a.staff_id in
<foreach collection="staffIdList" close=")" open="(" index="index" item="staffId" separator=","> <foreach collection="staffIdList" close=")" open="(" index="index" item="staffId" separator=",">
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
<result column="success_chat_count" property="successChatCount" /> <result column="success_chat_count" property="successChatCount" />
<result column="total_chat_count" property="totalChatCount" /> <result column="total_chat_count" property="totalChatCount" />
<result column="delete_flag" property="deleteFlag" /> <result column="delete_flag" property="deleteFlag" />
<result column="send_flag" property="sendFlag" />
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
plan_id, plan_id,
...@@ -51,7 +52,7 @@ ...@@ -51,7 +52,7 @@
send_count, send_count,
success_chat_count, success_chat_count,
total_chat_count , total_chat_count ,
wx_enterprise_id , enterprise_id wx_enterprise_id , enterprise_id , send_flag , delete_flag
</sql> </sql>
<!-- ===================== 新增 ======================== --> <!-- ===================== 新增 ======================== -->
<insert id="insert" <insert id="insert"
...@@ -78,7 +79,7 @@ ...@@ -78,7 +79,7 @@
staff_count, staff_count,
send_count, send_count,
success_chat_count, success_chat_count,
total_chat_count , wx_enterprise_id , enterprise_id , delete_flag total_chat_count , wx_enterprise_id , enterprise_id , delete_flag , send_flag
)VALUES( )VALUES(
#{planId}, #{planId},
#{name}, #{name},
...@@ -100,7 +101,7 @@ ...@@ -100,7 +101,7 @@
#{staffCount}, #{staffCount},
#{sendCount}, #{sendCount},
#{successChatCount}, #{successChatCount},
#{totalChatCount} , #{wxEnterpriseId} , #{enterpriseId} , 0 #{totalChatCount} , #{wxEnterpriseId} , #{enterpriseId} , 0 , 1
) )
]]> ]]>
</insert> </insert>
...@@ -111,8 +112,11 @@ ...@@ -111,8 +112,11 @@
tab_haoban_group_chat_plan SET delete_flag = 1 , modifierId = tab_haoban_group_chat_plan SET delete_flag = 1 , modifierId =
#{clerkId} , modifierName = #{clerkName} WHERE plan_id = #{planId} #{clerkId} , modifierName = #{clerkName} WHERE plan_id = #{planId}
</update> </update>
<update id="updateSendFlag">
UPDATE tab_haoban_group_chat_plan SET send_flag = 2 , send_time = now() WHERE plan_id = #{planId}
</update>
<!-- ==================更新 ========== --> <!-- ==================更新 ========== -->
<update id="updateById" <update id="updateById"
parameterType="com.gic.haoban.manage.service.entity.chat.TabGroupChatPlan"> parameterType="com.gic.haoban.manage.service.entity.chat.TabGroupChatPlan">
......
package com.gic.haoban.manage.web.controller.chat; package com.gic.haoban.manage.web.controller.chat;
import java.util.Date;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -48,12 +50,23 @@ public class GroupChatPlanController { ...@@ -48,12 +50,23 @@ public class GroupChatPlanController {
@RequestMapping("del") @RequestMapping("del")
public RestResponse<Object> del(Long planId) { public RestResponse<Object> del(Long planId) {
WebLoginDTO loginUser = AuthWebRequestUtil.getLoginUser(); WebLoginDTO loginUser = AuthWebRequestUtil.getLoginUser();
this.groupChatPlanApiService.del(loginUser.getClerkId(), loginUser.getClerkName() , planId); this.groupChatPlanApiService.del(loginUser.getClerkId(), loginUser.getClerkName(), planId);
return RestResponse.successResult(); return RestResponse.successResult();
} }
@RequestMapping("update") @RequestMapping("update")
public RestResponse<Object> update(@RequestBody GroupChatPlanDTO dto) { public RestResponse<Object> update(@RequestBody GroupChatPlanDTO dto) {
ServiceResponse<GroupChatPlanDTO> resp = this.groupChatPlanApiService.detail(dto.getPlanId());
GroupChatPlanDTO plan = resp.getResult();
if (null == plan) {
return RestResponse.failure("9999", "计划不存在");
}
if (plan.getSendType() == 1) {
return RestResponse.failure("9999", "已发送的不能编辑");
}
if (null != plan.getSendTime() && plan.getSendTime().before(new Date())) {
return RestResponse.failure("9999", "已发送的不能编辑");
}
WebLoginDTO loginUser = AuthWebRequestUtil.getLoginUser(); WebLoginDTO loginUser = AuthWebRequestUtil.getLoginUser();
dto.setModifierId(loginUser.getClerkId()); dto.setModifierId(loginUser.getClerkId());
dto.setModifierName(loginUser.getClerkName()); dto.setModifierName(loginUser.getClerkName());
......
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