From 047c1e0a816d4cf02b1e55e4724abc0d268530f3 Mon Sep 17 00:00:00 2001 From: YaoYuHang Date: Wed, 17 Mar 2021 11:10:51 +0800 Subject: [PATCH 01/40] =?UTF-8?q?=E7=A4=BE=E7=BE=A4=E8=BF=90=E8=90=A5=20-?= =?UTF-8?q?=20=E7=BE=A4SOP=20-=20=E7=A9=BA=E7=B4=A0=E6=9D=90insert=20SQL?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/WeKeywordGroupTaskMapper.java | 8 ------ .../WeCommunityKeywordToGroupServiceImpl.java | 25 +++++++++++++------ .../service/impl/WeGroupSopServiceImpl.java | 25 +++++++++++-------- .../impl/WePresTagGroupTaskServiceImpl.java | 2 -- .../mapper/wecom/WeKeywordGroupTaskMapper.xml | 7 ------ 5 files changed, 32 insertions(+), 35 deletions(-) diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeKeywordGroupTaskMapper.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeKeywordGroupTaskMapper.java index 998aa8602..fd17fc89f 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeKeywordGroupTaskMapper.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeKeywordGroupTaskMapper.java @@ -41,14 +41,6 @@ public interface WeKeywordGroupTaskMapper extends BaseMapper */ WeKeywordGroupTaskVo getTaskById(Long taskId); - /** - * 根据id列表批量删除任务 - * - * @param ids id列表 - * @return 删除行数 - */ - int batchRemoveTaskByIds(Long[] ids); - /** * 根据任务id获取对应所有的群聊名称 * diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCommunityKeywordToGroupServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCommunityKeywordToGroupServiceImpl.java index 1b9ffe440..bb9653255 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCommunityKeywordToGroupServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCommunityKeywordToGroupServiceImpl.java @@ -2,6 +2,7 @@ package com.linkwechat.wecom.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.linkwechat.common.utils.StringUtils; import com.linkwechat.wecom.domain.WeKeywordGroupTaskKeyword; import com.linkwechat.wecom.domain.WeKeywordGroupTask; import com.linkwechat.wecom.domain.WeGroupCode; @@ -96,9 +97,13 @@ public class WeCommunityKeywordToGroupServiceImpl extends ServiceImpl weKeywordGroupTaskKeywordList = Arrays.stream(keywords) - .map(word -> new WeKeywordGroupTaskKeyword(task.getTaskId(), word)).collect(Collectors.toList()); - taskKwMapper.batchBindsTaskKeyword(weKeywordGroupTaskKeywordList); + List taskKeywordList = Arrays + .stream(keywords) + .map(word -> new WeKeywordGroupTaskKeyword(task.getTaskId(), word)) + .collect(Collectors.toList()); + if (StringUtils.isNotEmpty(taskKeywordList)) { + taskKwMapper.batchBindsTaskKeyword(taskKeywordList); + } return 1; } return 0; @@ -120,9 +125,13 @@ public class WeCommunityKeywordToGroupServiceImpl extends ServiceImpl weKeywordGroupTaskKeywordList = Arrays.stream(keywords) - .map(word -> new WeKeywordGroupTaskKeyword(task.getTaskId(), word)).collect(Collectors.toList()); - taskKwMapper.batchBindsTaskKeyword(weKeywordGroupTaskKeywordList); + List taskKeywordList = Arrays + .stream(keywords) + .map(word -> new WeKeywordGroupTaskKeyword(task.getTaskId(), word)) + .collect(Collectors.toList()); + if (StringUtils.isNotEmpty(taskKeywordList)) { + taskKwMapper.batchBindsTaskKeyword(taskKeywordList); + } return 1; } return 0; @@ -141,7 +150,9 @@ public class WeCommunityKeywordToGroupServiceImpl extends ServiceImpl taskKwQueryWrapper = new QueryWrapper<>(); taskKwQueryWrapper.in("task_id", Arrays.asList(ids)); taskKwMapper.delete(taskKwQueryWrapper); - return taskMapper.batchRemoveTaskByIds(ids); + QueryWrapper taskQueryWrapper = new QueryWrapper<>(); + taskKwQueryWrapper.in("task_id", Arrays.asList(ids)); + return taskMapper.delete(taskQueryWrapper); } /** diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupSopServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupSopServiceImpl.java index 33b61ac8b..22970b8ae 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupSopServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupSopServiceImpl.java @@ -80,19 +80,21 @@ public class WeGroupSopServiceImpl extends ServiceImpl groupIdList, List materialIdList, List picList) { + public int addGroupSop(WeGroupSop weGroupSop, List groupIdList, List materialIdList, List picUrlList) { if (this.save(weGroupSop)) { Long ruleId = weGroupSop.getRuleId(); // 保存群聊及素材关联 this.saveChatAndMaterialBinds(ruleId, groupIdList, materialIdList); // 保存手动上传的图片素材 - List sopPicList = picList.stream().map(e -> new WeGroupSopPic(ruleId, e)).collect(Collectors.toList()); - sopPicMapper.batchSopPic(sopPicList); + List sopPicList = picUrlList.stream().map(picUrl -> new WeGroupSopPic(ruleId, picUrl)).collect(Collectors.toList()); + if (StringUtils.isNotEmpty(sopPicList)) { + sopPicMapper.batchSopPic(sopPicList); + } return 1; } return 0; @@ -104,12 +106,12 @@ public class WeGroupSopServiceImpl extends ServiceImpl groupIdList, List materialIdList, List picList) { + public int updateGroupSop(WeGroupSop weGroupSop, List groupIdList, List materialIdList, List picUrlList) { if (this.updateById(weGroupSop)) { Long ruleId = weGroupSop.getRuleId(); // 先删除旧数据 @@ -121,8 +123,10 @@ public class WeGroupSopServiceImpl extends ServiceImpl sopPicList = picList.stream().map(e -> new WeGroupSopPic(ruleId, e)).collect(Collectors.toList()); - sopPicMapper.batchSopPic(sopPicList); + List sopPicList = picUrlList.stream().map(picUrl -> new WeGroupSopPic(ruleId, picUrl)).collect(Collectors.toList()); + if (StringUtils.isNotEmpty(sopPicList)) { + sopPicMapper.batchSopPic(sopPicList); + } return 1; } return 0; @@ -166,7 +170,6 @@ public class WeGroupSopServiceImpl extends ServiceImpl picQueryWrapper = new QueryWrapper<>(); picQueryWrapper.eq("rule_id", ruleId); List sopPicList = sopPicMapper.selectList(picQueryWrapper); - List picList = sopPicList.stream().map(WeGroupSopPic::getPicUrl).collect(Collectors.toList()); - sopVo.setPicList(picList); + List picUrlList = sopPicList.stream().map(WeGroupSopPic::getPicUrl).collect(Collectors.toList()); + sopVo.setPicList(picUrlList); } } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WePresTagGroupTaskServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WePresTagGroupTaskServiceImpl.java index 00f662033..e44283859 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WePresTagGroupTaskServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WePresTagGroupTaskServiceImpl.java @@ -173,8 +173,6 @@ public class WePresTagGroupTaskServiceImpl extends ServiceImpl taskScopeQueryWrapper = new QueryWrapper<>(); taskScopeQueryWrapper.eq("task_id", taskId); diff --git a/linkwe-wecom/src/main/resources/mapper/wecom/WeKeywordGroupTaskMapper.xml b/linkwe-wecom/src/main/resources/mapper/wecom/WeKeywordGroupTaskMapper.xml index ac84e36fd..4a4c31e69 100644 --- a/linkwe-wecom/src/main/resources/mapper/wecom/WeKeywordGroupTaskMapper.xml +++ b/linkwe-wecom/src/main/resources/mapper/wecom/WeKeywordGroupTaskMapper.xml @@ -69,13 +69,6 @@ WHERE wkg.task_id = #{taskId} - - delete from we_keyword_group where task_id in - - #{id} - - - -- Gitee From 8e68d581af96190470a00c409597b10e987a2ab2 Mon Sep 17 00:00:00 2001 From: leejoker <1056650571@qq.com> Date: Wed, 17 Mar 2021 18:09:52 +0800 Subject: [PATCH 02/40] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WeTaskFissionCompleteRecordMapper.xml | 56 +++++++++++-------- .../wecom/WeTaskFissionRecordMapper.xml | 56 +++++++++++-------- sql/link-wechat.sql | 5 ++ 3 files changed, 72 insertions(+), 45 deletions(-) diff --git a/linkwe-wecom/src/main/resources/mapper/wecom/WeTaskFissionCompleteRecordMapper.xml b/linkwe-wecom/src/main/resources/mapper/wecom/WeTaskFissionCompleteRecordMapper.xml index 4c2d748b1..d8d265e49 100644 --- a/linkwe-wecom/src/main/resources/mapper/wecom/WeTaskFissionCompleteRecordMapper.xml +++ b/linkwe-wecom/src/main/resources/mapper/wecom/WeTaskFissionCompleteRecordMapper.xml @@ -1,50 +1,59 @@ + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + - - - - - + + + + + + - select id, task_fission_id, fission_record_id, customer_id, customer_name from we_task_fission_complete_record + select id, task_fission_id, fission_record_id, customer_id, customer_name, create_time from + we_task_fission_complete_record - - - and task_fission_id = #{taskFissionId} - and fission_record_id = #{fissionRecordId} - and customer_id = #{customerId} - and customer_name like concat('%', #{customerName}, '%') + + and task_fission_id = #{taskFissionId} + and fission_record_id = #{fissionRecordId} + and customer_id = #{customerId} + and customer_name like concat('%', #{customerName}, + '%') + - - where id = #{id} - - + + insert into we_task_fission_complete_record task_fission_id, fission_record_id, customer_id, customer_name, - + create_time, + #{taskFissionId}, #{fissionRecordId}, #{customerId}, #{customerName}, - + #{createTime}, + @@ -54,6 +63,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" fission_record_id = #{fissionRecordId}, customer_id = #{customerId}, customer_name = #{customerName}, + create_time = #{createTime}, where id = #{id} @@ -63,10 +73,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - delete from we_task_fission_complete_record where id in + delete from we_task_fission_complete_record where id in #{id} - + \ No newline at end of file diff --git a/linkwe-wecom/src/main/resources/mapper/wecom/WeTaskFissionRecordMapper.xml b/linkwe-wecom/src/main/resources/mapper/wecom/WeTaskFissionRecordMapper.xml index 3be487cea..9deeea1f1 100644 --- a/linkwe-wecom/src/main/resources/mapper/wecom/WeTaskFissionRecordMapper.xml +++ b/linkwe-wecom/src/main/resources/mapper/wecom/WeTaskFissionRecordMapper.xml @@ -1,37 +1,43 @@ + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + - - - - - - + + + + + + + + - select id, task_fission_id, customer_id, customer_name, fiss_num, config_id from we_task_fission_record + select id, task_fission_id, customer_id, customer_name, fiss_num, config_id, create_time, complete_time from + we_task_fission_record - - - and task_fission_id = #{taskFissionId} - and customer_id = #{customerId} - and customer_name like concat('%', #{customerName}, '%') - and fiss_num = #{fissNum} + + and task_fission_id = #{taskFissionId} + and customer_id = #{customerId} + and customer_name like concat('%', #{customerName}, + '%') + + and fiss_num = #{fissNum} - + - + insert into we_task_fission_record @@ -40,14 +46,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" customer_name, fiss_num, config_id, - + create_time, + complete_time, + #{taskFissionId}, #{customerId}, #{customerName}, #{fissNum}, #{configId}, - + #{createTime}, + #{completeTime}, + @@ -58,6 +68,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" customer_name = #{customerName}, fiss_num = #{fissNum}, config_id = #{configId}, + create_time = #{createTime}, + complete_time = #{completeTime}, where id = #{id} @@ -67,10 +79,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - delete from we_task_fission_record where id in + delete from we_task_fission_record where id in #{id} - + \ No newline at end of file diff --git a/sql/link-wechat.sql b/sql/link-wechat.sql index 593fe19e7..83ac9d7f7 100644 --- a/sql/link-wechat.sql +++ b/sql/link-wechat.sql @@ -25854,6 +25854,8 @@ CREATE TABLE `we_task_fission_complete_record` ( PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='裂变任务完成记录'; +ALTER TABLE we_task_fission_complete_record ADD create_time DATETIME NULL COMMENT '创建时间'; + -- ---------------------------- -- Records of we_task_fission_complete_record -- ---------------------------- @@ -25872,6 +25874,9 @@ CREATE TABLE `we_task_fission_record` ( PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='裂变任务记录'; +ALTER TABLE we_task_fission_record ADD create_time DATETIME NULL COMMENT '创建时间'; +ALTER TABLE we_task_fission_record ADD complete_time DATETIME NULL COMMENT '完成时间'; + -- ---------------------------- -- Records of we_task_fission_record -- ---------------------------- -- Gitee From bc49a82a4b0d86fff34b72827331c2f7194e4fae Mon Sep 17 00:00:00 2001 From: leejoker <1056650571@qq.com> Date: Wed, 17 Mar 2021 23:19:11 +0800 Subject: [PATCH 03/40] =?UTF-8?q?=E5=AD=97=E6=AE=B5=E8=A1=A5=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/linkwechat/wecom/domain/WeTaskFissionRecord.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeTaskFissionRecord.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeTaskFissionRecord.java index 7934ca334..819eb7216 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeTaskFissionRecord.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeTaskFissionRecord.java @@ -11,6 +11,8 @@ import lombok.NoArgsConstructor; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; +import java.util.Date; + /** * 裂变任务记录对象 we_task_fission_record * @@ -60,6 +62,9 @@ public class WeTaskFissionRecord extends BaseEntity { @ApiModelProperty("生成二维码配置id") private String configId; + @ApiModelProperty("完成时间") + private Date completeTime; + @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) @@ -69,6 +74,7 @@ public class WeTaskFissionRecord extends BaseEntity { .append("customerName", getCustomerName()) .append("fissNum", getFissNum()) .append("configId", getConfigId()) + .append("completeTime", getCompleteTime()) .toString(); } } -- Gitee From 3e1e66c2aa902e1274bdc18c3b284d15964c3e98 Mon Sep 17 00:00:00 2001 From: leejoker <1056650571@qq.com> Date: Wed, 17 Mar 2021 23:48:04 +0800 Subject: [PATCH 04/40] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=B5=B7=E6=8A=A5?= =?UTF-8?q?=E7=94=9F=E6=88=90bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/WePosterServiceImpl.java | 59 ++++++++----------- .../impl/WeTaskFissionServiceImpl.java | 14 ++--- 2 files changed, 32 insertions(+), 41 deletions(-) diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WePosterServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WePosterServiceImpl.java index 871385294..778102ab5 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WePosterServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WePosterServiceImpl.java @@ -2,13 +2,10 @@ package com.linkwechat.wecom.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.linkwechat.common.config.CosConfig; -import com.linkwechat.common.config.RuoYiConfig; import com.linkwechat.common.config.ServerConfig; import com.linkwechat.common.utils.file.FileUploadUtils; -import com.linkwechat.common.utils.file.FileUtils; import com.linkwechat.common.utils.img.ImageUtils; import com.linkwechat.common.utils.img.NetFileUtils; -import com.linkwechat.wecom.domain.WeCategory; import com.linkwechat.wecom.domain.WePoster; import com.linkwechat.wecom.domain.WePosterFont; import com.linkwechat.wecom.domain.WePosterSubassembly; @@ -17,13 +14,9 @@ import com.linkwechat.wecom.service.IWeCategoryService; import com.linkwechat.wecom.service.IWePosterFontService; import com.linkwechat.wecom.service.IWePosterService; import com.linkwechat.wecom.service.IWePosterSubassemblyService; -import org.apache.commons.fileupload.FileItem; -import org.apache.commons.fileupload.FileItemFactory; -import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; -import org.springframework.web.multipart.commons.CommonsMultipartFile; import javax.annotation.Resource; import javax.imageio.ImageIO; @@ -32,9 +25,8 @@ import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; -import java.net.NetworkInterface; -import java.util.*; import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -106,9 +98,9 @@ public class WePosterServiceImpl extends ServiceImpl i @Override public List list(Long categoryId, String name) { List fontList = this.lambdaQuery() - .eq(WePoster::getDelFlag,0) - .eq(categoryId != null,WePoster::getCategoryId,categoryId) - .like(com.linkwechat.common.utils.StringUtils.isNotBlank(name),WePoster::getTitle,name) + .eq(WePoster::getDelFlag, 0) + .eq(categoryId != null, WePoster::getCategoryId, categoryId) + .like(com.linkwechat.common.utils.StringUtils.isNotBlank(name), WePoster::getTitle, name) .orderByDesc(WePoster::getCreateTime) .list(); return fontList; @@ -122,7 +114,7 @@ public class WePosterServiceImpl extends ServiceImpl i */ @Override public String generateSimpleImg(WePoster poster) { - if(CollectionUtils.isEmpty(poster.getPosterSubassemblyList())){ + if (CollectionUtils.isEmpty(poster.getPosterSubassemblyList())) { poster.setSampleImgPath(poster.getBackgroundImgPath()); return poster.getBackgroundImgPath(); } @@ -134,24 +126,24 @@ public class WePosterServiceImpl extends ServiceImpl i } }) .filter(wePosterSubassembly -> { - if(existFontId.contains(wePosterSubassembly.getFontId()+"_"+wePosterSubassembly.getFontSize()+"_"+wePosterSubassembly.getFontStyle())){ + if (existFontId.contains(wePosterSubassembly.getFontId() + "_" + wePosterSubassembly.getFontSize() + "_" + wePosterSubassembly.getFontStyle())) { return false; - }else { - existFontId.add(wePosterSubassembly.getFontId()+"_"+wePosterSubassembly.getFontSize()+"_"+wePosterSubassembly.getFontStyle()); + } else { + existFontId.add(wePosterSubassembly.getFontId() + "_" + wePosterSubassembly.getFontSize() + "_" + wePosterSubassembly.getFontStyle()); return true; } }) .collect(Collectors.toMap(wePosterSubassembly -> { - return wePosterSubassembly.getFontId()+"_"+wePosterSubassembly.getFontSize()+"_"+wePosterSubassembly.getFontStyle(); - }, wePosterSubassembly -> posterFontService.getFont(wePosterSubassembly.getFontId(), wePosterSubassembly.getFontSize(),wePosterSubassembly.getFontStyle()))); - Map fileCallableMap = poster.getPosterSubassemblyList().stream().map(WePosterSubassembly::getImgPath).filter(StringUtils::isNotBlank).distinct().collect(Collectors.toMap(s->s, NetFileUtils::getNetFile)); + return wePosterSubassembly.getFontId() + "_" + wePosterSubassembly.getFontSize() + "_" + wePosterSubassembly.getFontStyle(); + }, wePosterSubassembly -> posterFontService.getFont(wePosterSubassembly.getFontId(), wePosterSubassembly.getFontSize(), wePosterSubassembly.getFontStyle()))); + Map fileCallableMap = poster.getPosterSubassemblyList().stream().map(WePosterSubassembly::getImgPath).filter(StringUtils::isNotBlank).distinct().collect(Collectors.toMap(s -> s, NetFileUtils::getNetFile)); if (CollectionUtils.isEmpty(fileCallableMap)) { fileCallableMap = new HashMap<>(); } fileCallableMap.put(poster.getBackgroundImgPath(), NetFileUtils.getNetFile(poster.getBackgroundImgPath())); Map bufferedImageMap = fileCallableMap.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, stringFileCallableEntry -> { try { - return ImageUtils.copyBufferedImage(ImageIO.read(new ByteArrayInputStream(Objects.requireNonNull(NetFileUtils.getByteArrayOutputStream(stringFileCallableEntry.getValue(), false)).toByteArray())),BufferedImage.TYPE_INT_ARGB); + return ImageUtils.copyBufferedImage(ImageIO.read(new ByteArrayInputStream(Objects.requireNonNull(NetFileUtils.getByteArrayOutputStream(stringFileCallableEntry.getValue(), false)).toByteArray())), BufferedImage.TYPE_INT_ARGB); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException("图片读取错误"); @@ -162,15 +154,15 @@ public class WePosterServiceImpl extends ServiceImpl i poster.setHeight(backgroundImg.getHeight()); poster.getPosterSubassemblyList().forEach(wePosterSubassembly -> { if (wePosterSubassembly.getType().equals(1)) { - Font font = fontMap.get(wePosterSubassembly.getFontId()+"_"+wePosterSubassembly.getFontSize()+"_"+wePosterSubassembly.getFontStyle()); + Font font = fontMap.get(wePosterSubassembly.getFontId() + "_" + wePosterSubassembly.getFontSize() + "_" + wePosterSubassembly.getFontStyle()); FontMetrics fontMetrics = ImageUtils.getFontMetrics(font); Color color; if (StringUtils.isNotBlank(wePosterSubassembly.getFontColor())) { - color = ImageUtils.getColor(wePosterSubassembly.getFontColor(),wePosterSubassembly.getAlpha()); + color = ImageUtils.getColor(wePosterSubassembly.getFontColor(), wePosterSubassembly.getAlpha()); } else { color = Color.BLACK; } - List lineTextList = ImageUtils.splitContext(wePosterSubassembly.getContent(), fontMetrics, wePosterSubassembly.getLeft(), wePosterSubassembly.getTop(), wePosterSubassembly.getWidth(), wePosterSubassembly.getHeight(),wePosterSubassembly.getWordSpace(),wePosterSubassembly.getLineSpace(), wePosterSubassembly.getFontTextAlign(),wePosterSubassembly.getVerticalType()); + List lineTextList = ImageUtils.splitContext(wePosterSubassembly.getContent(), fontMetrics, wePosterSubassembly.getLeft(), wePosterSubassembly.getTop(), wePosterSubassembly.getWidth(), wePosterSubassembly.getHeight(), wePosterSubassembly.getWordSpace(), wePosterSubassembly.getLineSpace(), wePosterSubassembly.getFontTextAlign(), wePosterSubassembly.getVerticalType()); lineTextList.forEach(lineText -> { lineText.getCharTextList().forEach(charText -> { ImageUtils.writeFontBufferedImage(backgroundImg, charText.getValue().toString(), charText.getPointX(), charText.getPointY(), font, color); @@ -179,16 +171,16 @@ public class WePosterServiceImpl extends ServiceImpl i }); } else { BufferedImage bufferedImage = bufferedImageMap.get(wePosterSubassembly.getImgPath()); - if (wePosterSubassembly.getAlpha() != null && wePosterSubassembly.getAlpha() >= 0){ - bufferedImage = ImageUtils.setBufferedImageAlpha(bufferedImage,wePosterSubassembly.getAlpha(),BufferedImage.TYPE_INT_ARGB); + if (wePosterSubassembly.getAlpha() != null && wePosterSubassembly.getAlpha() >= 0) { + bufferedImage = ImageUtils.setBufferedImageAlpha(bufferedImage, wePosterSubassembly.getAlpha(), BufferedImage.TYPE_INT_ARGB); } bufferedImage = ImageUtils.fixedDimensionBufferedImage(bufferedImage, BufferedImage.TYPE_INT_ARGB, wePosterSubassembly.getWidth(), wePosterSubassembly.getHeight()); - if(wePosterSubassembly.getRotate() == null){ + if (wePosterSubassembly.getRotate() == null) { ImageUtils.mergeBufferedImage(backgroundImg, bufferedImage, wePosterSubassembly.getLeft(), wePosterSubassembly.getTop()); - }else { - int x = wePosterSubassembly.getLeft() + bufferedImage.getWidth()/2; - int y = wePosterSubassembly.getTop() + bufferedImage.getHeight()/2; - bufferedImage = ImageUtils.rotateImage(bufferedImage,wePosterSubassembly.getRotate()); + } else { + int x = wePosterSubassembly.getLeft() + bufferedImage.getWidth() / 2; + int y = wePosterSubassembly.getTop() + bufferedImage.getHeight() / 2; + bufferedImage = ImageUtils.rotateImage(bufferedImage, wePosterSubassembly.getRotate()); x = x - bufferedImage.getWidth() / 2; y = y - bufferedImage.getHeight() / 2; ImageUtils.mergeBufferedImage(backgroundImg, bufferedImage, x, y); @@ -199,15 +191,14 @@ public class WePosterServiceImpl extends ServiceImpl i ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); try { ImageIO.write(backgroundImg, "png", byteArrayOutputStream); - NetFileUtils.StreamMultipartFile streamMultipartFile = new NetFileUtils.StreamMultipartFile(System.currentTimeMillis()+".jpg",byteArrayOutputStream.toByteArray()); + NetFileUtils.StreamMultipartFile streamMultipartFile = new NetFileUtils.StreamMultipartFile(System.currentTimeMillis() + ".jpg", byteArrayOutputStream.toByteArray()); byteArrayOutputStream.close(); - String path = FileUploadUtils.upload2Cos(streamMultipartFile,cosConfig); + String path = FileUploadUtils.upload2Cos(streamMultipartFile, cosConfig); poster.setSampleImgPath(cosConfig.getImgUrlPrefix() + path); + return poster.getSampleImgPath(); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException("图片生成错误"); } - - return null; } } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java index 56702bab4..29b9b5d85 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java @@ -277,21 +277,21 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { } private String getUserFissionQrcode(String fissionTargetId, WeTaskFissionRecord record) { - WeExternalContactDto dto = null; + String qrcode; if (StringUtils.isNotBlank(record.getConfigId())) { - dto = weExternalContactClient.getContactWay(record.getConfigId()); - } - if (dto == null) { + qrcode = record.getConfigId(); + } else { //获取二维码 WeExternalContactDto.WeContactWay contactWay = posterContactWay(fissionTargetId, record.getId()); - dto = weExternalContactClient.addContactWay(contactWay); - record.setConfigId(dto.getConfig_id()); + WeExternalContactDto dto = weExternalContactClient.addContactWay(contactWay); + record.setConfigId(dto.getQr_code()); int updateResult = weTaskFissionRecordService.updateWeTaskFissionRecord(record); if (updateResult <= 0) { throw new RuntimeException("生成海报异常:更新裂变记录失败"); } + qrcode = dto.getQr_code(); } - return dto.getQr_code(); + return qrcode; } private String getGroupFissionQrcode(Long taskFissionId, String fissionTargetId, WeTaskFissionRecord record, WeUser user) { -- Gitee From e1dedde8f3e6ed7497e28e6ab716d7fa8dfc2284 Mon Sep 17 00:00:00 2001 From: leejoker <1056650571@qq.com> Date: Thu, 18 Mar 2021 09:03:10 +0800 Subject: [PATCH 05/40] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../linkwechat/wecom/domain/WeTaskFissionRecord.java | 6 +++--- .../wecom/service/impl/WeTaskFissionServiceImpl.java | 8 ++++---- .../mapper/wecom/WeTaskFissionRecordMapper.xml | 10 +++++----- sql/link-wechat.sql | 2 +- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeTaskFissionRecord.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeTaskFissionRecord.java index 819eb7216..8f4ff8e0d 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeTaskFissionRecord.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeTaskFissionRecord.java @@ -59,8 +59,8 @@ public class WeTaskFissionRecord extends BaseEntity { @ApiModelProperty("裂变客户数量") private Long fissNum; - @ApiModelProperty("生成二维码配置id") - private String configId; + @ApiModelProperty("生成二维码") + private String qrCode; @ApiModelProperty("完成时间") private Date completeTime; @@ -73,7 +73,7 @@ public class WeTaskFissionRecord extends BaseEntity { .append("customerId", getCustomerId()) .append("customerName", getCustomerName()) .append("fissNum", getFissNum()) - .append("configId", getConfigId()) + .append("qrCode", getQrCode()) .append("completeTime", getCompleteTime()) .toString(); } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java index 29b9b5d85..a7b864b2c 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java @@ -278,13 +278,13 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { private String getUserFissionQrcode(String fissionTargetId, WeTaskFissionRecord record) { String qrcode; - if (StringUtils.isNotBlank(record.getConfigId())) { - qrcode = record.getConfigId(); + if (StringUtils.isNotBlank(record.getQrCode())) { + qrcode = record.getQrCode(); } else { //获取二维码 WeExternalContactDto.WeContactWay contactWay = posterContactWay(fissionTargetId, record.getId()); WeExternalContactDto dto = weExternalContactClient.addContactWay(contactWay); - record.setConfigId(dto.getQr_code()); + record.setQrCode(dto.getQr_code()); int updateResult = weTaskFissionRecordService.updateWeTaskFissionRecord(record); if (updateResult <= 0) { throw new RuntimeException("生成海报异常:更新裂变记录失败"); @@ -295,7 +295,7 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { } private String getGroupFissionQrcode(Long taskFissionId, String fissionTargetId, WeTaskFissionRecord record, WeUser user) { - String qrCode = record.getConfigId(); + String qrCode = record.getQrCode(); String avatar = user.getAvatarMediaid(); WeMaterial file = weMaterialService.findWeMaterialById(Long.parseLong(avatar)); if (StringUtils.isBlank(qrCode)) { diff --git a/linkwe-wecom/src/main/resources/mapper/wecom/WeTaskFissionRecordMapper.xml b/linkwe-wecom/src/main/resources/mapper/wecom/WeTaskFissionRecordMapper.xml index 9deeea1f1..5ebdc6ec4 100644 --- a/linkwe-wecom/src/main/resources/mapper/wecom/WeTaskFissionRecordMapper.xml +++ b/linkwe-wecom/src/main/resources/mapper/wecom/WeTaskFissionRecordMapper.xml @@ -10,13 +10,13 @@ - + - select id, task_fission_id, customer_id, customer_name, fiss_num, config_id, create_time, complete_time from + select id, task_fission_id, customer_id, customer_name, fiss_num, qr_code, create_time, complete_time from we_task_fission_record @@ -45,7 +45,7 @@ customer_id, customer_name, fiss_num, - config_id, + qr_code, create_time, complete_time, @@ -54,7 +54,7 @@ #{customerId}, #{customerName}, #{fissNum}, - #{configId}, + #{qrCode}, #{createTime}, #{completeTime}, @@ -67,7 +67,7 @@ customer_id = #{customerId}, customer_name = #{customerName}, fiss_num = #{fissNum}, - config_id = #{configId}, + qr_code = #{qrCode}, create_time = #{createTime}, complete_time = #{completeTime}, diff --git a/sql/link-wechat.sql b/sql/link-wechat.sql index 83ac9d7f7..389c8034d 100644 --- a/sql/link-wechat.sql +++ b/sql/link-wechat.sql @@ -25870,7 +25870,7 @@ CREATE TABLE `we_task_fission_record` ( `customer_id` varchar(64) NOT NULL DEFAULT 'NULL' COMMENT '裂变任务客户id', `customer_name` varchar(100) DEFAULT NULL COMMENT '裂变任务客户姓名', `fiss_num` int(11) NOT NULL DEFAULT '0' COMMENT '裂变客户数量', - `config_id` varchar(64) NOT NULL DEFAULT 'NULL' COMMENT '生成二维码配置id', + `qr_code` varchar(500) NOT NULL DEFAULT 'NULL' COMMENT '二维码链接', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='裂变任务记录'; -- Gitee From 8f2918e70113eb7047fde35fece919ac806cf99e Mon Sep 17 00:00:00 2001 From: leejoker <1056650571@qq.com> Date: Thu, 18 Mar 2021 09:32:40 +0800 Subject: [PATCH 06/40] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wecom/domain/WeTaskFissionRecord.java | 6 +- .../impl/WeTaskFissionServiceImpl.java | 91 ++++++++++--------- .../wecom/WeTaskFissionRecordMapper.xml | 8 +- sql/link-wechat.sql | 1 + 4 files changed, 59 insertions(+), 47 deletions(-) diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeTaskFissionRecord.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeTaskFissionRecord.java index 8f4ff8e0d..824d6bd26 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeTaskFissionRecord.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeTaskFissionRecord.java @@ -59,9 +59,12 @@ public class WeTaskFissionRecord extends BaseEntity { @ApiModelProperty("裂变客户数量") private Long fissNum; - @ApiModelProperty("生成二维码") + @ApiModelProperty("二维码链接") private String qrCode; + @ApiModelProperty("海报链接") + private String poster; + @ApiModelProperty("完成时间") private Date completeTime; @@ -74,6 +77,7 @@ public class WeTaskFissionRecord extends BaseEntity { .append("customerName", getCustomerName()) .append("fissNum", getFissNum()) .append("qrCode", getQrCode()) + .append("poster", getPoster()) .append("completeTime", getCompleteTime()) .toString(); } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java index a7b864b2c..a30ebcfd0 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java @@ -230,13 +230,26 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { WeUser user = weUserService.selectWeUserById(weTaskFissionPosterDTO.getUserId()); if (user != null) { WeTaskFissionRecord record = getTaskFissionRecordId(weTaskFissionPosterDTO.getTaskFissionId(), user.getUserId(), user.getName()); - String qrcode = getPosterQRCode(weTaskFissionPosterDTO.getFissionTargetId(), record, user); - WePoster poster = wePosterService.selectOne(weTaskFissionPosterDTO.getPosterId()); - poster.getPosterSubassemblyList().stream().filter(Objects::nonNull) - .filter(wePosterSubassembly -> wePosterSubassembly.getType() == 3).forEach(wePosterSubassembly -> { - wePosterSubassembly.setImgPath(qrcode); - }); - return wePosterService.generateSimpleImg(poster); + String posterUrl = record.getPoster(); + if (StringUtils.isBlank(posterUrl)) { + String qrcode = getPosterQRCode(weTaskFissionPosterDTO.getFissionTargetId(), record, user); + if (StringUtils.isBlank(qrcode)) { + throw new WeComException("生成的二维码为空"); + } + WePoster poster = wePosterService.selectOne(weTaskFissionPosterDTO.getPosterId()); + poster.getPosterSubassemblyList().stream().filter(Objects::nonNull) + .filter(wePosterSubassembly -> wePosterSubassembly.getType() == 3).forEach(wePosterSubassembly -> { + wePosterSubassembly.setImgPath(qrcode); + }); + posterUrl = wePosterService.generateSimpleImg(poster); + if (StringUtils.isBlank(posterUrl)) { + throw new WeComException("生成的海报为空"); + } + record.setQrCode(qrcode); + record.setPoster(posterUrl); + weTaskFissionRecordService.updateWeTaskFissionRecord(record); + } + return posterUrl; } else { throw new RuntimeException("客户信息不存在"); } @@ -259,57 +272,47 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { } private String getPosterQRCode(String fissionTargetId, WeTaskFissionRecord record, WeUser user) { - String qrCode; - Long taskFissionId = record.getTaskFissionId(); - WeTaskFission taskFission = weTaskFissionMapper.selectWeTaskFissionById(taskFissionId); - Integer taskFissionType = taskFission.getFissionType(); - if (TaskFissionType.USER_FISSION.getCode().equals(taskFissionType)) { - qrCode = getUserFissionQrcode(fissionTargetId, record); - } else if (TaskFissionType.GROUP_FISSION.getCode().equals(taskFissionType)) { - qrCode = getGroupFissionQrcode(taskFissionId, fissionTargetId, record, user); - } else { - throw new WeComException("错误的任务类型"); - } + String qrCode = record.getQrCode(); if (StringUtils.isBlank(qrCode)) { - throw new WeComException("生成的二维码为空"); + Long taskFissionId = record.getTaskFissionId(); + WeTaskFission taskFission = weTaskFissionMapper.selectWeTaskFissionById(taskFissionId); + Integer taskFissionType = taskFission.getFissionType(); + if (TaskFissionType.USER_FISSION.getCode().equals(taskFissionType)) { + qrCode = getUserFissionQrcode(fissionTargetId, record); + } else if (TaskFissionType.GROUP_FISSION.getCode().equals(taskFissionType)) { + qrCode = getGroupFissionQrcode(taskFissionId, fissionTargetId, record, user); + } else { + throw new WeComException("错误的任务类型"); + } } return qrCode; } private String getUserFissionQrcode(String fissionTargetId, WeTaskFissionRecord record) { - String qrcode; - if (StringUtils.isNotBlank(record.getQrCode())) { - qrcode = record.getQrCode(); - } else { - //获取二维码 - WeExternalContactDto.WeContactWay contactWay = posterContactWay(fissionTargetId, record.getId()); - WeExternalContactDto dto = weExternalContactClient.addContactWay(contactWay); - record.setQrCode(dto.getQr_code()); - int updateResult = weTaskFissionRecordService.updateWeTaskFissionRecord(record); - if (updateResult <= 0) { - throw new RuntimeException("生成海报异常:更新裂变记录失败"); - } + //获取二维码 + String qrcode = null; + WeExternalContactDto.WeContactWay contactWay = posterContactWay(fissionTargetId, record.getId()); + WeExternalContactDto dto = weExternalContactClient.addContactWay(contactWay); + if (dto != null) { qrcode = dto.getQr_code(); } return qrcode; } private String getGroupFissionQrcode(Long taskFissionId, String fissionTargetId, WeTaskFissionRecord record, WeUser user) { - String qrCode = record.getQrCode(); + String qrCode = null; String avatar = user.getAvatarMediaid(); WeMaterial file = weMaterialService.findWeMaterialById(Long.parseLong(avatar)); - if (StringUtils.isBlank(qrCode)) { - String content = "/wecom/fission/complete/" + taskFissionId + "/records/" + record.getId(); - BufferedImage bufferedImage = QREncode.crateQRCode(content, file.getMaterialUrl()); - if (bufferedImage != null) { - try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) { - ImageIO.write(bufferedImage, "png", byteArrayOutputStream); - NetFileUtils.StreamMultipartFile streamMultipartFile = new NetFileUtils.StreamMultipartFile(System.currentTimeMillis() + ".jpg", byteArrayOutputStream.toByteArray()); - qrCode = FileUploadUtils.upload2Cos(streamMultipartFile, cosConfig); - } catch (Exception e) { - log.warn("生成海报二维码异常, fissionTargetId={}, record={}, user={}, exception={}", fissionTargetId, record, user, ExceptionUtils.getStackTrace(e)); - throw new WeComException("生成二维码异常"); - } + String content = "/wecom/fission/complete/" + taskFissionId + "/records/" + record.getId(); + BufferedImage bufferedImage = QREncode.crateQRCode(content, file.getMaterialUrl()); + if (bufferedImage != null) { + try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) { + ImageIO.write(bufferedImage, "png", byteArrayOutputStream); + NetFileUtils.StreamMultipartFile streamMultipartFile = new NetFileUtils.StreamMultipartFile(System.currentTimeMillis() + ".jpg", byteArrayOutputStream.toByteArray()); + qrCode = FileUploadUtils.upload2Cos(streamMultipartFile, cosConfig); + } catch (Exception e) { + log.warn("生成海报二维码异常, fissionTargetId={}, record={}, user={}, exception={}", fissionTargetId, record, user, ExceptionUtils.getStackTrace(e)); + throw new WeComException("生成二维码异常"); } } return qrCode; diff --git a/linkwe-wecom/src/main/resources/mapper/wecom/WeTaskFissionRecordMapper.xml b/linkwe-wecom/src/main/resources/mapper/wecom/WeTaskFissionRecordMapper.xml index 5ebdc6ec4..55ec9d6f8 100644 --- a/linkwe-wecom/src/main/resources/mapper/wecom/WeTaskFissionRecordMapper.xml +++ b/linkwe-wecom/src/main/resources/mapper/wecom/WeTaskFissionRecordMapper.xml @@ -11,12 +11,13 @@ + - select id, task_fission_id, customer_id, customer_name, fiss_num, qr_code, create_time, complete_time from + select id, task_fission_id, customer_id, customer_name, fiss_num, qr_code, poster, create_time, complete_time from we_task_fission_record @@ -46,6 +47,7 @@ customer_name, fiss_num, qr_code, + poster, create_time, complete_time, @@ -55,6 +57,7 @@ #{customerName}, #{fissNum}, #{qrCode}, + #{poster}, #{createTime}, #{completeTime}, @@ -67,7 +70,8 @@ customer_id = #{customerId}, customer_name = #{customerName}, fiss_num = #{fissNum}, - qr_code = #{qrCode}, + qr_code = #{qrCode}, + poster = #{poster}, create_time = #{createTime}, complete_time = #{completeTime}, diff --git a/sql/link-wechat.sql b/sql/link-wechat.sql index 389c8034d..58fedfe62 100644 --- a/sql/link-wechat.sql +++ b/sql/link-wechat.sql @@ -25876,6 +25876,7 @@ CREATE TABLE `we_task_fission_record` ( ALTER TABLE we_task_fission_record ADD create_time DATETIME NULL COMMENT '创建时间'; ALTER TABLE we_task_fission_record ADD complete_time DATETIME NULL COMMENT '完成时间'; +ALTER TABLE we_task_fission_record ADD poster varchar(500) DEFAULT NULL NULL COMMENT '海报链接'; -- ---------------------------- -- Records of we_task_fission_record -- Gitee From dd65f8f3b2d9f0e3503e2201139cecc34bc6e916 Mon Sep 17 00:00:00 2001 From: sunxiwang Date: Thu, 18 Mar 2021 18:15:51 +0800 Subject: [PATCH 07/40] =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=AE=9D=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wecom/WeTaskFissionController.java | 14 ++++ .../domain/dto/WeTaskFissionPosterDTO.java | 13 +++ .../WeCallBackAddExternalContactImpl.java | 41 +++++----- .../wecom/service/IWeTaskFissionService.java | 3 + .../impl/WeTaskFissionRecordServiceImpl.java | 2 +- .../impl/WeTaskFissionServiceImpl.java | 82 +++++++++++++------ 6 files changed, 109 insertions(+), 46 deletions(-) diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java index 139c2dc28..7557e6761 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java @@ -12,6 +12,7 @@ import com.linkwechat.common.core.page.TableDataInfo; import com.linkwechat.common.enums.BusinessType; import com.linkwechat.common.utils.file.FileUploadUtils; import com.linkwechat.common.utils.poi.ExcelUtil; +import com.linkwechat.wecom.domain.WeCustomer; import com.linkwechat.wecom.domain.WeTaskFission; import com.linkwechat.wecom.domain.dto.WeChatUserDTO; import com.linkwechat.wecom.domain.dto.WeTaskFissionPosterDTO; @@ -19,6 +20,7 @@ import com.linkwechat.wecom.domain.query.WeTaskFissionStatisticQO; import com.linkwechat.wecom.service.IWeTaskFissionService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; @@ -205,4 +207,16 @@ public class WeTaskFissionController extends BaseController { json.put("rewardImageUrl", url); return AjaxResult.success(json); } + + + /** + * 根据任务id和uuid获取添加客户列表 + */ + @ApiOperation(value = "根据任务id和uuid获取添加客户列表", httpMethod = "GET") + @PreAuthorize("@ss.hasPermi('wecom:fission:getCustomerListById')") + @Log(title = "根据任务id和uuid获取添加客户列表", businessType = BusinessType.OTHER) + @GetMapping("/getCustomerListById/{unionId}/{fissionId}") + public AjaxResult> getCustomerListById(@ApiParam("微信用户id") String unionId,@ApiParam("任务id") String fissionId) { + return AjaxResult.success(weTaskFissionService.getCustomerListById(unionId, fissionId)); + } } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WeTaskFissionPosterDTO.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WeTaskFissionPosterDTO.java index f59a77293..1daef8acd 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WeTaskFissionPosterDTO.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WeTaskFissionPosterDTO.java @@ -1,5 +1,7 @@ package com.linkwechat.wecom.domain.dto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** @@ -7,10 +9,21 @@ import lombok.Data; * @version 1.0 * @date 2021/1/27 16:42 */ +@ApiModel @Data public class WeTaskFissionPosterDTO { + @ApiModelProperty("客户id(微信用户Id)") + private String unionId; + + @ApiModelProperty("企微成员id") private String userId; + + @ApiModelProperty("任务id") private Long taskFissionId; + + @ApiModelProperty("裂变目标id") private String fissionTargetId; + + @ApiModelProperty("海报id") private Long posterId; } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/factory/impl/customer/WeCallBackAddExternalContactImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/factory/impl/customer/WeCallBackAddExternalContactImpl.java index 630ecaa0b..a9d0828e8 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/factory/impl/customer/WeCallBackAddExternalContactImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/factory/impl/customer/WeCallBackAddExternalContactImpl.java @@ -2,6 +2,7 @@ package com.linkwechat.wecom.factory.impl.customer; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.linkwechat.common.constant.WeConstans; import com.linkwechat.common.enums.MediaType; import com.linkwechat.common.utils.StringUtils; import com.linkwechat.wecom.domain.*; @@ -54,27 +55,27 @@ public class WeCallBackAddExternalContactImpl extends WeEventStrategy { weCustomerService.getCustomersInfoAndSynchWeCustomer(message.getExternalUserId()); } if (message.getState() != null && message.getWelcomeCode() != null) { - if (isNumeric(message.getState())) { - taskFissionRecordHandle(message.getState(), message.getWelcomeCode(), message.getExternalUserId()); + if (isFission(message.getState())) { + taskFissionRecordHandle(message.getState(), message.getWelcomeCode(), message.getUserId(), message.getExternalUserId()); + }else { + empleCodeHandle(message.getState(), message.getWelcomeCode(), message.getUserId(), message.getExternalUserId()); } - empleCodeHandle(message.getState(), message.getWelcomeCode(), message.getUserId(), message.getExternalUserId()); } } //裂变任务处理 - private void taskFissionRecordHandle(String state, String wecomCode, String externalUserId) { + private void taskFissionRecordHandle(String state, String wecomCode, String userId, String externalUserId) { //查询裂变客户任务记录 - WeCustomer weCustomer = weCustomerService.selectWeCustomerById(externalUserId); - WeTaskFissionRecord weTaskFissionRecord = weTaskFissionRecordService - .selectWeTaskFissionRecordByIdAndCustomerId(Long.valueOf(state),weCustomer.getUnionid()); + String fissionRecordId = state.substring(WeConstans.FISSION_PREFIX.length()); + WeTaskFissionRecord weTaskFissionRecord = weTaskFissionRecordService.selectWeTaskFissionRecordById(Long.valueOf(fissionRecordId)); if (weTaskFissionRecord != null) { - Long fissNum = weTaskFissionRecord.getFissNum() + 1; - weTaskFissionRecord.setFissNum(fissNum); - weTaskFissionRecordService.updateWeTaskFissionRecord(weTaskFissionRecord); - //查询裂变任务详情 WeTaskFission weTaskFission = weTaskFissionService .selectWeTaskFissionById(weTaskFissionRecord.getTaskFissionId()); + + Long fissNum = weTaskFissionRecord.getFissNum() + 1; + weTaskFissionRecord.setFissNum(fissNum); + if (weTaskFission != null){ //发送欢迎语 String welcomeMsg = weTaskFission.getWelcomeMsg(); @@ -85,15 +86,18 @@ public class WeCallBackAddExternalContactImpl extends WeEventStrategy { //裂变数量完成任务处理,消费兑换码 if (fissNum >= weTaskFission.getFissNum()){ + weTaskFissionRecord.setCompleteTime(new Date()); WeTaskFissionReward reward = new WeTaskFissionReward(); reward.setTaskFissionId(weTaskFissionRecord.getTaskFissionId()); reward.setRewardCodeStatus(0); List weTaskFissionRewardList = weTaskFissionRewardService.selectWeTaskFissionRewardList(reward); WeTaskFissionReward fissionReward = weTaskFissionRewardList.get(0); - fissionReward.setRewardUser(weCustomer.getName()); - fissionReward.setRewardUserId(weCustomer.getExternalUserid()); + fissionReward.setRewardUser(weTaskFissionRecord.getCustomerName()); + fissionReward.setRewardUserId(weTaskFissionRecord.getCustomerId()); weTaskFissionRewardService.updateWeTaskFissionReward(fissionReward); } + + weTaskFissionRecordService.updateWeTaskFissionRecord(weTaskFissionRecord); } } @@ -156,14 +160,11 @@ public class WeCallBackAddExternalContactImpl extends WeEventStrategy { } } - private boolean isNumeric(String str) { - try { - new BigDecimal(str); - } catch (Exception e) { - //异常 说明包含非数字。 - return false; + private boolean isFission(String str) { + if (str.indexOf(WeConstans.FISSION_PREFIX) != -1){ + return true; } - return true; + return false; } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionService.java index 905904bd7..8398d8bae 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionService.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionService.java @@ -1,5 +1,6 @@ package com.linkwechat.wecom.service; +import com.linkwechat.wecom.domain.WeCustomer; import com.linkwechat.wecom.domain.WeTaskFission; import com.linkwechat.wecom.domain.dto.WeChatUserDTO; import com.linkwechat.wecom.domain.dto.WeTaskFissionPosterDTO; @@ -83,4 +84,6 @@ public interface IWeTaskFissionService { * @param taskFissionRecordId */ public void completeFissionRecord(Long taskFissionId, Long taskFissionRecordId, WeChatUserDTO weChatUserDTO); + + List getCustomerListById(String unionId, String fissionId); } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionRecordServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionRecordServiceImpl.java index 3a172a899..7e77796d3 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionRecordServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionRecordServiceImpl.java @@ -90,7 +90,7 @@ public class WeTaskFissionRecordServiceImpl extends ServiceImpl() - .eq(WeTaskFissionRecord::getId,id) + .eq(WeTaskFissionRecord::getTaskFissionId,id) .eq(WeTaskFissionRecord::getCustomerId,customerId)); } } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java index a30ebcfd0..734b14a05 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java @@ -2,6 +2,7 @@ package com.linkwechat.wecom.service.impl; import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.fasterxml.jackson.core.JsonProcessingException; import com.linkwechat.common.config.CosConfig; import com.linkwechat.common.constant.WeConstans; @@ -34,9 +35,7 @@ import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.text.ParseException; -import java.util.Date; -import java.util.List; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; /** @@ -67,6 +66,10 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { @Autowired private IWeMaterialService weMaterialService; @Autowired + private IWeCustomerService weCustomerService; + @Autowired + private IWeFlowerCustomerRelService weFlowerCustomerRelService; + @Autowired private IWeTaskFissionCompleteRecordService weTaskFissionCompleteRecordService; @Autowired private CosConfig cosConfig; @@ -227,12 +230,14 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { @Override @Transactional public String fissionPosterGenerate(WeTaskFissionPosterDTO weTaskFissionPosterDTO) { - WeUser user = weUserService.selectWeUserById(weTaskFissionPosterDTO.getUserId()); - if (user != null) { - WeTaskFissionRecord record = getTaskFissionRecordId(weTaskFissionPosterDTO.getTaskFissionId(), user.getUserId(), user.getName()); + WeCustomer weCustomer = weCustomerService.getOne(new LambdaQueryWrapper() + .eq(WeCustomer::getUnionid, weTaskFissionPosterDTO.getUnionId())); + if (weCustomer != null) { + //任务表添加当前客户任务 + WeTaskFissionRecord record = getTaskFissionRecordId(weTaskFissionPosterDTO.getTaskFissionId(), weCustomer.getExternalUserid(), weCustomer.getName()); String posterUrl = record.getPoster(); if (StringUtils.isBlank(posterUrl)) { - String qrcode = getPosterQRCode(weTaskFissionPosterDTO.getFissionTargetId(), record, user); + String qrcode = getPosterQRCode(weTaskFissionPosterDTO.getFissionTargetId(), record, weTaskFissionPosterDTO.getUserId()); if (StringUtils.isBlank(qrcode)) { throw new WeComException("生成的二维码为空"); } @@ -251,7 +256,7 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { } return posterUrl; } else { - throw new RuntimeException("客户信息不存在"); + throw new WeComException("客户信息不存在"); } } @@ -271,7 +276,28 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { } } - private String getPosterQRCode(String fissionTargetId, WeTaskFissionRecord record, WeUser user) { + @Override + public List getCustomerListById(String unionId, String fissionId) { + WeCustomer weCustomer = weCustomerService.getOne(new LambdaQueryWrapper().eq(WeCustomer::getUnionid, unionId)); + String externalUseriId = Optional.ofNullable(weCustomer).map(WeCustomer::getExternalUserid) + .orElseThrow(() -> new WeComException("用户信息不存在")); + + + WeTaskFissionRecord weTaskFissionRecord = weTaskFissionRecordService + .selectWeTaskFissionRecordByIdAndCustomerId(Long.valueOf(fissionId),externalUseriId); + + Long recordId = Optional.ofNullable(weTaskFissionRecord).map(WeTaskFissionRecord::getId) + .orElseThrow(() -> new WeComException("任务记录信息不存在")); + + List list = weFlowerCustomerRelService.list(new LambdaQueryWrapper() + .eq(WeFlowerCustomerRel::getState, WeConstans.FISSION_PREFIX + weTaskFissionRecord.getId())); + List eidList = Optional.ofNullable(list).orElseGet(ArrayList::new).stream() + .map(WeFlowerCustomerRel::getExternalUserid).collect(Collectors.toList()); + + return weCustomerService.listByIds(eidList); + } + + private String getPosterQRCode(String fissionTargetId, WeTaskFissionRecord record, String userId) { String qrCode = record.getQrCode(); if (StringUtils.isBlank(qrCode)) { Long taskFissionId = record.getTaskFissionId(); @@ -280,7 +306,7 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { if (TaskFissionType.USER_FISSION.getCode().equals(taskFissionType)) { qrCode = getUserFissionQrcode(fissionTargetId, record); } else if (TaskFissionType.GROUP_FISSION.getCode().equals(taskFissionType)) { - qrCode = getGroupFissionQrcode(taskFissionId, fissionTargetId, record, user); + qrCode = getGroupFissionQrcode(taskFissionId, fissionTargetId, record, userId); } else { throw new WeComException("错误的任务类型"); } @@ -299,23 +325,29 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { return qrcode; } - private String getGroupFissionQrcode(Long taskFissionId, String fissionTargetId, WeTaskFissionRecord record, WeUser user) { + private String getGroupFissionQrcode(Long taskFissionId, String fissionTargetId, WeTaskFissionRecord record, String userId) { String qrCode = null; - String avatar = user.getAvatarMediaid(); - WeMaterial file = weMaterialService.findWeMaterialById(Long.parseLong(avatar)); - String content = "/wecom/fission/complete/" + taskFissionId + "/records/" + record.getId(); - BufferedImage bufferedImage = QREncode.crateQRCode(content, file.getMaterialUrl()); - if (bufferedImage != null) { - try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) { - ImageIO.write(bufferedImage, "png", byteArrayOutputStream); - NetFileUtils.StreamMultipartFile streamMultipartFile = new NetFileUtils.StreamMultipartFile(System.currentTimeMillis() + ".jpg", byteArrayOutputStream.toByteArray()); - qrCode = FileUploadUtils.upload2Cos(streamMultipartFile, cosConfig); - } catch (Exception e) { - log.warn("生成海报二维码异常, fissionTargetId={}, record={}, user={}, exception={}", fissionTargetId, record, user, ExceptionUtils.getStackTrace(e)); - throw new WeComException("生成二维码异常"); + WeUser weUser = weUserService.selectWeUserById(userId); + if (weUser != null){ + String avatar = weUser.getAvatarMediaid(); + WeMaterial file = weMaterialService.findWeMaterialById(Long.parseLong(avatar)); + String avatarUrl = StringUtils.isEmpty(avatar)?file.getMaterialUrl():avatar; + String content = "/wecom/fission/complete/" + taskFissionId + "/records/" + record.getId(); + BufferedImage bufferedImage = QREncode.crateQRCode(content, avatarUrl); + if (bufferedImage != null) { + try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) { + ImageIO.write(bufferedImage, "png", byteArrayOutputStream); + NetFileUtils.StreamMultipartFile streamMultipartFile = new NetFileUtils.StreamMultipartFile(System.currentTimeMillis() + ".jpg", byteArrayOutputStream.toByteArray()); + qrCode = FileUploadUtils.upload2Cos(streamMultipartFile, cosConfig); + } catch (Exception e) { + log.warn("生成海报二维码异常, fissionTargetId={}, record={}, user={}, exception={}", fissionTargetId, record, weUser, ExceptionUtils.getStackTrace(e)); + throw new WeComException("生成二维码异常"); + } } + return qrCode; + }else { + throw new WeComException("生成二维码异常,用户信息不存在"); } - return qrCode; } private WeExternalContactDto.WeContactWay posterContactWay(String fissionTargetId, Long recordId) { @@ -341,7 +373,7 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { if (insertRows > 0) { recordInfo = record; } else { - throw new RuntimeException("生成海报异常:插入裂变记录失败"); + throw new WeComException("生成海报异常:插入裂变记录失败"); } } return recordInfo; -- Gitee From 82e5da7dceb88d87bb1522d12013318b86313356 Mon Sep 17 00:00:00 2001 From: sunxiwang Date: Thu, 18 Mar 2021 18:16:21 +0800 Subject: [PATCH 08/40] =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=AE=9D=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/wecom/WeTaskFissionController.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java index 7557e6761..9ff450a41 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java @@ -210,11 +210,11 @@ public class WeTaskFissionController extends BaseController { /** - * 根据任务id和uuid获取添加客户列表 + * 根据任务id和unionId获取添加客户列表 */ - @ApiOperation(value = "根据任务id和uuid获取添加客户列表", httpMethod = "GET") + @ApiOperation(value = "根据任务id和unionId获取添加客户列表", httpMethod = "GET") @PreAuthorize("@ss.hasPermi('wecom:fission:getCustomerListById')") - @Log(title = "根据任务id和uuid获取添加客户列表", businessType = BusinessType.OTHER) + @Log(title = "根据任务id和unionId获取添加客户列表", businessType = BusinessType.OTHER) @GetMapping("/getCustomerListById/{unionId}/{fissionId}") public AjaxResult> getCustomerListById(@ApiParam("微信用户id") String unionId,@ApiParam("任务id") String fissionId) { return AjaxResult.success(weTaskFissionService.getCustomerListById(unionId, fissionId)); -- Gitee From f6a8177e0323a939ed689c0766f6cf9b4631a70e Mon Sep 17 00:00:00 2001 From: leejoker <1056650571@qq.com> Date: Thu, 18 Mar 2021 22:53:52 +0800 Subject: [PATCH 09/40] =?UTF-8?q?=E5=AE=8C=E5=96=84=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=EF=BC=8C=E4=BF=AE=E6=94=B9=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wecom/WeTaskFissionController.java | 33 ++++++++---- .../domain/WeTaskFissionCompleteRecord.java | 14 ++++- .../wecom/domain/WeTaskFissionRecord.java | 15 ++++-- .../query/WeTaskFissionStatisticQO.java | 11 +++- .../domain/vo/WeTaskFissionDailyDataVO.java | 25 ++++++--- .../domain/vo/WeTaskFissionStatisticVO.java | 2 +- .../WeTaskFissionCompleteRecordMapper.java | 4 +- .../IWeTaskFissionCompleteRecordService.java | 6 ++- .../service/IWeTaskFissionRecordService.java | 6 ++- .../wecom/service/IWeTaskFissionService.java | 4 ++ ...eTaskFissionCompleteRecordServiceImpl.java | 14 ++++- .../impl/WeTaskFissionRecordServiceImpl.java | 16 ++++-- .../impl/WeTaskFissionServiceImpl.java | 53 ++++++++++++++++--- 13 files changed, 165 insertions(+), 38 deletions(-) diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java index 9ff450a41..dabc07692 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java @@ -10,6 +10,9 @@ import com.linkwechat.common.core.controller.BaseController; import com.linkwechat.common.core.domain.AjaxResult; import com.linkwechat.common.core.page.TableDataInfo; import com.linkwechat.common.enums.BusinessType; +import com.linkwechat.common.exception.wecom.WeComException; +import com.linkwechat.common.utils.DateUtils; +import com.linkwechat.common.utils.StringUtils; import com.linkwechat.common.utils.file.FileUploadUtils; import com.linkwechat.common.utils.poi.ExcelUtil; import com.linkwechat.wecom.domain.WeCustomer; @@ -17,6 +20,7 @@ import com.linkwechat.wecom.domain.WeTaskFission; import com.linkwechat.wecom.domain.dto.WeChatUserDTO; import com.linkwechat.wecom.domain.dto.WeTaskFissionPosterDTO; import com.linkwechat.wecom.domain.query.WeTaskFissionStatisticQO; +import com.linkwechat.wecom.domain.vo.WeTaskFissionStatisticVO; import com.linkwechat.wecom.service.IWeTaskFissionService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -28,6 +32,8 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; +import java.text.ParseException; +import java.util.Date; import java.util.List; @@ -64,15 +70,22 @@ public class WeTaskFissionController extends BaseController { @ApiOperation(value = "查询统计信息", httpMethod = "GET") @PreAuthorize("@ss.hasPermi('wecom:fission:stat')") @GetMapping("/stat") - public AjaxResult statistics(WeTaskFissionStatisticQO weTaskFissionStatisticQO) { - //TODO 待完成 - //record表和complete_record表增加创建时间 - //record表增加完成时间 - //三个统计维度: - // 1. 日新增:每天裂变客户数 - // 2. 日参与:每天扫码参加活动的客户数 - // 3. 日完成:每天完成裂变任务的客户数 - return null; + public AjaxResult statistics(WeTaskFissionStatisticQO weTaskFissionStatisticQO) throws ParseException { + Date st; + Date et = DateUtils.getNowDate(); + if (weTaskFissionStatisticQO.getSeven()) { + st = DateUtils.addDays(et, -7); + } else if (weTaskFissionStatisticQO.getThirty()) { + st = DateUtils.addDays(et, -30); + } else { + if (StringUtils.isNotBlank(weTaskFissionStatisticQO.getBeginTime()) ^ StringUtils.isNotBlank(weTaskFissionStatisticQO.getEndTime())) { + throw new WeComException("开始或结束时间不能为空"); + } + st = DateUtils.parseDate(weTaskFissionStatisticQO.getBeginTime() + " 00:00:00", "yyyy-MM-dd HH:mm:ss"); + et = DateUtils.parseDate(weTaskFissionStatisticQO.getEndTime() + " 23:59:59", "yyyy-MM-dd HH:mm:ss"); + } + WeTaskFissionStatisticVO vo = weTaskFissionService.taskFissionStatistic(weTaskFissionStatisticQO.getTaskFissionId(), st, et); + return AjaxResult.success(vo); } /** @@ -216,7 +229,7 @@ public class WeTaskFissionController extends BaseController { @PreAuthorize("@ss.hasPermi('wecom:fission:getCustomerListById')") @Log(title = "根据任务id和unionId获取添加客户列表", businessType = BusinessType.OTHER) @GetMapping("/getCustomerListById/{unionId}/{fissionId}") - public AjaxResult> getCustomerListById(@ApiParam("微信用户id") String unionId,@ApiParam("任务id") String fissionId) { + public AjaxResult> getCustomerListById(@ApiParam("微信用户id") String unionId, @ApiParam("任务id") String fissionId) { return AjaxResult.success(weTaskFissionService.getCustomerListById(unionId, fissionId)); } } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeTaskFissionCompleteRecord.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeTaskFissionCompleteRecord.java index 628a40472..95c6da3b4 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeTaskFissionCompleteRecord.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeTaskFissionCompleteRecord.java @@ -1,13 +1,15 @@ package com.linkwechat.wecom.domain; +import com.fasterxml.jackson.annotation.JsonFormat; import com.linkwechat.common.annotation.Excel; -import com.linkwechat.common.core.domain.BaseEntity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; +import java.util.Date; + /** * 裂变任务完成记录对象 we_task_fission_complete_record * @@ -16,7 +18,7 @@ import org.apache.commons.lang3.builder.ToStringStyle; */ @ApiModel @Data -public class WeTaskFissionCompleteRecord extends BaseEntity { +public class WeTaskFissionCompleteRecord { private static final long serialVersionUID = -9170275723334248435L; /** * 主键 @@ -51,6 +53,13 @@ public class WeTaskFissionCompleteRecord extends BaseEntity { @ApiModelProperty("裂变客户姓名") private String customerName; + /** + * 创建时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("创建时间") + private Date createTime = new Date(); + @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) @@ -59,6 +68,7 @@ public class WeTaskFissionCompleteRecord extends BaseEntity { .append("fissionRecordId", getFissionRecordId()) .append("customerId", getCustomerId()) .append("customerName", getCustomerName()) + .append("createTime", getCreateTime()) .toString(); } } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeTaskFissionRecord.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeTaskFissionRecord.java index 824d6bd26..7aa3d782d 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeTaskFissionRecord.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeTaskFissionRecord.java @@ -1,7 +1,7 @@ package com.linkwechat.wecom.domain; +import com.fasterxml.jackson.annotation.JsonFormat; import com.linkwechat.common.annotation.Excel; -import com.linkwechat.common.core.domain.BaseEntity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; @@ -24,7 +24,7 @@ import java.util.Date; @Builder @AllArgsConstructor @NoArgsConstructor -public class WeTaskFissionRecord extends BaseEntity { +public class WeTaskFissionRecord { private static final long serialVersionUID = 8770538385789110599L; /** * 主键 @@ -65,7 +65,15 @@ public class WeTaskFissionRecord extends BaseEntity { @ApiModelProperty("海报链接") private String poster; - @ApiModelProperty("完成时间") + /** + * 创建时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建时间") + private Date createTime = new Date(); + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "完成时间") private Date completeTime; @Override @@ -78,6 +86,7 @@ public class WeTaskFissionRecord extends BaseEntity { .append("fissNum", getFissNum()) .append("qrCode", getQrCode()) .append("poster", getPoster()) + .append("createTime", getCreateTime()) .append("completeTime", getCompleteTime()) .toString(); } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/query/WeTaskFissionStatisticQO.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/query/WeTaskFissionStatisticQO.java index 4e3c675fd..126127ca2 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/query/WeTaskFissionStatisticQO.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/query/WeTaskFissionStatisticQO.java @@ -1,5 +1,7 @@ package com.linkwechat.wecom.domain.query; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** @@ -8,9 +10,16 @@ import lombok.Data; * @date 2021/3/8 17:55 */ @Data +@ApiModel(value = "统计信息查询") public class WeTaskFissionStatisticQO { - private Boolean seven; + @ApiModelProperty(value = "任务id", required = true) + private Long taskFissionId; + @ApiModelProperty(value = "查询最近7天数据,与thirty属性互斥,不使用请设置为false") + private Boolean seven = true; + @ApiModelProperty(value = "查询最近30天数据,与seven属性互斥,不使用请设置为false") private Boolean thirty; + @ApiModelProperty(value = "开始时间") private String beginTime; + @ApiModelProperty(value = "结束时间") private String endTime; } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeTaskFissionDailyDataVO.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeTaskFissionDailyDataVO.java index 9ffd7e0c6..efa3e03fe 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeTaskFissionDailyDataVO.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeTaskFissionDailyDataVO.java @@ -1,9 +1,11 @@ package com.linkwechat.wecom.domain.vo; -import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; - -import java.util.Date; +import lombok.NoArgsConstructor; /** * @author leejoker <1056650571@qq.com> @@ -11,10 +13,17 @@ import java.util.Date; * @date 2021/3/8 10:24 */ @Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@ApiModel(value = "每日数据") public class WeTaskFissionDailyDataVO { - @JsonFormat(pattern = "yyyy-MM-dd") - private Date day; - private Integer increase; - private Integer attend; - private Integer complete; + @ApiModelProperty(value = "日期") + private String day; + @ApiModelProperty(value = "日新增客户") + private Integer increase = 0; + @ApiModelProperty(value = "日参与活动客户") + private Integer attend = 0; + @ApiModelProperty(value = "日完成任务客户") + private Integer complete = 0; } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeTaskFissionStatisticVO.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeTaskFissionStatisticVO.java index 259b56e54..6f1bd185c 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeTaskFissionStatisticVO.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeTaskFissionStatisticVO.java @@ -13,7 +13,7 @@ import java.util.List; */ @Data public class WeTaskFissionStatisticVO { - private Long id; + private Long taskFissionId; private String taskName; @JsonFormat(pattern = "yyyy-MM-dd") private Date startTime; diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeTaskFissionCompleteRecordMapper.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeTaskFissionCompleteRecordMapper.java index 91d87aca5..9abe4dc5b 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeTaskFissionCompleteRecordMapper.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeTaskFissionCompleteRecordMapper.java @@ -1,6 +1,8 @@ package com.linkwechat.wecom.mapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.linkwechat.wecom.domain.WeSensitiveActHit; import com.linkwechat.wecom.domain.WeTaskFissionCompleteRecord; import java.util.List; @@ -11,7 +13,7 @@ import java.util.List; * @author ruoyi * @date 2021-01-27 */ -public interface WeTaskFissionCompleteRecordMapper { +public interface WeTaskFissionCompleteRecordMapper extends BaseMapper { /** * 查询裂变任务完成记录 * diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionCompleteRecordService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionCompleteRecordService.java index 01666395d..066beea0f 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionCompleteRecordService.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionCompleteRecordService.java @@ -1,8 +1,10 @@ package com.linkwechat.wecom.service; +import com.baomidou.mybatisplus.extension.service.IService; import com.linkwechat.wecom.domain.WeTaskFissionCompleteRecord; +import java.util.Date; import java.util.List; /** @@ -11,7 +13,7 @@ import java.util.List; * @author ruoyi * @date 2021-01-27 */ -public interface IWeTaskFissionCompleteRecordService { +public interface IWeTaskFissionCompleteRecordService extends IService { /** * 查询裂变任务完成记录 * @@ -59,4 +61,6 @@ public interface IWeTaskFissionCompleteRecordService { * @return 结果 */ public int deleteWeTaskFissionCompleteRecordById(Long id); + + public List statisticCompleteRecords(Long taskFissionId, Date startTime, Date endTime); } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionRecordService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionRecordService.java index d764c3d83..af3055d87 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionRecordService.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionRecordService.java @@ -1,7 +1,9 @@ package com.linkwechat.wecom.service; +import com.baomidou.mybatisplus.extension.service.IService; import com.linkwechat.wecom.domain.WeTaskFissionRecord; +import java.util.Date; import java.util.List; /** @@ -10,7 +12,7 @@ import java.util.List; * @author ruoyi * @date 2021-01-27 */ -public interface IWeTaskFissionRecordService { +public interface IWeTaskFissionRecordService extends IService { /** * 查询裂变任务记录 * @@ -61,4 +63,6 @@ public interface IWeTaskFissionRecordService { public WeTaskFissionRecord selectWeTaskFissionRecordByIdAndCustomerId(Long id, String customerId); + + public List statisticRecords(Long taskFissionId, Date startTime, Date endTime); } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionService.java index 8398d8bae..9c6354484 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionService.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionService.java @@ -4,7 +4,9 @@ import com.linkwechat.wecom.domain.WeCustomer; import com.linkwechat.wecom.domain.WeTaskFission; import com.linkwechat.wecom.domain.dto.WeChatUserDTO; import com.linkwechat.wecom.domain.dto.WeTaskFissionPosterDTO; +import com.linkwechat.wecom.domain.vo.WeTaskFissionStatisticVO; +import java.util.Date; import java.util.List; /** @@ -86,4 +88,6 @@ public interface IWeTaskFissionService { public void completeFissionRecord(Long taskFissionId, Long taskFissionRecordId, WeChatUserDTO weChatUserDTO); List getCustomerListById(String unionId, String fissionId); + + WeTaskFissionStatisticVO taskFissionStatistic(Long taskFissionId, Date startTime, Date endTime); } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionCompleteRecordServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionCompleteRecordServiceImpl.java index 1d98a3d1c..277066cc4 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionCompleteRecordServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionCompleteRecordServiceImpl.java @@ -1,11 +1,14 @@ package com.linkwechat.wecom.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.linkwechat.wecom.domain.WeTaskFissionCompleteRecord; import com.linkwechat.wecom.mapper.WeTaskFissionCompleteRecordMapper; import com.linkwechat.wecom.service.IWeTaskFissionCompleteRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Date; import java.util.List; /** @@ -15,7 +18,7 @@ import java.util.List; * @date 2021-01-27 */ @Service -public class WeTaskFissionCompleteRecordServiceImpl implements IWeTaskFissionCompleteRecordService { +public class WeTaskFissionCompleteRecordServiceImpl extends ServiceImpl implements IWeTaskFissionCompleteRecordService { @Autowired private WeTaskFissionCompleteRecordMapper weTaskFissionCompleteRecordMapper; @@ -84,4 +87,13 @@ public class WeTaskFissionCompleteRecordServiceImpl implements IWeTaskFissionCom public int deleteWeTaskFissionCompleteRecordById(Long id) { return weTaskFissionCompleteRecordMapper.deleteWeTaskFissionCompleteRecordById(id); } + + @Override + public List statisticCompleteRecords(Long taskFissionId, Date startTime, Date endTime) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(WeTaskFissionCompleteRecord::getTaskFissionId, taskFissionId). + between(WeTaskFissionCompleteRecord::getCreateTime, startTime, endTime). + orderByAsc(WeTaskFissionCompleteRecord::getCreateTime); + return weTaskFissionCompleteRecordMapper.selectList(wrapper); + } } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionRecordServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionRecordServiceImpl.java index 7e77796d3..74872de12 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionRecordServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionRecordServiceImpl.java @@ -8,6 +8,7 @@ import com.linkwechat.wecom.service.IWeTaskFissionRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Date; import java.util.List; /** @@ -17,7 +18,7 @@ import java.util.List; * @date 2021-01-27 */ @Service -public class WeTaskFissionRecordServiceImpl extends ServiceImpl implements IWeTaskFissionRecordService { +public class WeTaskFissionRecordServiceImpl extends ServiceImpl implements IWeTaskFissionRecordService { @Autowired private WeTaskFissionRecordMapper weTaskFissionRecordMapper; @@ -90,7 +91,16 @@ public class WeTaskFissionRecordServiceImpl extends ServiceImpl() - .eq(WeTaskFissionRecord::getTaskFissionId,id) - .eq(WeTaskFissionRecord::getCustomerId,customerId)); + .eq(WeTaskFissionRecord::getTaskFissionId, id) + .eq(WeTaskFissionRecord::getCustomerId, customerId)); + } + + @Override + public List statisticRecords(Long taskFissionId, Date startTime, Date endTime) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(WeTaskFissionRecord::getTaskFissionId, taskFissionId). + between(WeTaskFissionRecord::getCreateTime, startTime, endTime). + orderByAsc(WeTaskFissionRecord::getCreateTime); + return weTaskFissionRecordMapper.selectList(wrapper); } } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java index 734b14a05..b2d0484e4 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.fasterxml.jackson.core.JsonProcessingException; +import com.google.common.collect.Lists; import com.linkwechat.common.config.CosConfig; import com.linkwechat.common.constant.WeConstans; import com.linkwechat.common.enums.TaskFissionType; @@ -21,6 +22,8 @@ import com.linkwechat.wecom.domain.dto.WeExternalContactDto; import com.linkwechat.wecom.domain.dto.WeTaskFissionPosterDTO; import com.linkwechat.wecom.domain.dto.message.CustomerMessagePushDto; import com.linkwechat.wecom.domain.dto.message.LinkMessageDto; +import com.linkwechat.wecom.domain.vo.WeTaskFissionDailyDataVO; +import com.linkwechat.wecom.domain.vo.WeTaskFissionStatisticVO; import com.linkwechat.wecom.mapper.WeTaskFissionMapper; import com.linkwechat.wecom.service.*; import lombok.extern.slf4j.Slf4j; @@ -84,7 +87,10 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { */ @Override public WeTaskFission selectWeTaskFissionById(Long id) { - return weTaskFissionMapper.selectWeTaskFissionById(id); + WeTaskFission taskFission = weTaskFissionMapper.selectWeTaskFissionById(id); + List staffList = weTaskFissionStaffService.selectWeTaskFissionStaffByTaskId(id); + taskFission.setTaskFissionStaffs(staffList); + return taskFission; } /** @@ -270,7 +276,6 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { wfcr.setCustomerName(weChatUserDTO.getName()); List list = weTaskFissionCompleteRecordService.selectWeTaskFissionCompleteRecordList(wfcr); if (CollectionUtils.isEmpty(list)) { - wfcr.setCreateBy(SecurityUtils.getUsername()); wfcr.setCreateTime(new Date()); weTaskFissionCompleteRecordService.insertWeTaskFissionCompleteRecord(wfcr); } @@ -284,7 +289,7 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { WeTaskFissionRecord weTaskFissionRecord = weTaskFissionRecordService - .selectWeTaskFissionRecordByIdAndCustomerId(Long.valueOf(fissionId),externalUseriId); + .selectWeTaskFissionRecordByIdAndCustomerId(Long.valueOf(fissionId), externalUseriId); Long recordId = Optional.ofNullable(weTaskFissionRecord).map(WeTaskFissionRecord::getId) .orElseThrow(() -> new WeComException("任务记录信息不存在")); @@ -297,6 +302,42 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { return weCustomerService.listByIds(eidList); } + @Override + public WeTaskFissionStatisticVO taskFissionStatistic(Long taskFissionId, Date startTime, Date endTime) { + WeTaskFissionStatisticVO vo = new WeTaskFissionStatisticVO(); + WeTaskFission taskFission = weTaskFissionMapper.selectWeTaskFissionById(taskFissionId); + if (taskFission == null) { + throw new WeComException("任务数据不存在"); + } + vo.setTaskFissionId(taskFissionId); + vo.setTaskName(taskFission.getTaskName()); + vo.setStartTime(startTime); + vo.setEndTime(endTime); + Map> completeRecordsMap = weTaskFissionCompleteRecordService.statisticCompleteRecords(taskFissionId, startTime, endTime).parallelStream().filter(Objects::nonNull).collect(Collectors.groupingBy(item -> DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, item.getCreateTime()))); + Map> recordsMap = weTaskFissionRecordService.statisticRecords(taskFissionId, startTime, endTime).parallelStream().filter(Objects::nonNull).collect(Collectors.groupingBy(item -> DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, item.getCreateTime()))); + List dailyDataList = Lists.newArrayList(); + DateUtils.findDates(startTime, endTime).parallelStream().map(d -> DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, d)) + .forEach(date -> { + WeTaskFissionDailyDataVO v = new WeTaskFissionDailyDataVO(); + v.setDay(date); + List completeList = completeRecordsMap.get(date); + List recordsList = recordsMap.get(date); + if (CollectionUtils.isNotEmpty(completeList)) { + v.setIncrease(completeList.size()); + } + if (CollectionUtils.isNotEmpty(recordsList)) { + v.setAttend(recordsList.size()); + int completeSize = (int) recordsList.stream().filter(r -> r.getCompleteTime() != null).count(); + v.setComplete(completeSize); + } + dailyDataList.add(v); + }); + vo.setData(dailyDataList); + return vo; + } + + /*************************************** private functions **************************************/ + private String getPosterQRCode(String fissionTargetId, WeTaskFissionRecord record, String userId) { String qrCode = record.getQrCode(); if (StringUtils.isBlank(qrCode)) { @@ -328,10 +369,10 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { private String getGroupFissionQrcode(Long taskFissionId, String fissionTargetId, WeTaskFissionRecord record, String userId) { String qrCode = null; WeUser weUser = weUserService.selectWeUserById(userId); - if (weUser != null){ + if (weUser != null) { String avatar = weUser.getAvatarMediaid(); WeMaterial file = weMaterialService.findWeMaterialById(Long.parseLong(avatar)); - String avatarUrl = StringUtils.isEmpty(avatar)?file.getMaterialUrl():avatar; + String avatarUrl = StringUtils.isEmpty(avatar) ? file.getMaterialUrl() : avatar; String content = "/wecom/fission/complete/" + taskFissionId + "/records/" + record.getId(); BufferedImage bufferedImage = QREncode.crateQRCode(content, avatarUrl); if (bufferedImage != null) { @@ -345,7 +386,7 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { } } return qrCode; - }else { + } else { throw new WeComException("生成二维码异常,用户信息不存在"); } } -- Gitee From aeac6ff33016b4f7331c347ff2f0d94d98bed8c4 Mon Sep 17 00:00:00 2001 From: sunxiwang Date: Fri, 19 Mar 2021 09:11:14 +0800 Subject: [PATCH 10/40] fix --- .../com/linkwechat/wecom/domain/WeCustomer.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomer.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomer.java index 7f2a86606..4cd7a0f54 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomer.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomer.java @@ -12,6 +12,8 @@ import com.linkwechat.common.annotation.Excel; import com.linkwechat.common.annotation.Excels; import com.linkwechat.common.core.domain.BaseEntity; import com.linkwechat.common.utils.SnowFlakeUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -27,6 +29,7 @@ import javax.validation.constraints.NotBlank; * @author ruoyi * @date 2020-09-13 */ +@ApiModel @Data @Builder @AllArgsConstructor @@ -40,42 +43,53 @@ public class WeCustomer extends BaseEntity /** 外部联系人的userid */ @TableId @NotBlank(message = "外部联系人的id不可为空") + @ApiModelProperty("外部联系人的userid") private String externalUserid; /** 外部联系人名称 */ @Excel(name = "客户") + @ApiModelProperty("外部联系人名称") private String name; /** 外部联系人头像 */ + @ApiModelProperty("外部联系人头像") private String avatar; /** 外部联系人的类型,1表示该外部联系人是微信用户,2表示该外部联系人是企业微信用户 */ + @ApiModelProperty("外部联系人的类型,1表示该外部联系人是微信用户,2表示该外部联系人是企业微信用户") @Excel(name = "客户类型", readConverterExp = "1=微信,2=企业微信") private Integer type; /** 外部联系人性别 0-未知 1-男性 2-女性 */ + @ApiModelProperty("外部联系人性别 0-未知 1-男性 2-女性") @Excel(name = "性别", readConverterExp = "0=未知,1=男性,2=女性") private Integer gender; /** 外部联系人在微信开放平台的唯一身份标识,通过此字段企业可将外部联系人与公众号/小程序用户关联起来。 */ + @ApiModelProperty("外部联系人在微信开放平台的唯一身份标识,通过此字段企业可将外部联系人与公众号/小程序用户关联起来") private String unionid; /** 生日 */ @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty("生日") private Date birthday; /** 客户企业简称 */ + @ApiModelProperty("客户企业简称") @Excel(name = "公司名称") private String corpName; /** 客户企业全称 */ + @ApiModelProperty("客户企业全称") private String corpFullName; /** 职位 */ + @ApiModelProperty("职位") private String position; /** 是否开启会话存档 0:关闭 1:开启 */ + @ApiModelProperty("是否开启会话存档 0:关闭 1:开启") private Integer isOpenChat; /** 添加人员 */ -- Gitee From d0aff2fc7922f89845fd077369dda62737dac67b Mon Sep 17 00:00:00 2001 From: sunxiwang Date: Fri, 19 Mar 2021 09:16:55 +0800 Subject: [PATCH 11/40] fix --- .../wecom/WeTaskFissionController.java | 4 ++-- .../service/impl/WeTaskFissionServiceImpl.java | 18 +++++++++++++----- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java index dabc07692..638644f23 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java @@ -228,8 +228,8 @@ public class WeTaskFissionController extends BaseController { @ApiOperation(value = "根据任务id和unionId获取添加客户列表", httpMethod = "GET") @PreAuthorize("@ss.hasPermi('wecom:fission:getCustomerListById')") @Log(title = "根据任务id和unionId获取添加客户列表", businessType = BusinessType.OTHER) - @GetMapping("/getCustomerListById/{unionId}/{fissionId}") - public AjaxResult> getCustomerListById(@ApiParam("微信用户id") String unionId, @ApiParam("任务id") String fissionId) { + @GetMapping("/getCustomerListById/{fissionId}/{unionId}") + public AjaxResult> getCustomerListById(@ApiParam("任务id") String fissionId,@ApiParam("微信用户id") String unionId) { return AjaxResult.success(weTaskFissionService.getCustomerListById(unionId, fissionId)); } } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java index b2d0484e4..bdc52995f 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java @@ -26,6 +26,7 @@ import com.linkwechat.wecom.domain.vo.WeTaskFissionDailyDataVO; import com.linkwechat.wecom.domain.vo.WeTaskFissionStatisticVO; import com.linkwechat.wecom.mapper.WeTaskFissionMapper; import com.linkwechat.wecom.service.*; +import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.exception.ExceptionUtils; @@ -283,13 +284,20 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { @Override public List getCustomerListById(String unionId, String fissionId) { - WeCustomer weCustomer = weCustomerService.getOne(new LambdaQueryWrapper().eq(WeCustomer::getUnionid, unionId)); - String externalUseriId = Optional.ofNullable(weCustomer).map(WeCustomer::getExternalUserid) - .orElseThrow(() -> new WeComException("用户信息不存在")); + WeTaskFissionRecord weTaskFissionRecord = null; + if(StringUtils.isEmpty(unionId)){ + weTaskFissionRecord = weTaskFissionRecordService + .getOne(new LambdaQueryWrapper().eq(WeTaskFissionRecord::getTaskFissionId,fissionId)); + }else { + WeCustomer weCustomer = weCustomerService.getOne(new LambdaQueryWrapper().eq(WeCustomer::getUnionid, unionId)); + String externalUseriId = Optional.ofNullable(weCustomer).map(WeCustomer::getExternalUserid) + .orElseThrow(() -> new WeComException("用户信息不存在")); - WeTaskFissionRecord weTaskFissionRecord = weTaskFissionRecordService - .selectWeTaskFissionRecordByIdAndCustomerId(Long.valueOf(fissionId), externalUseriId); + + weTaskFissionRecord = weTaskFissionRecordService + .selectWeTaskFissionRecordByIdAndCustomerId(Long.valueOf(fissionId), externalUseriId); + } Long recordId = Optional.ofNullable(weTaskFissionRecord).map(WeTaskFissionRecord::getId) .orElseThrow(() -> new WeComException("任务记录信息不存在")); -- Gitee From 755333f3d1184e7bc970c4d4ddbd551e9b7c2e12 Mon Sep 17 00:00:00 2001 From: leejoker <1056650571@qq.com> Date: Fri, 19 Mar 2021 09:25:19 +0800 Subject: [PATCH 12/40] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BE=A4=E8=A3=82?= =?UTF-8?q?=E5=8F=98=E6=B5=B7=E6=8A=A5=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/dto/WeTaskFissionPosterDTO.java | 3 --- .../impl/WeTaskFissionServiceImpl.java | 22 +++++++++---------- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WeTaskFissionPosterDTO.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WeTaskFissionPosterDTO.java index 1daef8acd..8b985ae06 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WeTaskFissionPosterDTO.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WeTaskFissionPosterDTO.java @@ -15,9 +15,6 @@ public class WeTaskFissionPosterDTO { @ApiModelProperty("客户id(微信用户Id)") private String unionId; - @ApiModelProperty("企微成员id") - private String userId; - @ApiModelProperty("任务id") private Long taskFissionId; diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java index bdc52995f..ed129dcdf 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java @@ -26,7 +26,6 @@ import com.linkwechat.wecom.domain.vo.WeTaskFissionDailyDataVO; import com.linkwechat.wecom.domain.vo.WeTaskFissionStatisticVO; import com.linkwechat.wecom.mapper.WeTaskFissionMapper; import com.linkwechat.wecom.service.*; -import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.exception.ExceptionUtils; @@ -244,7 +243,7 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { WeTaskFissionRecord record = getTaskFissionRecordId(weTaskFissionPosterDTO.getTaskFissionId(), weCustomer.getExternalUserid(), weCustomer.getName()); String posterUrl = record.getPoster(); if (StringUtils.isBlank(posterUrl)) { - String qrcode = getPosterQRCode(weTaskFissionPosterDTO.getFissionTargetId(), record, weTaskFissionPosterDTO.getUserId()); + String qrcode = getPosterQRCode(weTaskFissionPosterDTO.getFissionTargetId(), record, weCustomer); if (StringUtils.isBlank(qrcode)) { throw new WeComException("生成的二维码为空"); } @@ -285,11 +284,11 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { @Override public List getCustomerListById(String unionId, String fissionId) { WeTaskFissionRecord weTaskFissionRecord = null; - if(StringUtils.isEmpty(unionId)){ + if (StringUtils.isEmpty(unionId)) { weTaskFissionRecord = weTaskFissionRecordService - .getOne(new LambdaQueryWrapper().eq(WeTaskFissionRecord::getTaskFissionId,fissionId)); + .getOne(new LambdaQueryWrapper().eq(WeTaskFissionRecord::getTaskFissionId, fissionId)); - }else { + } else { WeCustomer weCustomer = weCustomerService.getOne(new LambdaQueryWrapper().eq(WeCustomer::getUnionid, unionId)); String externalUseriId = Optional.ofNullable(weCustomer).map(WeCustomer::getExternalUserid) .orElseThrow(() -> new WeComException("用户信息不存在")); @@ -346,7 +345,7 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { /*************************************** private functions **************************************/ - private String getPosterQRCode(String fissionTargetId, WeTaskFissionRecord record, String userId) { + private String getPosterQRCode(String fissionTargetId, WeTaskFissionRecord record, WeCustomer weCustomer) { String qrCode = record.getQrCode(); if (StringUtils.isBlank(qrCode)) { Long taskFissionId = record.getTaskFissionId(); @@ -355,7 +354,7 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { if (TaskFissionType.USER_FISSION.getCode().equals(taskFissionType)) { qrCode = getUserFissionQrcode(fissionTargetId, record); } else if (TaskFissionType.GROUP_FISSION.getCode().equals(taskFissionType)) { - qrCode = getGroupFissionQrcode(taskFissionId, fissionTargetId, record, userId); + qrCode = getGroupFissionQrcode(taskFissionId, record, weCustomer); } else { throw new WeComException("错误的任务类型"); } @@ -374,11 +373,10 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { return qrcode; } - private String getGroupFissionQrcode(Long taskFissionId, String fissionTargetId, WeTaskFissionRecord record, String userId) { + private String getGroupFissionQrcode(Long taskFissionId, WeTaskFissionRecord record, WeCustomer weCustomer) { String qrCode = null; - WeUser weUser = weUserService.selectWeUserById(userId); - if (weUser != null) { - String avatar = weUser.getAvatarMediaid(); + if (weCustomer != null) { + String avatar = weCustomer.getAvatar(); WeMaterial file = weMaterialService.findWeMaterialById(Long.parseLong(avatar)); String avatarUrl = StringUtils.isEmpty(avatar) ? file.getMaterialUrl() : avatar; String content = "/wecom/fission/complete/" + taskFissionId + "/records/" + record.getId(); @@ -389,7 +387,7 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { NetFileUtils.StreamMultipartFile streamMultipartFile = new NetFileUtils.StreamMultipartFile(System.currentTimeMillis() + ".jpg", byteArrayOutputStream.toByteArray()); qrCode = FileUploadUtils.upload2Cos(streamMultipartFile, cosConfig); } catch (Exception e) { - log.warn("生成海报二维码异常, fissionTargetId={}, record={}, user={}, exception={}", fissionTargetId, record, weUser, ExceptionUtils.getStackTrace(e)); + log.warn("生成海报二维码异常, record={}, customer={}, exception={}", record, weCustomer, ExceptionUtils.getStackTrace(e)); throw new WeComException("生成二维码异常"); } } -- Gitee From be5f5437de7e7e242bfe0f386e5e2223ca92567a Mon Sep 17 00:00:00 2001 From: sunxiwang Date: Fri, 19 Mar 2021 09:55:58 +0800 Subject: [PATCH 13/40] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=9F=A5=E7=9C=8B?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=A5=96=E5=8A=B1=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wecom/WeTaskFissionController.java | 3 +- .../wecom/WeTaskFissionRewardController.java | 14 ++++++ .../domain/vo/WeTaskFissionRewardVo.java | 39 ++++++++++++++++ .../mapper/WeTaskFissionRewardMapper.java | 3 +- .../service/IWeTaskFissionRewardService.java | 9 ++++ .../impl/WeTaskFissionRewardServiceImpl.java | 46 +++++++++++++++++++ 6 files changed, 112 insertions(+), 2 deletions(-) create mode 100644 linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeTaskFissionRewardVo.java diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java index 638644f23..7ebdc5bf3 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java @@ -229,7 +229,8 @@ public class WeTaskFissionController extends BaseController { @PreAuthorize("@ss.hasPermi('wecom:fission:getCustomerListById')") @Log(title = "根据任务id和unionId获取添加客户列表", businessType = BusinessType.OTHER) @GetMapping("/getCustomerListById/{fissionId}/{unionId}") - public AjaxResult> getCustomerListById(@ApiParam("任务id") String fissionId,@ApiParam("微信用户id") String unionId) { + public AjaxResult> getCustomerListById(@ApiParam("任务id") @PathVariable("fissionId") String fissionId + , @PathVariable("unionId") @ApiParam("微信用户id") String unionId) { return AjaxResult.success(weTaskFissionService.getCustomerListById(unionId, fissionId)); } } diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionRewardController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionRewardController.java index 22f3ada96..9bb2e0184 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionRewardController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionRewardController.java @@ -7,9 +7,11 @@ import com.linkwechat.common.core.page.TableDataInfo; import com.linkwechat.common.enums.BusinessType; import com.linkwechat.common.utils.poi.ExcelUtil; import com.linkwechat.wecom.domain.WeTaskFissionReward; +import com.linkwechat.wecom.domain.vo.WeTaskFissionRewardVo; import com.linkwechat.wecom.service.IWeTaskFissionRewardService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -97,4 +99,16 @@ public class WeTaskFissionRewardController extends BaseController { public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(weTaskFissionRewardService.deleteWeTaskFissionRewardByIds(ids)); } + + + /** + * 根据微信用户id和任务id获取任务裂变奖励详细信息 + */ + @ApiOperation(value = "根据微信用户id和任务id获取任务裂变奖励详细信息",httpMethod = "GET") + @PreAuthorize("@ss.hasPermi('wecom:getRewardById:query')") + @GetMapping(value = "/getRewardByFissionId/{fissionId}/{unionId}") + public AjaxResult getRewardByFissionId(@ApiParam("任务id") @PathVariable("fissionId") String fissionId + , @PathVariable("unionId") @ApiParam("微信用户id") String unionId) { + return AjaxResult.success(weTaskFissionRewardService.getRewardByFissionId(fissionId,unionId)); + } } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeTaskFissionRewardVo.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeTaskFissionRewardVo.java new file mode 100644 index 000000000..4a9b633e9 --- /dev/null +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeTaskFissionRewardVo.java @@ -0,0 +1,39 @@ +package com.linkwechat.wecom.domain.vo; + +import com.linkwechat.common.annotation.Excel; +import com.linkwechat.common.core.domain.BaseEntity; +import com.linkwechat.wecom.domain.WeTaskFissionReward; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 任务裂变奖励对象 we_task_fission_reward + * + * @author leejoker + * @date 2021-01-20 + */ +@ApiModel +@Data +public class WeTaskFissionRewardVo extends BaseEntity { + @ApiModelProperty("奖励对象") + private WeTaskFissionReward weTaskFissionReward; + + /** + * 兑奖链接 + */ + @ApiModelProperty(value = "兑奖链接") + private String rewardUrl; + + /** + * 兑奖链接图片 + */ + @ApiModelProperty(value = "兑奖链接图片") + private String rewardImageUrl; + + /** + * 兑奖规则 + */ + @ApiModelProperty(value = "兑奖规则") + private String rewardRule; +} diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeTaskFissionRewardMapper.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeTaskFissionRewardMapper.java index 1d134121b..a647c634b 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeTaskFissionRewardMapper.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeTaskFissionRewardMapper.java @@ -1,5 +1,6 @@ package com.linkwechat.wecom.mapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.linkwechat.wecom.domain.WeTaskFissionReward; import java.util.List; @@ -10,7 +11,7 @@ import java.util.List; * @author leejoker * @date 2021-01-20 */ -public interface WeTaskFissionRewardMapper { +public interface WeTaskFissionRewardMapper extends BaseMapper { /** * 查询任务裂变奖励 * diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionRewardService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionRewardService.java index 91c147b35..b606b7113 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionRewardService.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionRewardService.java @@ -1,6 +1,7 @@ package com.linkwechat.wecom.service; import com.linkwechat.wecom.domain.WeTaskFissionReward; +import com.linkwechat.wecom.domain.vo.WeTaskFissionRewardVo; import java.util.List; @@ -58,4 +59,12 @@ public interface IWeTaskFissionRewardService { * @return 结果 */ public int deleteWeTaskFissionRewardById(Long id); + + /** + * 根据微信用户id和任务id获取任务裂变奖励详细信息 + * @param fissionId 任务id + * @param unionId 微信用户id + * @return + */ + public WeTaskFissionRewardVo getRewardByFissionId(String fissionId, String unionId); } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionRewardServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionRewardServiceImpl.java index 4dd585b81..5dbb8d5df 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionRewardServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionRewardServiceImpl.java @@ -1,13 +1,24 @@ package com.linkwechat.wecom.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.linkwechat.common.exception.wecom.WeComException; import com.linkwechat.common.utils.DateUtils; +import com.linkwechat.wecom.domain.WeCustomer; +import com.linkwechat.wecom.domain.WeTaskFission; +import com.linkwechat.wecom.domain.WeTaskFissionRecord; import com.linkwechat.wecom.domain.WeTaskFissionReward; +import com.linkwechat.wecom.domain.vo.WeTaskFissionRewardVo; import com.linkwechat.wecom.mapper.WeTaskFissionRewardMapper; +import com.linkwechat.wecom.service.IWeCustomerService; +import com.linkwechat.wecom.service.IWeTaskFissionRecordService; import com.linkwechat.wecom.service.IWeTaskFissionRewardService; +import com.linkwechat.wecom.service.IWeTaskFissionService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Date; import java.util.List; +import java.util.Optional; /** * 任务裂变奖励Service业务层处理 @@ -19,6 +30,12 @@ import java.util.List; public class WeTaskFissionRewardServiceImpl implements IWeTaskFissionRewardService { @Autowired private WeTaskFissionRewardMapper weTaskFissionRewardMapper; + @Autowired + private IWeCustomerService weCustomerService; + @Autowired + private IWeTaskFissionRecordService weTaskFissionRecordService; + @Autowired + private IWeTaskFissionService weTaskFissionService; /** * 查询任务裂变奖励 @@ -86,4 +103,33 @@ public class WeTaskFissionRewardServiceImpl implements IWeTaskFissionRewardServi public int deleteWeTaskFissionRewardById(Long id) { return weTaskFissionRewardMapper.deleteWeTaskFissionRewardById(id); } + + @Override + public WeTaskFissionRewardVo getRewardByFissionId(String fissionId, String unionId) { + WeTaskFissionRewardVo weTaskFissionRewardVo = new WeTaskFissionRewardVo(); + WeCustomer weCustomer = weCustomerService.getOne(new LambdaQueryWrapper().eq(WeCustomer::getUnionid, unionId)); + String externalUseriId = Optional.ofNullable(weCustomer).map(WeCustomer::getExternalUserid) + .orElseThrow(() -> new WeComException("用户信息不存在")); + + WeTaskFissionRecord record = weTaskFissionRecordService.selectWeTaskFissionRecordByIdAndCustomerId(Long.valueOf(fissionId), externalUseriId); + Date completeTime = Optional.ofNullable(record).map(WeTaskFissionRecord::getCompleteTime) + .orElseThrow(() -> new WeComException("任务信息不存在")); + + WeTaskFission weTaskFission = weTaskFissionService.selectWeTaskFissionById(Long.valueOf(fissionId)); + Optional.ofNullable(weTaskFission).ifPresent(fission ->{ + weTaskFissionRewardVo.setRewardRule(fission.getRewardRule()); + weTaskFissionRewardVo.setRewardImageUrl(fission.getRewardImageUrl()); + weTaskFissionRewardVo.setRewardUrl(fission.getRewardUrl()); + }); + + if(completeTime != null){ + WeTaskFissionReward fissionReward = weTaskFissionRewardMapper.selectOne(new LambdaQueryWrapper() + .eq(WeTaskFissionReward::getTaskFissionId, fissionId) + .eq(WeTaskFissionReward::getRewardUserId, externalUseriId)); + weTaskFissionRewardVo.setWeTaskFissionReward(fissionReward); + + } + + return weTaskFissionRewardVo; + } } -- Gitee From ed4206605b31d2bb6316c0846f778c042ae84843 Mon Sep 17 00:00:00 2001 From: sunxiwang Date: Fri, 19 Mar 2021 10:32:13 +0800 Subject: [PATCH 14/40] fix --- .../main/java/com/linkwechat/common/core/domain/AjaxResult.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linkwe-common/src/main/java/com/linkwechat/common/core/domain/AjaxResult.java b/linkwe-common/src/main/java/com/linkwechat/common/core/domain/AjaxResult.java index 73af99283..89c96c500 100644 --- a/linkwe-common/src/main/java/com/linkwechat/common/core/domain/AjaxResult.java +++ b/linkwe-common/src/main/java/com/linkwechat/common/core/domain/AjaxResult.java @@ -49,7 +49,7 @@ public class AjaxResult extends HashMap * @param msg 返回内容 * @param data 数据对象 */ - public AjaxResult(int code, String msg, Object data) + public AjaxResult(int code, String msg, T data) { super.put(CODE_TAG, code); super.put(MSG_TAG, msg); -- Gitee From 566622d8f06f0814969a58697a71eff275b98134 Mon Sep 17 00:00:00 2001 From: leejoker <1056650571@qq.com> Date: Sat, 20 Mar 2021 13:45:04 +0800 Subject: [PATCH 15/40] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=EF=BC=8C=E6=98=8E=E7=A1=AE=E6=8E=A5=E5=8F=A3=E4=BD=9C=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wecom/WeTaskFissionController.java | 40 ++++++++++++++++--- .../domain/vo/WeTaskFissionProgressVO.java | 24 +++++++++++ 2 files changed, 58 insertions(+), 6 deletions(-) create mode 100644 linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeTaskFissionProgressVO.java diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java index 7ebdc5bf3..6eb9e1afb 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java @@ -20,11 +20,13 @@ import com.linkwechat.wecom.domain.WeTaskFission; import com.linkwechat.wecom.domain.dto.WeChatUserDTO; import com.linkwechat.wecom.domain.dto.WeTaskFissionPosterDTO; import com.linkwechat.wecom.domain.query.WeTaskFissionStatisticQO; +import com.linkwechat.wecom.domain.vo.WeTaskFissionProgressVO; import com.linkwechat.wecom.domain.vo.WeTaskFissionStatisticVO; import com.linkwechat.wecom.service.IWeTaskFissionService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; @@ -33,6 +35,7 @@ import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.text.ParseException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -223,14 +226,39 @@ public class WeTaskFissionController extends BaseController { /** - * 根据任务id和unionId获取添加客户列表 + * 根据任务id获取参与任务客户列表 */ - @ApiOperation(value = "根据任务id和unionId获取添加客户列表", httpMethod = "GET") + @ApiOperation(value = "根据任务id获取参与任务客户列表", httpMethod = "GET") @PreAuthorize("@ss.hasPermi('wecom:fission:getCustomerListById')") - @Log(title = "根据任务id和unionId获取添加客户列表", businessType = BusinessType.OTHER) - @GetMapping("/getCustomerListById/{fissionId}/{unionId}") - public AjaxResult> getCustomerListById(@ApiParam("任务id") @PathVariable("fissionId") String fissionId + @Log(title = "根据任务id获取参与任务客户列表", businessType = BusinessType.OTHER) + @GetMapping("/getCustomerListById/{id}") + public AjaxResult> getCustomerListById(@ApiParam("任务id") @PathVariable("id") String id) { + return AjaxResult.success(weTaskFissionService.getCustomerListById(null, id)); + } + + /** + * 获取客户邀请列表和任务进度 + */ + @ApiOperation(value = "获取客户邀请列表和任务进度", httpMethod = "GET") + @PreAuthorize("@ss.hasPermi('wecom:fission:getCustomerProgress')") + @Log(title = "获取客户邀请列表和任务进度", businessType = BusinessType.OTHER) + @GetMapping("/{id}/progress/{unionId}") + public AjaxResult getCustomerProgress(@ApiParam("任务id") @PathVariable("id") Long id , @PathVariable("unionId") @ApiParam("微信用户id") String unionId) { - return AjaxResult.success(weTaskFissionService.getCustomerListById(unionId, fissionId)); + WeTaskFission weTaskFission = weTaskFissionService.selectWeTaskFissionById(id); + if (weTaskFission != null) { + long complete = 0L; + long total = weTaskFission.getFissNum(); + List list = weTaskFissionService.getCustomerListById(unionId, String.valueOf(id)); + if (CollectionUtils.isNotEmpty(list)) { + complete = list.size(); + } else { + list = new ArrayList<>(); + } + return AjaxResult.success(WeTaskFissionProgressVO.builder() + .total(total).completed(complete).customers(list).build()); + } else { + throw new WeComException("任务不存在"); + } } } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeTaskFissionProgressVO.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeTaskFissionProgressVO.java new file mode 100644 index 000000000..9e5743459 --- /dev/null +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeTaskFissionProgressVO.java @@ -0,0 +1,24 @@ +package com.linkwechat.wecom.domain.vo; + +import com.linkwechat.wecom.domain.WeCustomer; +import lombok.Builder; +import lombok.Data; + +import java.util.List; + +/** + * @author leejoker <1056650571@qq.com> + * @version 1.0 + * @date 2021/3/20 13:12 + * + *

+ * 客户任务进度和邀请列表 + *

+ */ +@Data +@Builder +public class WeTaskFissionProgressVO { + private Long total; + private Long completed; + private List customers; +} -- Gitee From 89ee955268b8298db00d4852b0b1c1360f47114b Mon Sep 17 00:00:00 2001 From: leejoker <1056650571@qq.com> Date: Sat, 20 Mar 2021 13:57:15 +0800 Subject: [PATCH 16/40] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wecom/WeTaskFissionController.java | 41 ++++++++++++++----- .../vo/WeTaskFissionTotalProgressVO.java | 15 +++++++ .../wecom/service/IWeTaskFissionService.java | 3 ++ .../impl/WeTaskFissionServiceImpl.java | 14 +++++++ 4 files changed, 62 insertions(+), 11 deletions(-) create mode 100644 linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeTaskFissionTotalProgressVO.java diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java index 6eb9e1afb..63eabaffb 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java @@ -3,6 +3,8 @@ package com.linkwechat.web.controller.wecom; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.copier.CopyOptions; import com.alibaba.fastjson.JSONObject; +import com.alibaba.nacos.common.utils.CollectionUtils; +import com.google.common.collect.Lists; import com.linkwechat.common.annotation.Log; import com.linkwechat.common.config.CosConfig; import com.linkwechat.common.constant.HttpStatus; @@ -22,11 +24,11 @@ import com.linkwechat.wecom.domain.dto.WeTaskFissionPosterDTO; import com.linkwechat.wecom.domain.query.WeTaskFissionStatisticQO; import com.linkwechat.wecom.domain.vo.WeTaskFissionProgressVO; import com.linkwechat.wecom.domain.vo.WeTaskFissionStatisticVO; +import com.linkwechat.wecom.domain.vo.WeTaskFissionTotalProgressVO; import com.linkwechat.wecom.service.IWeTaskFissionService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; -import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; @@ -35,7 +37,6 @@ import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.text.ParseException; -import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -236,6 +237,7 @@ public class WeTaskFissionController extends BaseController { return AjaxResult.success(weTaskFissionService.getCustomerListById(null, id)); } + /** * 获取客户邀请列表和任务进度 */ @@ -247,16 +249,33 @@ public class WeTaskFissionController extends BaseController { , @PathVariable("unionId") @ApiParam("微信用户id") String unionId) { WeTaskFission weTaskFission = weTaskFissionService.selectWeTaskFissionById(id); if (weTaskFission != null) { - long complete = 0L; - long total = weTaskFission.getFissNum(); - List list = weTaskFissionService.getCustomerListById(unionId, String.valueOf(id)); - if (CollectionUtils.isNotEmpty(list)) { - complete = list.size(); - } else { - list = new ArrayList<>(); + return AjaxResult.success(weTaskFissionService.getCustomerTaskProgress(weTaskFission, unionId)); + } else { + throw new WeComException("任务不存在"); + } + } + + /** + * 获取任务所有参与客户的完成情况 + */ + @ApiOperation(value = "获取客户邀请列表和任务进度", httpMethod = "GET") + @PreAuthorize("@ss.hasPermi('wecom:fission:getCustomerProgress')") + @Log(title = "获取客户邀请列表和任务进度", businessType = BusinessType.OTHER) + @GetMapping("/{id}/progress") + public AjaxResult> getAllCustomerProgress(@ApiParam("任务id") @PathVariable("id") Long id) { + WeTaskFission weTaskFission = weTaskFissionService.selectWeTaskFissionById(id); + List list = Lists.newArrayList(); + if (weTaskFission != null) { + List customers = weTaskFissionService.getCustomerListById(null, String.valueOf(id)); + if (CollectionUtils.isNotEmpty(customers)) { + customers.forEach(customer -> { + WeTaskFissionTotalProgressVO vo = new WeTaskFissionTotalProgressVO(); + vo.setCustomer(customer); + vo.setProgress(weTaskFissionService.getCustomerTaskProgress(weTaskFission, customer.getUnionid())); + list.add(vo); + }); } - return AjaxResult.success(WeTaskFissionProgressVO.builder() - .total(total).completed(complete).customers(list).build()); + return AjaxResult.success(list); } else { throw new WeComException("任务不存在"); } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeTaskFissionTotalProgressVO.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeTaskFissionTotalProgressVO.java new file mode 100644 index 000000000..2b9de7704 --- /dev/null +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeTaskFissionTotalProgressVO.java @@ -0,0 +1,15 @@ +package com.linkwechat.wecom.domain.vo; + +import com.linkwechat.wecom.domain.WeCustomer; +import lombok.Data; + +/** + * @author leejoker <1056650571@qq.com> + * @version 1.0 + * @date 2021/3/20 13:50 + */ +@Data +public class WeTaskFissionTotalProgressVO { + private WeCustomer customer; + private WeTaskFissionProgressVO progress; +} diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionService.java index 9c6354484..7ec8aee9f 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionService.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionService.java @@ -4,6 +4,7 @@ import com.linkwechat.wecom.domain.WeCustomer; import com.linkwechat.wecom.domain.WeTaskFission; import com.linkwechat.wecom.domain.dto.WeChatUserDTO; import com.linkwechat.wecom.domain.dto.WeTaskFissionPosterDTO; +import com.linkwechat.wecom.domain.vo.WeTaskFissionProgressVO; import com.linkwechat.wecom.domain.vo.WeTaskFissionStatisticVO; import java.util.Date; @@ -90,4 +91,6 @@ public interface IWeTaskFissionService { List getCustomerListById(String unionId, String fissionId); WeTaskFissionStatisticVO taskFissionStatistic(Long taskFissionId, Date startTime, Date endTime); + + WeTaskFissionProgressVO getCustomerTaskProgress(WeTaskFission taskFission, String unionId); } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java index ed129dcdf..c7a2aaafb 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java @@ -23,6 +23,7 @@ import com.linkwechat.wecom.domain.dto.WeTaskFissionPosterDTO; import com.linkwechat.wecom.domain.dto.message.CustomerMessagePushDto; import com.linkwechat.wecom.domain.dto.message.LinkMessageDto; import com.linkwechat.wecom.domain.vo.WeTaskFissionDailyDataVO; +import com.linkwechat.wecom.domain.vo.WeTaskFissionProgressVO; import com.linkwechat.wecom.domain.vo.WeTaskFissionStatisticVO; import com.linkwechat.wecom.mapper.WeTaskFissionMapper; import com.linkwechat.wecom.service.*; @@ -343,6 +344,19 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { return vo; } + @Override + public WeTaskFissionProgressVO getCustomerTaskProgress(WeTaskFission taskFission, String unionId) { + long complete = 0L; + long total = taskFission.getFissNum(); + List list = getCustomerListById(unionId, String.valueOf(taskFission.getId())); + if (CollectionUtils.isNotEmpty(list)) { + complete = list.size(); + } else { + list = new ArrayList<>(); + } + return WeTaskFissionProgressVO.builder().total(total).completed(complete).customers(list).build(); + } + /*************************************** private functions **************************************/ private String getPosterQRCode(String fissionTargetId, WeTaskFissionRecord record, WeCustomer weCustomer) { -- Gitee From 0378a139a7ef0d966163e8fbd279bab35ce728b2 Mon Sep 17 00:00:00 2001 From: leejoker <1056650571@qq.com> Date: Sat, 20 Mar 2021 14:21:56 +0800 Subject: [PATCH 17/40] fix bug --- .../impl/WeTaskFissionServiceImpl.java | 28 ++++++++----------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java index c7a2aaafb..ec8c37521 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java @@ -284,30 +284,26 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { @Override public List getCustomerListById(String unionId, String fissionId) { - WeTaskFissionRecord weTaskFissionRecord = null; + WeTaskFissionRecord weTaskFissionRecord; if (StringUtils.isEmpty(unionId)) { - weTaskFissionRecord = weTaskFissionRecordService - .getOne(new LambdaQueryWrapper().eq(WeTaskFissionRecord::getTaskFissionId, fissionId)); - + List weTaskFissionRecords = weTaskFissionRecordService + .list(new LambdaQueryWrapper().eq(WeTaskFissionRecord::getTaskFissionId, fissionId)); + return Optional.ofNullable(weTaskFissionRecords).orElseGet(ArrayList::new).stream() + .map(record -> weCustomerService.selectWeCustomerById(record.getCustomerId())).collect(Collectors.toList()); } else { WeCustomer weCustomer = weCustomerService.getOne(new LambdaQueryWrapper().eq(WeCustomer::getUnionid, unionId)); String externalUseriId = Optional.ofNullable(weCustomer).map(WeCustomer::getExternalUserid) .orElseThrow(() -> new WeComException("用户信息不存在")); - - weTaskFissionRecord = weTaskFissionRecordService .selectWeTaskFissionRecordByIdAndCustomerId(Long.valueOf(fissionId), externalUseriId); + Optional.ofNullable(weTaskFissionRecord).map(WeTaskFissionRecord::getId) + .orElseThrow(() -> new WeComException("任务记录信息不存在")); + List list = weFlowerCustomerRelService.list(new LambdaQueryWrapper() + .eq(WeFlowerCustomerRel::getState, WeConstans.FISSION_PREFIX + weTaskFissionRecord.getId())); + List eidList = Optional.ofNullable(list).orElseGet(ArrayList::new).stream() + .map(WeFlowerCustomerRel::getExternalUserid).collect(Collectors.toList()); + return weCustomerService.listByIds(eidList); } - - Long recordId = Optional.ofNullable(weTaskFissionRecord).map(WeTaskFissionRecord::getId) - .orElseThrow(() -> new WeComException("任务记录信息不存在")); - - List list = weFlowerCustomerRelService.list(new LambdaQueryWrapper() - .eq(WeFlowerCustomerRel::getState, WeConstans.FISSION_PREFIX + weTaskFissionRecord.getId())); - List eidList = Optional.ofNullable(list).orElseGet(ArrayList::new).stream() - .map(WeFlowerCustomerRel::getExternalUserid).collect(Collectors.toList()); - - return weCustomerService.listByIds(eidList); } @Override -- Gitee From 9a4a19ab54518520be6c4974d59fd6d00df61caa Mon Sep 17 00:00:00 2001 From: leejoker <1056650571@qq.com> Date: Sat, 20 Mar 2021 14:29:42 +0800 Subject: [PATCH 18/40] fix bug --- .../web/controller/wecom/WeTaskFissionController.java | 3 ++- .../wecom/service/impl/WeTaskFissionServiceImpl.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java index 63eabaffb..0171c958c 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java @@ -39,6 +39,7 @@ import java.io.IOException; import java.text.ParseException; import java.util.Date; import java.util.List; +import java.util.Objects; /** @@ -268,7 +269,7 @@ public class WeTaskFissionController extends BaseController { if (weTaskFission != null) { List customers = weTaskFissionService.getCustomerListById(null, String.valueOf(id)); if (CollectionUtils.isNotEmpty(customers)) { - customers.forEach(customer -> { + customers.stream().filter(Objects::nonNull).forEach(customer -> { WeTaskFissionTotalProgressVO vo = new WeTaskFissionTotalProgressVO(); vo.setCustomer(customer); vo.setProgress(weTaskFissionService.getCustomerTaskProgress(weTaskFission, customer.getUnionid())); diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java index ec8c37521..8e3906d0b 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java @@ -289,7 +289,8 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { List weTaskFissionRecords = weTaskFissionRecordService .list(new LambdaQueryWrapper().eq(WeTaskFissionRecord::getTaskFissionId, fissionId)); return Optional.ofNullable(weTaskFissionRecords).orElseGet(ArrayList::new).stream() - .map(record -> weCustomerService.selectWeCustomerById(record.getCustomerId())).collect(Collectors.toList()); + .map(record -> weCustomerService.selectWeCustomerById(record.getCustomerId())) + .filter(Objects::nonNull).collect(Collectors.toList()); } else { WeCustomer weCustomer = weCustomerService.getOne(new LambdaQueryWrapper().eq(WeCustomer::getUnionid, unionId)); String externalUseriId = Optional.ofNullable(weCustomer).map(WeCustomer::getExternalUserid) -- Gitee From 9dce53dfa1b396ee1deb511558e8b3b6dfd61ec1 Mon Sep 17 00:00:00 2001 From: sunxiwang Date: Sat, 20 Mar 2021 22:28:43 +0800 Subject: [PATCH 19/40] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=AE=9D=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/wecom/WeTaskFissionController.java | 6 +++--- .../wecom/WeTaskFissionRewardController.java | 8 ++++---- .../wecom/service/IWeTaskFissionRewardService.java | 4 ++-- .../wecom/service/IWeTaskFissionService.java | 2 +- .../service/impl/WeTaskFissionRewardServiceImpl.java | 4 ++-- .../wecom/service/impl/WeTaskFissionServiceImpl.java | 10 +++++----- 6 files changed, 17 insertions(+), 17 deletions(-) diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java index 0171c958c..b230ba62d 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java @@ -245,12 +245,12 @@ public class WeTaskFissionController extends BaseController { @ApiOperation(value = "获取客户邀请列表和任务进度", httpMethod = "GET") @PreAuthorize("@ss.hasPermi('wecom:fission:getCustomerProgress')") @Log(title = "获取客户邀请列表和任务进度", businessType = BusinessType.OTHER) - @GetMapping("/{id}/progress/{unionId}") + @GetMapping("/{id}/progress/{eid}") public AjaxResult getCustomerProgress(@ApiParam("任务id") @PathVariable("id") Long id - , @PathVariable("unionId") @ApiParam("微信用户id") String unionId) { + , @PathVariable("eid") @ApiParam("客户id") String eid) { WeTaskFission weTaskFission = weTaskFissionService.selectWeTaskFissionById(id); if (weTaskFission != null) { - return AjaxResult.success(weTaskFissionService.getCustomerTaskProgress(weTaskFission, unionId)); + return AjaxResult.success(weTaskFissionService.getCustomerTaskProgress(weTaskFission, eid)); } else { throw new WeComException("任务不存在"); } diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionRewardController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionRewardController.java index 9bb2e0184..a1665cd4e 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionRewardController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionRewardController.java @@ -105,10 +105,10 @@ public class WeTaskFissionRewardController extends BaseController { * 根据微信用户id和任务id获取任务裂变奖励详细信息 */ @ApiOperation(value = "根据微信用户id和任务id获取任务裂变奖励详细信息",httpMethod = "GET") - @PreAuthorize("@ss.hasPermi('wecom:getRewardById:query')") - @GetMapping(value = "/getRewardByFissionId/{fissionId}/{unionId}") + @PreAuthorize("@ss.hasPermi('wecom:getRewardByFissionId:query')") + @GetMapping(value = "/getRewardByFissionId/{fissionId}/{eid}") public AjaxResult getRewardByFissionId(@ApiParam("任务id") @PathVariable("fissionId") String fissionId - , @PathVariable("unionId") @ApiParam("微信用户id") String unionId) { - return AjaxResult.success(weTaskFissionRewardService.getRewardByFissionId(fissionId,unionId)); + , @PathVariable("eid") @ApiParam("客户id") String eid) { + return AjaxResult.success(weTaskFissionRewardService.getRewardByFissionId(fissionId,eid)); } } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionRewardService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionRewardService.java index b606b7113..73a9d54f5 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionRewardService.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionRewardService.java @@ -63,8 +63,8 @@ public interface IWeTaskFissionRewardService { /** * 根据微信用户id和任务id获取任务裂变奖励详细信息 * @param fissionId 任务id - * @param unionId 微信用户id + * @param eid 客户id * @return */ - public WeTaskFissionRewardVo getRewardByFissionId(String fissionId, String unionId); + public WeTaskFissionRewardVo getRewardByFissionId(String fissionId, String eid); } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionService.java index 7ec8aee9f..1b60dbb19 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionService.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionService.java @@ -92,5 +92,5 @@ public interface IWeTaskFissionService { WeTaskFissionStatisticVO taskFissionStatistic(Long taskFissionId, Date startTime, Date endTime); - WeTaskFissionProgressVO getCustomerTaskProgress(WeTaskFission taskFission, String unionId); + WeTaskFissionProgressVO getCustomerTaskProgress(WeTaskFission taskFission, String eid); } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionRewardServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionRewardServiceImpl.java index 5dbb8d5df..7b1e8b7f1 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionRewardServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionRewardServiceImpl.java @@ -105,9 +105,9 @@ public class WeTaskFissionRewardServiceImpl implements IWeTaskFissionRewardServi } @Override - public WeTaskFissionRewardVo getRewardByFissionId(String fissionId, String unionId) { + public WeTaskFissionRewardVo getRewardByFissionId(String fissionId, String eid) { WeTaskFissionRewardVo weTaskFissionRewardVo = new WeTaskFissionRewardVo(); - WeCustomer weCustomer = weCustomerService.getOne(new LambdaQueryWrapper().eq(WeCustomer::getUnionid, unionId)); + WeCustomer weCustomer = weCustomerService.getOne(new LambdaQueryWrapper().eq(WeCustomer::getExternalUserid, eid)); String externalUseriId = Optional.ofNullable(weCustomer).map(WeCustomer::getExternalUserid) .orElseThrow(() -> new WeComException("用户信息不存在")); diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java index 8e3906d0b..9838a89da 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java @@ -283,16 +283,16 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { } @Override - public List getCustomerListById(String unionId, String fissionId) { + public List getCustomerListById(String eid, String fissionId) { WeTaskFissionRecord weTaskFissionRecord; - if (StringUtils.isEmpty(unionId)) { + if (StringUtils.isEmpty(eid)) { List weTaskFissionRecords = weTaskFissionRecordService .list(new LambdaQueryWrapper().eq(WeTaskFissionRecord::getTaskFissionId, fissionId)); return Optional.ofNullable(weTaskFissionRecords).orElseGet(ArrayList::new).stream() .map(record -> weCustomerService.selectWeCustomerById(record.getCustomerId())) .filter(Objects::nonNull).collect(Collectors.toList()); } else { - WeCustomer weCustomer = weCustomerService.getOne(new LambdaQueryWrapper().eq(WeCustomer::getUnionid, unionId)); + WeCustomer weCustomer = weCustomerService.getOne(new LambdaQueryWrapper().eq(WeCustomer::getExternalUserid, eid)); String externalUseriId = Optional.ofNullable(weCustomer).map(WeCustomer::getExternalUserid) .orElseThrow(() -> new WeComException("用户信息不存在")); weTaskFissionRecord = weTaskFissionRecordService @@ -342,10 +342,10 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { } @Override - public WeTaskFissionProgressVO getCustomerTaskProgress(WeTaskFission taskFission, String unionId) { + public WeTaskFissionProgressVO getCustomerTaskProgress(WeTaskFission taskFission, String eid) { long complete = 0L; long total = taskFission.getFissNum(); - List list = getCustomerListById(unionId, String.valueOf(taskFission.getId())); + List list = getCustomerListById(eid, String.valueOf(taskFission.getId())); if (CollectionUtils.isNotEmpty(list)) { complete = list.size(); } else { -- Gitee From 7a59d6b9815ef34ab4721a2434fc258d89b22d1b Mon Sep 17 00:00:00 2001 From: sunxiwang Date: Sat, 20 Mar 2021 23:47:58 +0800 Subject: [PATCH 20/40] fix --- .../common/core/domain/AjaxResult.java | 31 ++++++++++++------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/linkwe-common/src/main/java/com/linkwechat/common/core/domain/AjaxResult.java b/linkwe-common/src/main/java/com/linkwechat/common/core/domain/AjaxResult.java index 89c96c500..4cbacaad7 100644 --- a/linkwe-common/src/main/java/com/linkwechat/common/core/domain/AjaxResult.java +++ b/linkwe-common/src/main/java/com/linkwechat/common/core/domain/AjaxResult.java @@ -4,25 +4,37 @@ import java.util.HashMap; import com.linkwechat.common.utils.StringUtils; import com.linkwechat.common.constant.HttpStatus; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; /** * 操作消息提醒 * * @author ruoyi */ -public class AjaxResult extends HashMap +@ApiModel +public class AjaxResult { private static final long serialVersionUID = 1L; /** 状态码 */ public static final String CODE_TAG = "code"; + @ApiModelProperty("状态码") + private int code; + /** 返回内容 */ public static final String MSG_TAG = "msg"; + @ApiModelProperty("返回内容") + private String msg; + /** 数据对象 */ public static final String DATA_TAG = "data"; + @ApiModelProperty("数据对象") + private T date; + /** * 初始化一个新创建的 AjaxResult 对象,使其表示一个空消息。 */ @@ -38,8 +50,8 @@ public class AjaxResult extends HashMap */ public AjaxResult(int code, String msg) { - super.put(CODE_TAG, code); - super.put(MSG_TAG, msg); + this.code = code; + this.msg = msg; } /** @@ -51,12 +63,9 @@ public class AjaxResult extends HashMap */ public AjaxResult(int code, String msg, T data) { - super.put(CODE_TAG, code); - super.put(MSG_TAG, msg); - if (StringUtils.isNotNull(data)) - { - super.put(DATA_TAG, data); - } + this.code = code; + this.msg = msg; + this.date = data; } /** @@ -74,7 +83,7 @@ public class AjaxResult extends HashMap * * @return 成功消息 */ - public static AjaxResult success(Object data) + public static AjaxResult success(T data) { return AjaxResult.success("操作成功", data); } @@ -97,7 +106,7 @@ public class AjaxResult extends HashMap * @param data 数据对象 * @return 成功消息 */ - public static AjaxResult success(String msg, Object data) + public static AjaxResult success(String msg, T data) { return new AjaxResult(HttpStatus.SUCCESS, msg, data); } -- Gitee From 8835887a8e18027ca425580b556734bd93549013 Mon Sep 17 00:00:00 2001 From: leejoker <1056650571@qq.com> Date: Sun, 21 Mar 2021 12:29:53 +0800 Subject: [PATCH 21/40] =?UTF-8?q?=E4=BF=AE=E6=94=B9AjaxResult?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wecom/WeTaskFissionController.java | 4 +- .../web/core/config/ResponseAdvice.java | 32 +++++ .../common/core/domain/AjaxResult.java | 117 ++++++++++-------- .../domain/dto/WeTaskFissionPosterDTO.java | 4 +- .../impl/WeTaskFissionRewardServiceImpl.java | 10 +- .../impl/WeTaskFissionServiceImpl.java | 2 +- 6 files changed, 110 insertions(+), 59 deletions(-) create mode 100644 linkwe-admin/src/main/java/com/linkwechat/web/core/config/ResponseAdvice.java diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java index b230ba62d..34a95194a 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java @@ -259,9 +259,9 @@ public class WeTaskFissionController extends BaseController { /** * 获取任务所有参与客户的完成情况 */ - @ApiOperation(value = "获取客户邀请列表和任务进度", httpMethod = "GET") + @ApiOperation(value = "获取任务所有参与客户的完成情况", httpMethod = "GET") @PreAuthorize("@ss.hasPermi('wecom:fission:getCustomerProgress')") - @Log(title = "获取客户邀请列表和任务进度", businessType = BusinessType.OTHER) + @Log(title = "获取任务所有参与客户的完成情况", businessType = BusinessType.OTHER) @GetMapping("/{id}/progress") public AjaxResult> getAllCustomerProgress(@ApiParam("任务id") @PathVariable("id") Long id) { WeTaskFission weTaskFission = weTaskFissionService.selectWeTaskFissionById(id); diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/core/config/ResponseAdvice.java b/linkwe-admin/src/main/java/com/linkwechat/web/core/config/ResponseAdvice.java new file mode 100644 index 000000000..a28ab6b67 --- /dev/null +++ b/linkwe-admin/src/main/java/com/linkwechat/web/core/config/ResponseAdvice.java @@ -0,0 +1,32 @@ +package com.linkwechat.web.core.config; + +import com.linkwechat.common.core.domain.AjaxResult; +import lombok.extern.slf4j.Slf4j; +import org.springframework.core.MethodParameter; +import org.springframework.http.MediaType; +import org.springframework.http.server.ServerHttpRequest; +import org.springframework.http.server.ServerHttpResponse; +import org.springframework.web.bind.annotation.RestControllerAdvice; +import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice; + +import java.util.Objects; + +@RestControllerAdvice(basePackages = "com.linkwechat") +@Slf4j +public class ResponseAdvice implements ResponseBodyAdvice { + @Override + public boolean supports(MethodParameter methodParameter, Class aClass) { + return true; + } + + @Override + public Object beforeBodyWrite(Object o, MethodParameter methodParameter, MediaType mediaType, Class aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) { + if (Objects.isNull(o)) { + return AjaxResult.success().build(); + } + if (o instanceof AjaxResult) { + return ((AjaxResult) o).build(); + } + return AjaxResult.success(o).build(); + } +} \ No newline at end of file diff --git a/linkwe-common/src/main/java/com/linkwechat/common/core/domain/AjaxResult.java b/linkwe-common/src/main/java/com/linkwechat/common/core/domain/AjaxResult.java index 4cbacaad7..cdc9e05cc 100644 --- a/linkwe-common/src/main/java/com/linkwechat/common/core/domain/AjaxResult.java +++ b/linkwe-common/src/main/java/com/linkwechat/common/core/domain/AjaxResult.java @@ -1,158 +1,175 @@ package com.linkwechat.common.core.domain; -import java.util.HashMap; - -import com.linkwechat.common.utils.StringUtils; +import com.alibaba.fastjson.JSONObject; import com.linkwechat.common.constant.HttpStatus; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.Optional; /** * 操作消息提醒 - * + * * @author ruoyi */ @ApiModel -public class AjaxResult -{ - private static final long serialVersionUID = 1L; +@Data +public class AjaxResult implements Serializable { + + private static final long serialVersionUID = 7337293201809451832L; + + private HashMap map; - /** 状态码 */ + /** + * 状态码 + */ public static final String CODE_TAG = "code"; @ApiModelProperty("状态码") private int code; - /** 返回内容 */ + /** + * 返回内容 + */ public static final String MSG_TAG = "msg"; @ApiModelProperty("返回内容") private String msg; - /** 数据对象 */ + /** + * 数据对象 + */ public static final String DATA_TAG = "data"; @ApiModelProperty("数据对象") - private T date; + private T data; /** * 初始化一个新创建的 AjaxResult 对象,使其表示一个空消息。 */ - public AjaxResult() - { + public AjaxResult() { + this.map = new HashMap<>(); } /** * 初始化一个新创建的 AjaxResult 对象 - * + * * @param code 状态码 - * @param msg 返回内容 + * @param msg 返回内容 */ - public AjaxResult(int code, String msg) - { + public AjaxResult(int code, String msg) { + this(); this.code = code; this.msg = msg; } /** * 初始化一个新创建的 AjaxResult 对象 - * + * * @param code 状态码 - * @param msg 返回内容 + * @param msg 返回内容 * @param data 数据对象 */ - public AjaxResult(int code, String msg, T data) - { + public AjaxResult(int code, String msg, T data) { + this(); this.code = code; this.msg = msg; - this.date = data; + this.data = data; } /** * 返回成功消息 - * + * * @return 成功消息 */ - public static AjaxResult success() - { + public static AjaxResult success() { return AjaxResult.success("操作成功"); } /** * 返回成功数据 - * + * * @return 成功消息 */ - public static AjaxResult success(T data) - { + public static AjaxResult success(T data) { return AjaxResult.success("操作成功", data); } /** * 返回成功消息 - * + * * @param msg 返回内容 * @return 成功消息 */ - public static AjaxResult success(String msg) - { + public static AjaxResult success(String msg) { return AjaxResult.success(msg, null); } /** * 返回成功消息 - * - * @param msg 返回内容 + * + * @param msg 返回内容 * @param data 数据对象 * @return 成功消息 */ - public static AjaxResult success(String msg, T data) - { - return new AjaxResult(HttpStatus.SUCCESS, msg, data); + public static AjaxResult success(String msg, T data) { + return (AjaxResult) new AjaxResult(HttpStatus.SUCCESS, msg, data); } /** * 返回错误消息 - * + * * @return */ - public static AjaxResult error() - { + public static AjaxResult error() { return AjaxResult.error("操作失败"); } /** * 返回错误消息 - * + * * @param msg 返回内容 * @return 警告消息 */ - public static AjaxResult error(String msg) - { + public static AjaxResult error(String msg) { return AjaxResult.error(msg, null); } /** * 返回错误消息 - * - * @param msg 返回内容 + * + * @param msg 返回内容 * @param data 数据对象 * @return 警告消息 */ - public static AjaxResult error(String msg, Object data) - { + public static AjaxResult error(String msg, Object data) { return new AjaxResult(HttpStatus.ERROR, msg, data); } /** * 返回错误消息 - * + * * @param code 状态码 - * @param msg 返回内容 + * @param msg 返回内容 * @return 警告消息 */ - public static AjaxResult error(int code, String msg) - { + public static AjaxResult error(int code, String msg) { return new AjaxResult(code, msg, null); } + + public void put(String key, Object value) { + this.map.put(key, value); + } + + public JSONObject build() { + JSONObject json = new JSONObject(); + json.put("code", getCode()); + json.put("msg", getMsg()); + json.put("data", getData()); + Optional.ofNullable(getMap()).ifPresent(m -> m.forEach(json::put)); + return json; + } } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WeTaskFissionPosterDTO.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WeTaskFissionPosterDTO.java index 8b985ae06..832ec1d1b 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WeTaskFissionPosterDTO.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WeTaskFissionPosterDTO.java @@ -12,8 +12,8 @@ import lombok.Data; @ApiModel @Data public class WeTaskFissionPosterDTO { - @ApiModelProperty("客户id(微信用户Id)") - private String unionId; + @ApiModelProperty("客户id") + private String eid; @ApiModelProperty("任务id") private Long taskFissionId; diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionRewardServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionRewardServiceImpl.java index 7b1e8b7f1..19f55f9e7 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionRewardServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionRewardServiceImpl.java @@ -1,6 +1,7 @@ package com.linkwechat.wecom.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.linkwechat.common.exception.wecom.WeComException; import com.linkwechat.common.utils.DateUtils; import com.linkwechat.wecom.domain.WeCustomer; @@ -116,20 +117,21 @@ public class WeTaskFissionRewardServiceImpl implements IWeTaskFissionRewardServi .orElseThrow(() -> new WeComException("任务信息不存在")); WeTaskFission weTaskFission = weTaskFissionService.selectWeTaskFissionById(Long.valueOf(fissionId)); - Optional.ofNullable(weTaskFission).ifPresent(fission ->{ + Optional.ofNullable(weTaskFission).ifPresent(fission -> { weTaskFissionRewardVo.setRewardRule(fission.getRewardRule()); weTaskFissionRewardVo.setRewardImageUrl(fission.getRewardImageUrl()); weTaskFissionRewardVo.setRewardUrl(fission.getRewardUrl()); }); - if(completeTime != null){ + if (completeTime != null) { WeTaskFissionReward fissionReward = weTaskFissionRewardMapper.selectOne(new LambdaQueryWrapper() .eq(WeTaskFissionReward::getTaskFissionId, fissionId) .eq(WeTaskFissionReward::getRewardUserId, externalUseriId)); weTaskFissionRewardVo.setWeTaskFissionReward(fissionReward); - + //发放兑奖码之后,置为已使用 + Optional.ofNullable(fissionReward).ifPresent(reward -> weTaskFissionRewardMapper.update(reward, new LambdaUpdateWrapper() + .set(WeTaskFissionReward::getRewardCodeStatus, 1).eq(WeTaskFissionReward::getId, reward.getId()))); } - return weTaskFissionRewardVo; } } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java index 9838a89da..269f43b08 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java @@ -238,7 +238,7 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { @Transactional public String fissionPosterGenerate(WeTaskFissionPosterDTO weTaskFissionPosterDTO) { WeCustomer weCustomer = weCustomerService.getOne(new LambdaQueryWrapper() - .eq(WeCustomer::getUnionid, weTaskFissionPosterDTO.getUnionId())); + .eq(WeCustomer::getExternalUserid, weTaskFissionPosterDTO.getEid())); if (weCustomer != null) { //任务表添加当前客户任务 WeTaskFissionRecord record = getTaskFissionRecordId(weTaskFissionPosterDTO.getTaskFissionId(), weCustomer.getExternalUserid(), weCustomer.getName()); -- Gitee From ae56645d0a06da1210fe3e416993611a5562fe0a Mon Sep 17 00:00:00 2001 From: leejoker <1056650571@qq.com> Date: Sun, 21 Mar 2021 12:46:44 +0800 Subject: [PATCH 22/40] =?UTF-8?q?=E5=BF=BD=E7=95=A5map=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/linkwechat/common/core/domain/AjaxResult.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/linkwe-common/src/main/java/com/linkwechat/common/core/domain/AjaxResult.java b/linkwe-common/src/main/java/com/linkwechat/common/core/domain/AjaxResult.java index cdc9e05cc..9c3e0224c 100644 --- a/linkwe-common/src/main/java/com/linkwechat/common/core/domain/AjaxResult.java +++ b/linkwe-common/src/main/java/com/linkwechat/common/core/domain/AjaxResult.java @@ -1,6 +1,7 @@ package com.linkwechat.common.core.domain; import com.alibaba.fastjson.JSONObject; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.linkwechat.common.constant.HttpStatus; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -21,6 +22,7 @@ public class AjaxResult implements Serializable { private static final long serialVersionUID = 7337293201809451832L; + @JsonIgnore private HashMap map; /** -- Gitee From 70b409f141f54c1c64759bfa13a2f99c4e8097d6 Mon Sep 17 00:00:00 2001 From: sunxiwang Date: Sun, 21 Mar 2021 22:36:47 +0800 Subject: [PATCH 23/40] fix --- .../controller/wecom/WeTaskFissionController.java | 12 ++++++------ .../common/core/controller/BaseController.java | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java index 34a95194a..d74f9816c 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java @@ -63,7 +63,7 @@ public class WeTaskFissionController extends BaseController { @ApiOperation(value = "查询任务宝列表", httpMethod = "GET") @PreAuthorize("@ss.hasPermi('wecom:fission:list')") @GetMapping("/list") - public TableDataInfo list(WeTaskFission weTaskFission) { + public TableDataInfo> list(WeTaskFission weTaskFission) { startPage(); List list = weTaskFissionService.selectWeTaskFissionList(weTaskFission); return getDataTable(list); @@ -75,7 +75,7 @@ public class WeTaskFissionController extends BaseController { @ApiOperation(value = "查询统计信息", httpMethod = "GET") @PreAuthorize("@ss.hasPermi('wecom:fission:stat')") @GetMapping("/stat") - public AjaxResult statistics(WeTaskFissionStatisticQO weTaskFissionStatisticQO) throws ParseException { + public AjaxResult statistics(WeTaskFissionStatisticQO weTaskFissionStatisticQO) throws ParseException { Date st; Date et = DateUtils.getNowDate(); if (weTaskFissionStatisticQO.getSeven()) { @@ -112,7 +112,7 @@ public class WeTaskFissionController extends BaseController { @ApiOperation(value = "获取任务宝详细信息", httpMethod = "GET") @PreAuthorize("@ss.hasPermi('wecom:fission:query')") @GetMapping(value = "/getInfo/{id}") - public AjaxResult getInfo(@PathVariable("id") Long id) { + public AjaxResult getInfo(@PathVariable("id") Long id) { return AjaxResult.success(weTaskFissionService.selectWeTaskFissionById(id)); } @@ -195,7 +195,7 @@ public class WeTaskFissionController extends BaseController { return AjaxResult.error(HttpStatus.NOT_FOUND, "数据不存在"); } weTaskFissionService.completeFissionRecord(id, recordId, weChatUserDTO); - return AjaxResult.success(taskFission.getFissQrcode()); + return AjaxResult.success("操作成功",taskFission.getFissQrcode()); } /** @@ -205,7 +205,7 @@ public class WeTaskFissionController extends BaseController { @PreAuthorize("@ss.hasPermi('wecom:fission:poster')") @Log(title = "生成带二维码的海报", businessType = BusinessType.OTHER) @PostMapping("/poster") - public AjaxResult posterGenerate(@RequestBody WeTaskFissionPosterDTO weTaskFissionPosterDTO) { + public AjaxResult posterGenerate(@RequestBody WeTaskFissionPosterDTO weTaskFissionPosterDTO) { String posterUrl = weTaskFissionService.fissionPosterGenerate(weTaskFissionPosterDTO); JSONObject json = new JSONObject(); json.put("posterUrl", posterUrl); @@ -219,7 +219,7 @@ public class WeTaskFissionController extends BaseController { @Log(title = "上传兑奖图片", businessType = BusinessType.OTHER) @PostMapping("/upload") @ApiOperation(value = "上传兑奖图片", httpMethod = "POST") - public AjaxResult upload(@RequestParam(value = "file") MultipartFile file) throws IOException { + public AjaxResult upload(@RequestParam(value = "file") MultipartFile file) throws IOException { String url = FileUploadUtils.upload2Cos(file, cosConfig); JSONObject json = new JSONObject(); json.put("rewardImageUrl", url); diff --git a/linkwe-common/src/main/java/com/linkwechat/common/core/controller/BaseController.java b/linkwe-common/src/main/java/com/linkwechat/common/core/controller/BaseController.java index eb2416b6b..ca82149e5 100644 --- a/linkwe-common/src/main/java/com/linkwechat/common/core/controller/BaseController.java +++ b/linkwe-common/src/main/java/com/linkwechat/common/core/controller/BaseController.java @@ -64,7 +64,7 @@ public class BaseController * 响应请求分页数据 */ @SuppressWarnings({ "rawtypes", "unchecked" }) - protected TableDataInfo getDataTable(List list) + protected TableDataInfo getDataTable(List list) { TableDataInfo rspData = new TableDataInfo(); rspData.setCode(HttpStatus.SUCCESS); @@ -78,7 +78,7 @@ public class BaseController * 响应请求分页数据 */ @SuppressWarnings({ "rawtypes", "unchecked" }) - protected TableDataInfo getDataTable(PageInfo pageInfo) + protected TableDataInfo getDataTable(PageInfo pageInfo) { TableDataInfo rspData = new TableDataInfo(); rspData.setCode(HttpStatus.SUCCESS); -- Gitee From 9fa32dc3f0a9dc87086d48ce2f30099b55a948a0 Mon Sep 17 00:00:00 2001 From: sunxiwang Date: Sun, 21 Mar 2021 22:52:15 +0800 Subject: [PATCH 24/40] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E6=AD=BB=E9=94=81=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wecom/service/impl/WeCustomerServiceImpl.java | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerServiceImpl.java index b68184f1d..e4b0a2b0b 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerServiceImpl.java @@ -227,18 +227,14 @@ public class WeCustomerServiceImpl extends ServiceImpl weFlowerCustomerRels = iWeFlowerCustomerRelService.list(new LambdaQueryWrapper() - .eq(WeFlowerCustomerRel::getExternalUserid, weCustomer.getExternalUserid())); + .eq(WeFlowerCustomerRel::getExternalUserid, weCustomer.getExternalUserid()) + .eq(WeFlowerCustomerRel::getUserId,userId)); if (CollectionUtil.isNotEmpty(weFlowerCustomerRels)) { List weFlowerCustomerRelIds = weFlowerCustomerRels.stream().map(WeFlowerCustomerRel::getId).collect(Collectors.toList()); - iWeFlowerCustomerTagRelService.remove( - new LambdaQueryWrapper().in(WeFlowerCustomerTagRel::getFlowerCustomerRelId, - weFlowerCustomerRelIds) - ); - - iWeFlowerCustomerRelService.removeByIds( - weFlowerCustomerRelIds - ); + iWeFlowerCustomerTagRelService.remove(new LambdaQueryWrapper() + .in(WeFlowerCustomerTagRel::getFlowerCustomerRelId, weFlowerCustomerRelIds)); + iWeFlowerCustomerRelService.removeByIds(weFlowerCustomerRelIds); } -- Gitee From 04887b8e6b13f6674f8394cd30e35abdc389db5a Mon Sep 17 00:00:00 2001 From: leejoker <1056650571@qq.com> Date: Tue, 23 Mar 2021 21:09:40 +0800 Subject: [PATCH 25/40] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E9=94=99=E8=AF=AF=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/linkwechat/web/core/config/ResponseAdvice.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/core/config/ResponseAdvice.java b/linkwe-admin/src/main/java/com/linkwechat/web/core/config/ResponseAdvice.java index a28ab6b67..a7bc84320 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/core/config/ResponseAdvice.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/core/config/ResponseAdvice.java @@ -27,6 +27,6 @@ public class ResponseAdvice implements ResponseBodyAdvice { if (o instanceof AjaxResult) { return ((AjaxResult) o).build(); } - return AjaxResult.success(o).build(); + return o; } } \ No newline at end of file -- Gitee From 39f97d7a05cbfab281453b90db042273144185e4 Mon Sep 17 00:00:00 2001 From: leejoker <1056650571@qq.com> Date: Tue, 23 Mar 2021 23:46:46 +0800 Subject: [PATCH 26/40] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=20=E4=BF=AE=E5=A4=8D=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E6=89=80=E6=9C=89=E5=AE=A2=E6=88=B7=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wecom/WeTaskFissionController.java | 6 +-- .../wecom/service/IWeTaskFissionService.java | 3 +- .../WeCustomerMessagePushServiceImpl.java | 38 ++++++++++--------- .../impl/WeTaskFissionServiceImpl.java | 9 ++++- .../mapper/wecom/WeTaskFissionMapper.xml | 5 ++- 5 files changed, 36 insertions(+), 25 deletions(-) diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java index d74f9816c..230115527 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java @@ -63,7 +63,7 @@ public class WeTaskFissionController extends BaseController { @ApiOperation(value = "查询任务宝列表", httpMethod = "GET") @PreAuthorize("@ss.hasPermi('wecom:fission:list')") @GetMapping("/list") - public TableDataInfo> list(WeTaskFission weTaskFission) { + public TableDataInfo> list(WeTaskFission weTaskFission) throws ParseException { startPage(); List list = weTaskFissionService.selectWeTaskFissionList(weTaskFission); return getDataTable(list); @@ -100,7 +100,7 @@ public class WeTaskFissionController extends BaseController { @PreAuthorize("@ss.hasPermi('wecom:fission:export')") @Log(title = "任务宝", businessType = BusinessType.EXPORT) @GetMapping("/export") - public AjaxResult export(WeTaskFission weTaskFission) { + public AjaxResult export(WeTaskFission weTaskFission) throws ParseException { List list = weTaskFissionService.selectWeTaskFissionList(weTaskFission); ExcelUtil util = new ExcelUtil(WeTaskFission.class); return util.exportExcel(list, "fission"); @@ -195,7 +195,7 @@ public class WeTaskFissionController extends BaseController { return AjaxResult.error(HttpStatus.NOT_FOUND, "数据不存在"); } weTaskFissionService.completeFissionRecord(id, recordId, weChatUserDTO); - return AjaxResult.success("操作成功",taskFission.getFissQrcode()); + return AjaxResult.success("操作成功", taskFission.getFissQrcode()); } /** diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionService.java index 1b60dbb19..b28469317 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionService.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTaskFissionService.java @@ -7,6 +7,7 @@ import com.linkwechat.wecom.domain.dto.WeTaskFissionPosterDTO; import com.linkwechat.wecom.domain.vo.WeTaskFissionProgressVO; import com.linkwechat.wecom.domain.vo.WeTaskFissionStatisticVO; +import java.text.ParseException; import java.util.Date; import java.util.List; @@ -31,7 +32,7 @@ public interface IWeTaskFissionService { * @param weTaskFission 任务宝 * @return 任务宝集合 */ - public List selectWeTaskFissionList(WeTaskFission weTaskFission); + public List selectWeTaskFissionList(WeTaskFission weTaskFission) throws ParseException; /** * 新增任务宝 diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerMessagePushServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerMessagePushServiceImpl.java index 1783496b7..9e0d30388 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerMessagePushServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerMessagePushServiceImpl.java @@ -1,25 +1,22 @@ package com.linkwechat.wecom.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.json.JSONUtil; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.collect.Lists; import com.linkwechat.common.constant.WeConstans; import com.linkwechat.common.core.redis.RedisCache; -import com.linkwechat.common.enums.ChatType; import com.linkwechat.common.exception.wecom.WeComException; import com.linkwechat.common.utils.DateUtils; -import com.linkwechat.common.utils.SecurityUtils; import com.linkwechat.common.utils.SnowFlakeUtil; -import com.linkwechat.common.utils.StringUtils; import com.linkwechat.wecom.client.WeCustomerMessagePushClient; -import com.linkwechat.wecom.domain.*; -import com.linkwechat.wecom.domain.dto.message.*; +import com.linkwechat.wecom.domain.WeCustomer; +import com.linkwechat.wecom.domain.WeCustomerMessageTimeTask; +import com.linkwechat.wecom.domain.WeGroup; +import com.linkwechat.wecom.domain.dto.message.CustomerMessagePushDto; import com.linkwechat.wecom.domain.vo.CustomerMessagePushVo; import com.linkwechat.wecom.mapper.WeCustomerMessageTimeTaskMapper; import com.linkwechat.wecom.service.*; -import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -27,8 +24,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.text.ParseException; -import java.util.*; -import java.util.stream.Collectors; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; /** * @description: 群发消息服务类 @@ -85,9 +83,13 @@ public class WeCustomerMessagePushServiceImpl implements IWeCustomerMessagePushS // 0 发给客户 if (customerMessagePushDto.getPushType().equals(WeConstans.SEND_MESSAGE_CUSTOMER)) { //查询客户信息列表 - customers = externalUserIds(customerMessagePushDto.getPushRange(), customerMessagePushDto.getStaffId() - , customerMessagePushDto.getDepartment(), customerMessagePushDto.getTag()); - if(CollectionUtils.isEmpty(customers)){ + if ("all".equals(customerMessagePushDto.getTag())) { + customers = externalUserIds(WeConstans.SEND_MESSAGE_CUSTOMER_ALL, null, null, null); + } else { + customers = externalUserIds(customerMessagePushDto.getPushRange(), customerMessagePushDto.getStaffId() + , customerMessagePushDto.getDepartment(), customerMessagePushDto.getTag()); + } + if (CollectionUtils.isEmpty(customers)) { throw new WeComException("没有外部联系人"); } } @@ -104,7 +106,7 @@ public class WeCustomerMessagePushServiceImpl implements IWeCustomerMessagePushS WeGroup weGroup = new WeGroup(); weGroup.setUserIds(customerMessagePushDto.getStaffId()); groups = weGroupService.selectWeGroupList(weGroup); - if(CollectionUtils.isEmpty(customers)){ + if (CollectionUtils.isEmpty(customers)) { throw new WeComException("没有客户群!"); } @@ -116,10 +118,10 @@ public class WeCustomerMessagePushServiceImpl implements IWeCustomerMessagePushS long messageId = SnowFlakeUtil.nextId(); //保存映射信息 - int size = weCustomerMessgaeResultService.workerMappingCustomer(customerMessagePushDto, messageId,customers,groups); + int size = weCustomerMessgaeResultService.workerMappingCustomer(customerMessagePushDto, messageId, customers, groups); //保存微信消息 - weCustomerMessageService.saveWeCustomerMessage(messageId, messageOriginalId, customerMessagePushDto, size,customerMessagePushDto.content()); + weCustomerMessageService.saveWeCustomerMessage(messageId, messageOriginalId, customerMessagePushDto, size, customerMessagePushDto.content()); //保存分类消息信息 weCustomerSeedMessageService.saveSeedMessage(customerMessagePushDto, messageId); @@ -127,11 +129,11 @@ public class WeCustomerMessagePushServiceImpl implements IWeCustomerMessagePushS //发送群发消息 //调用微信api发送消息 if (null == customerMessagePushDto.getSettingTime() || customerMessagePushDto.getSettingTime().equals("")) { - weCustomerMessageService.sendMessgae(customerMessagePushDto, messageId,customers,groups); + weCustomerMessageService.sendMessgae(customerMessagePushDto, messageId, customers, groups); } else { - WeCustomerMessageTimeTask timeTask=new WeCustomerMessageTimeTask(messageId, customerMessagePushDto, customers,groups - ,DateUtils.getMillionSceondsBydate(customerMessagePushDto.getSettingTime())); + WeCustomerMessageTimeTask timeTask = new WeCustomerMessageTimeTask(messageId, customerMessagePushDto, customers, groups + , DateUtils.getMillionSceondsBydate(customerMessagePushDto.getSettingTime())); customerMessageTimeTaskMapper.saveWeCustomerMessageTimeTask(timeTask); diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java index 269f43b08..cbcadc959 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeTaskFissionServiceImpl.java @@ -39,6 +39,7 @@ import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -101,7 +102,13 @@ public class WeTaskFissionServiceImpl implements IWeTaskFissionService { * @return 任务宝 */ @Override - public List selectWeTaskFissionList(WeTaskFission weTaskFission) { + public List selectWeTaskFissionList(WeTaskFission weTaskFission) throws ParseException { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd"); + if (weTaskFission.getStartTime() != null && weTaskFission.getOverTime() != null) { + weTaskFission.setStartTime(sdf.parse(sdf_day.format(weTaskFission.getStartTime()) + " 00:00:00")); + weTaskFission.setOverTime(sdf.parse(sdf_day.format(weTaskFission.getOverTime()) + " 23:59:59")); + } return weTaskFissionMapper.selectWeTaskFissionList(weTaskFission); } diff --git a/linkwe-wecom/src/main/resources/mapper/wecom/WeTaskFissionMapper.xml b/linkwe-wecom/src/main/resources/mapper/wecom/WeTaskFissionMapper.xml index aa3edccaf..05c38ed05 100644 --- a/linkwe-wecom/src/main/resources/mapper/wecom/WeTaskFissionMapper.xml +++ b/linkwe-wecom/src/main/resources/mapper/wecom/WeTaskFissionMapper.xml @@ -41,8 +41,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and task_name like concat('%', #{taskName}, '%') and fiss_info = #{fissInfo} and fiss_num = #{fissNum} - and start_time = #{startTime} - and over_time = #{overTime} + and start_time >= #{startTime} + and customer_tag_id = #{customerTagId} and customer_tag = #{customerTag} and posters_id = #{postersId} @@ -56,6 +56,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and fiss_status = #{fissStatus} and welcome_msg = #{welcomeMsg} + order by create_time desc