Commit 8dd153da by 徐高华

群发

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