diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties
index 841206814bd69a85cbe82b990873c30c702d1fc7..642d572ce90e5085986bdd9c9204b9404f028084 100644
--- a/.mvn/wrapper/maven-wrapper.properties
+++ b/.mvn/wrapper/maven-wrapper.properties
@@ -1,2 +1,2 @@
-distributionUrl=http://10.252.96.249:8081/repository/maven-public//org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
-wrapperUrl=http://10.252.96.249:8081/repository/maven-public//io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
+wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
diff --git a/linkwe-admin/pom.xml b/linkwe-admin/pom.xml
index 49a8ff57a4fe9c408ee868eb3d443624a03a2573..3120daf4437f8bc7256e18e8d73849bef84f6165 100644
--- a/linkwe-admin/pom.xml
+++ b/linkwe-admin/pom.xml
@@ -75,18 +75,13 @@
- com.alibaba.cloud
- spring-cloud-starter-alibaba-nacos-config
+ javax.xml.bind
+ jaxb-api
-
-
-
-
-
- javax.xml.bind
- jaxb-api
+ io.github.leejoker
+ linkwechat-nacos-starter
diff --git a/linkwe-admin/src/main/java/com/linkwechat/LinkWeChatApplication.java b/linkwe-admin/src/main/java/com/linkwechat/LinkWeChatApplication.java
index 760220aead86479ae9da0c2c6068749745e0e679..472e53ac769799aa437dad69e424556d5686bc49 100644
--- a/linkwe-admin/src/main/java/com/linkwechat/LinkWeChatApplication.java
+++ b/linkwe-admin/src/main/java/com/linkwechat/LinkWeChatApplication.java
@@ -6,7 +6,6 @@ import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
-import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.scheduling.annotation.EnableAsync;
/**
@@ -16,13 +15,11 @@ import org.springframework.scheduling.annotation.EnableAsync;
*/
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, PageHelperAutoConfiguration.class})
@MapperScan("com.linkwechat.*.mapper")
-@ForestScan(basePackages = {"com.linkwechat.wecom.client","com.linkwechat.wecom.wxclient"})
+@ForestScan(basePackages = {"com.linkwechat.wecom.client", "com.linkwechat.wecom.wxclient"})
@EnableAsync
-@EnableDiscoveryClient
public class LinkWeChatApplication {
public static void main(String[] args) {
-
SpringApplication.run(LinkWeChatApplication.class, args);
System.out.println("(♥◠‿◠)ノ゙ LinkWeChat启动成功 ლ(´ڡ`ლ)゙ \n" +
" .-------. ____ __ \n" +
diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/common/CommonController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/common/CommonController.java
index c0deb36aa6a68d1c5fe7550b19408d156ceb9e26..0190466b5497ed8402522699f124cbf91e4be8ef 100644
--- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/common/CommonController.java
+++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/common/CommonController.java
@@ -5,19 +5,25 @@ import com.linkwechat.common.config.RuoYiConfig;
import com.linkwechat.common.config.ServerConfig;
import com.linkwechat.common.constant.Constants;
import com.linkwechat.common.core.domain.AjaxResult;
+import com.linkwechat.common.core.domain.FileVo;
import com.linkwechat.common.utils.StringUtils;
import com.linkwechat.common.utils.file.FileUploadUtils;
import com.linkwechat.common.utils.file.FileUtils;
+import com.linkwechat.common.utils.file.MimeTypeUtils;
+import com.linkwechat.framework.web.domain.server.SysFile;
+import com.linkwechat.framework.web.service.FileService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
/**
* 通用请求处理
@@ -31,8 +37,9 @@ public class CommonController {
@Autowired
private ServerConfig serverConfig;
+
@Autowired
- private CosConfig cosConfig;
+ private FileService fileService;
/**
* 通用下载请求
@@ -114,23 +121,32 @@ public class CommonController {
* 通用上传请求
*/
@PostMapping("/common/uploadFile2Cos")
- public AjaxResult uploadFile2Cos(MultipartFile file) throws Exception {
+ public AjaxResult uploadFile2Cos(MultipartFile file){
try {
- String fileName = FileUploadUtils.upload2Cos(file, cosConfig);
-
- AjaxResult ajax = AjaxResult.success();
- ajax.put("fileName", fileName);
- ajax.put("url", url(fileName));
- return ajax;
+ SysFile sysFile
+ = fileService.upload(file);
+ return AjaxResult.success(
+ FileVo.builder()
+ .fileName(sysFile.getFileName())
+ .url(sysFile.getImgUrlPrefix()+sysFile.getFileName())
+ .build()
+ );
} catch (Exception e) {
- return AjaxResult.error(e.getMessage());
+ return AjaxResult.error("不支持当前文件上传或文件过大建议传20MB以内的文件");
}
}
- public String url(String fileName){
- return "https://link-wechat-1251309172.cos.ap-nanjing.myqcloud.com/"+fileName;
+ /**
+ * 获取图片
+ */
+ @GetMapping("/common/findImage")
+ public void findImage(HttpServletResponse response,String fileName){
+ fileService.findImage(fileName,response);
}
+
+
+
}
diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/system/SysLoginController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/system/SysLoginController.java
index ed5e2a3fe8cb983fa02c0a3db9c9c53edd71a681..f570f521ade761589220494ddcdfd1b2b4770dd8 100644
--- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/system/SysLoginController.java
+++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/system/SysLoginController.java
@@ -1,7 +1,9 @@
package com.linkwechat.web.controller.system;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.linkwechat.common.constant.Constants;
import com.linkwechat.common.core.domain.AjaxResult;
+import com.linkwechat.common.core.domain.entity.SysDept;
import com.linkwechat.common.core.domain.entity.SysMenu;
import com.linkwechat.common.core.domain.entity.SysUser;
import com.linkwechat.common.core.domain.model.LoginBody;
@@ -10,11 +12,13 @@ import com.linkwechat.common.utils.ServletUtils;
import com.linkwechat.framework.web.service.SysLoginService;
import com.linkwechat.framework.web.service.SysPermissionService;
import com.linkwechat.framework.web.service.TokenService;
+import com.linkwechat.system.service.ISysDeptService;
import com.linkwechat.system.service.ISysMenuService;
import com.linkwechat.wecom.client.WeAccessTokenClient;
import com.linkwechat.common.core.domain.entity.WeCorpAccount;
import com.linkwechat.wecom.domain.dto.WeLoginUserInfoDto;
import com.linkwechat.wecom.service.IWeCorpAccountService;
+import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@@ -52,6 +56,9 @@ public class SysLoginController
@Autowired
private WeAccessTokenClient weAccessTokenClient;
+ @Autowired
+ private ISysDeptService iSysDeptService;
+
/**
* 登录方法
@@ -86,6 +93,15 @@ public class SysLoginController
Set roles = permissionService.getRolePermission(user);
// 权限集合
Set permissions = permissionService.getMenuPermission(user);
+
+ List sysDepts = iSysDeptService.selectDeptList(SysDept.builder().parentId(new Long(0)).build());
+
+ if(!CollectionUtils.isEmpty(sysDepts)){
+ user.setCompanyName(
+ sysDepts.stream().findFirst().get().getDeptName()
+ );
+ }
+
//校验用户是否拥有可用corpid
WeCorpAccount wxCorpAccount
= iWxCorpAccountService.findValidWeCorpAccount();
@@ -154,19 +170,31 @@ public class SysLoginController
}
+
/**
- * 租户登录
+ * 通过企业id和企业密钥登录
* @param corpId
* @param corpSecret
* @return
*/
- @GetMapping("/tenantLogin")
- public AjaxResult tenantLogin(String corpId,String corpSecret){
- AjaxResult ajax = AjaxResult.success();
+ @GetMapping("/corpLogin")
+ public AjaxResult corpLogin(String corpId,String corpSecret){
+ WeCorpAccount weCorpAccount = iWxCorpAccountService.getOne(new LambdaQueryWrapper()
+ .eq(WeCorpAccount::getCorpId, corpId)
+ .eq(WeCorpAccount::getCorpSecret, corpSecret)
+ .eq(WeCorpAccount::getDelFlag, Constants.NORMAL_CODE));
- return ajax;
+ if(weCorpAccount == null){
+
+ return AjaxResult.error("当前企业id与企业密码不匹配或不存在");
+ }
+
+ return AjaxResult.success(
+ loginService.noPwdLogin(weCorpAccount.getCorpAccount())
+ );
}
+
}
diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeAppController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeAppController.java
index e911068eb3e2cbf61e03bb297d02ef9f41d08218..eb7ebf684dd174746f80c15cb531e1ca60336dfb 100644
--- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeAppController.java
+++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeAppController.java
@@ -34,8 +34,8 @@ public class WeAppController extends BaseController {
- @PostMapping("/updateWeApp")
- public AjaxResult updateWeApp(@RequestBody WeApp weApp){
+ @PutMapping("/updateWeApp")
+ public AjaxResult updateWeApp(@RequestBody WeApp weApp){
iWeAppService.updateWeApp(weApp);
return AjaxResult.success();
}
@@ -47,4 +47,8 @@ public class WeAppController extends BaseController {
+
+
+
+
}
diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCategoryController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCategoryController.java
index f92071599909879db3175d13ed242a1c7d7213ee..9709f0fa9ce8a9949a8f6f97222da5fb6cd8058a 100644
--- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCategoryController.java
+++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCategoryController.java
@@ -1,17 +1,21 @@
package com.linkwechat.web.controller.wecom;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.linkwechat.common.annotation.Log;
+import com.linkwechat.common.constant.Constants;
import com.linkwechat.common.core.controller.BaseController;
import com.linkwechat.common.core.domain.AjaxResult;
import com.linkwechat.common.core.domain.Tree;
import com.linkwechat.common.enums.BusinessType;
import com.linkwechat.wecom.domain.WeCategory;
import com.linkwechat.wecom.service.IWeCategoryService;
+import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -22,14 +26,14 @@ import java.util.List;
*/
@RestController
@RequestMapping("/wecom/category")
+@Api("企业微信素材分类")
public class WeCategoryController extends BaseController {
@Autowired
private IWeCategoryService weCategoryService;
- /**
- * 类目树
- */
+
+
// @PreAuthorize("@ss.hasPermi('wechat:category:list')")
@GetMapping("/list")
@ApiOperation("类目树")
@@ -44,7 +48,7 @@ public class WeCategoryController extends BaseController {
@GetMapping(value = "/{id}")
@ApiOperation("通过id查询类目详细信息")
public AjaxResult getInfo(@PathVariable("id") Long id) {
- return AjaxResult.success(weCategoryService.findWeCategoryById(id));
+ return AjaxResult.success(weCategoryService.getById(id));
}
/**
@@ -55,7 +59,8 @@ public class WeCategoryController extends BaseController {
@PostMapping
@ApiOperation("添加类目")
public AjaxResult add(@RequestBody WeCategory category) {
- return toAjax(weCategoryService.insertWeCategory(category));
+ weCategoryService.insertWeCategory(category);
+ return AjaxResult.success();
}
/**
@@ -66,19 +71,32 @@ public class WeCategoryController extends BaseController {
@PutMapping
@ApiOperation("更新目录")
public AjaxResult edit(@RequestBody WeCategory category) {
- return toAjax(weCategoryService.updateWeCategory(category));
+ weCategoryService.updateWeCategory(category);
+ return AjaxResult.success();
}
/**
* 删除类目
*/
-// @PreAuthorize("@ss.hasPermi('wechat:category:remove')")
+// @PreAuthorize("@ss.hasPermi('wechat:category:remove')") Constants.DELETE_CODE
@Log(title = "删除类目", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
@ApiOperation("删除类目")
public AjaxResult remove(@PathVariable Long[] ids) {
- return toAjax(weCategoryService.deleteWeCategoryByIds(ids));
+ weCategoryService.deleteWeCategoryById(ids);
+// List categorys=new ArrayList<>();
+// for (Long id:ids) {
+// categorys.add(
+// WeCategory.builder()
+// .id(id)
+// .delFlag("55")
+// .build()
+// );
+// }
+// weCategoryService.updateBatchById(categorys);
+
+ return AjaxResult.success();
}
}
diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeChatCollectionController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeChatCollectionController.java
index 293cb70bbbaf6b4538bd76e10cc7bf4370045c73..d9450b2bbd3516446308aa613b20a080dbe997bb 100644
--- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeChatCollectionController.java
+++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeChatCollectionController.java
@@ -35,7 +35,12 @@ public class WeChatCollectionController extends BaseController {
@Log(title = "添加收藏", businessType = BusinessType.INSERT)
@PostMapping("addCollection")
public AjaxResult addCollection(@RequestBody WeChatCollectionDto chatCollectionDto) {
- return toAjax(weChatCollectionService.addCollection(chatCollectionDto.getMaterialId(), chatCollectionDto.getUserId()));
+ boolean b =
+ weChatCollectionService.addCollection(chatCollectionDto.getMaterialId(), chatCollectionDto.getUserId());
+ if(weChatCollectionService.addCollection(chatCollectionDto.getMaterialId(), chatCollectionDto.getUserId())){
+ return AjaxResult.success();
+ }
+ return AjaxResult.success("当前素材不可重复收藏");
}
diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeChatContactMsgController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeChatContactMsgController.java
new file mode 100644
index 0000000000000000000000000000000000000000..06a348f5416a7bc560fda641c65afc0942f3be69
--- /dev/null
+++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeChatContactMsgController.java
@@ -0,0 +1,156 @@
+package com.linkwechat.web.controller.wecom;
+
+import com.alibaba.fastjson.JSONObject;
+import com.linkwechat.common.annotation.Log;
+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.utils.poi.ExcelUtil;
+import com.linkwechat.wecom.domain.WeChatContactMsg;
+import com.linkwechat.wecom.domain.vo.WeChatContactMsgVo;
+import com.linkwechat.wecom.service.IWeChatContactMsgService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 会话消息Controller
+ *
+ * @author ruoyi
+ * @date 2021-07-28
+ */
+@Api(tags = "会话存档管理")
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/chat/msg" )
+public class WeChatContactMsgController extends BaseController {
+
+ private final IWeChatContactMsgService iWeChatContactMsgService;
+
+ /**
+ * 查询会话消息列表
+ */
+ @ApiOperation("查询会话消息列表")
+ @PreAuthorize("@ss.hasPermi('linkwechat:msg:list')")
+ @GetMapping("/list")
+ public TableDataInfo> list(WeChatContactMsg weChatContactMsg) {
+ startPage();
+ List list = iWeChatContactMsgService.queryList(weChatContactMsg);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出会话消息列表
+ */
+ @ApiOperation("导出会话消息列表")
+ @PreAuthorize("@ss.hasPermi('linkwechat:msg:export')" )
+ @Log(title = "会话消息" , businessType = BusinessType.EXPORT)
+ @GetMapping("/export" )
+ public AjaxResult export(WeChatContactMsg weChatContactMsg) {
+ List list = iWeChatContactMsgService.queryList(weChatContactMsg);
+ ExcelUtil util = new ExcelUtil(WeChatContactMsg.class);
+ return util.exportExcel(list, "msg" );
+ }
+
+ /**
+ * 获取会话消息详细信息
+ */
+ @ApiOperation("获取会话消息详细信息")
+ @PreAuthorize("@ss.hasPermi('linkwechat:msg:query')" )
+ @GetMapping(value = "/{id}" )
+ public AjaxResult getInfo(@PathVariable("id" ) Long id) {
+ return AjaxResult.success(iWeChatContactMsgService.getById(id));
+ }
+
+ /**
+ * 新增会话消息
+ */
+ @ApiOperation("新增会话消息")
+ @PreAuthorize("@ss.hasPermi('linkwechat:msg:add')" )
+ @Log(title = "会话消息" , businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody WeChatContactMsg weChatContactMsg) {
+ return toAjax(iWeChatContactMsgService.save(weChatContactMsg) ? 1 : 0);
+ }
+
+ /**
+ * 修改会话消息
+ */
+ @ApiOperation("修改会话消息")
+ @PreAuthorize("@ss.hasPermi('linkwechat:msg:edit')" )
+ @Log(title = "会话消息" , businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody WeChatContactMsg weChatContactMsg) {
+ return toAjax(iWeChatContactMsgService.updateById(weChatContactMsg) ? 1 : 0);
+ }
+
+ /**
+ * 删除会话消息
+ */
+ @ApiOperation("删除会话消息")
+ @PreAuthorize("@ss.hasPermi('linkwechat:msg:remove')" )
+ @Log(title = "会话消息" , businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}" )
+ public AjaxResult remove(@PathVariable Long[] ids) {
+ return toAjax(iWeChatContactMsgService.removeByIds(Arrays.asList(ids)) ? 1 : 0);
+ }
+
+ /**
+ * 外部联系人/单聊 会话列表
+ */
+ @ApiOperation("外部联系人 会话列表")
+ @Log(title = "外部联系人 会话列表" , businessType = BusinessType.OTHER)
+ @GetMapping("/selectExternalChatList/{fromId}" )
+ public AjaxResult> selectExternalChatList(@PathVariable("fromId") String fromId) {
+ return AjaxResult.success(iWeChatContactMsgService.selectExternalChatList(fromId));
+ }
+
+ /**
+ * 外部联系人/单聊 会话列表
+ */
+ @ApiOperation("单聊 会话列表")
+ @Log(title = "单聊 会话列表" , businessType = BusinessType.OTHER)
+ @GetMapping("/selectAloneChatList" )
+ public AjaxResult> selectAloneChatList(WeChatContactMsg weChatContactMsg) {
+ return AjaxResult.success(iWeChatContactMsgService.selectAloneChatList(weChatContactMsg));
+ }
+
+ /**
+ * 内部联系人 会话列表
+ */
+ @ApiOperation("内部联系人 会话列表")
+ @Log(title = "内部联系人 会话列表" , businessType = BusinessType.OTHER)
+ @GetMapping("/selectInternalChatList" )
+ public AjaxResult> selectInternalChatList(@PathVariable("fromId") String fromId) {
+ return AjaxResult.success(iWeChatContactMsgService.selectInternalChatList(fromId));
+ }
+
+ /**
+ * 群聊 会话列表
+ */
+ @ApiOperation("群聊 会话列表")
+ @Log(title = "群聊 会话列表" , businessType = BusinessType.OTHER)
+ @GetMapping("/selectGroupChatList/{fromId}" )
+ public AjaxResult> selectGroupChatList(@PathVariable("fromId") String fromId) {
+ return AjaxResult.success(iWeChatContactMsgService.selectGroupChatList(fromId));
+ }
+
+ /**
+ * 全文检索 会话列表
+ */
+ @ApiOperation("全文检索 会话列表")
+ @Log(title = "全文检索 会话列表" , businessType = BusinessType.OTHER)
+ @GetMapping("/selectFullSearchChatList" )
+ public TableDataInfo> selectFullSearchChatList(WeChatContactMsg weChatContactMsg) {
+ startPage();
+ List list = iWeChatContactMsgService.selectFullSearchChatList(weChatContactMsg);
+ return getDataTable(list);
+ }
+}
diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityGroupSopController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityGroupSopController.java
index 8b87b5727305700141b3633064771bee26931a05..c00d8ec20fa0ea43a663c96f0c5d515b20e40de6 100644
--- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityGroupSopController.java
+++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityGroupSopController.java
@@ -64,11 +64,13 @@ public class WeCommunityGroupSopController extends BaseController {
// @PreAuthorize("@ss.hasPermi('wecom:communityGroupSop:add')")
@PostMapping(path = "/")
public AjaxResult addGroupSop(@Validated @RequestBody WeGroupSopDto groupSopDto) {
- if (!groupSopService.isRuleNameUnique(groupSopDto.getRuleName())) {
- return AjaxResult.error(HttpStatus.BAD_REQUEST, "规则名称已存在");
- }
+
WeGroupSop weGroupSop = new WeGroupSop();
BeanUtils.copyProperties(groupSopDto, weGroupSop);
+
+ if (groupSopService.isNameOccupied(weGroupSop)) {
+ return AjaxResult.error(HttpStatus.BAD_REQUEST, "规则名称已存在");
+ }
weGroupSop.setCreateBy(SecurityUtils.getUsername());
// 群聊id列表
List groupIdList = groupSopDto.getChatIdList();
@@ -116,14 +118,15 @@ public class WeCommunityGroupSopController extends BaseController {
if (null == groupSopService.getGroupSopById(ruleId)) {
return AjaxResult.error(HttpStatus.NOT_FOUND, "该群SOP规则不存在");
}
+ WeGroupSop weGroupSop = new WeGroupSop();
+ weGroupSop.setRuleId(ruleId);
+ BeanUtils.copyProperties(groupSopDto, weGroupSop);
+
// 校验规则名是否可用
- WeGroupSopVo original = groupSopService.getGroupSopById(ruleId);
- if (!groupSopDto.getRuleName().equals(original.getRuleName()) && !groupSopService.isRuleNameUnique(groupSopDto.getRuleName())) {
+ if (groupSopService.isNameOccupied(weGroupSop)) {
return AjaxResult.error(HttpStatus.BAD_REQUEST, "规则名称已存在");
}
- WeGroupSop weGroupSop = new WeGroupSop();
- BeanUtils.copyProperties(groupSopDto, weGroupSop);
- weGroupSop.setRuleId(ruleId);
+
weGroupSop.setUpdateBy(SecurityUtils.getUsername());
// 群聊id列表
List groupIdList = groupSopDto.getChatIdList();
diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityH5Controller.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityH5Controller.java
index 8f0967343ebc1a6018f5c3dc01af757250fa9efb..8c8fb885b4c65470e8d2d78657aaeea5be0a348d 100644
--- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityH5Controller.java
+++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityH5Controller.java
@@ -6,7 +6,7 @@ import com.linkwechat.common.core.domain.entity.SysUser;
import com.linkwechat.common.core.page.TableDataInfo;
import com.linkwechat.common.enums.CommunityTaskType;
import com.linkwechat.system.service.ISysUserService;
-import com.linkwechat.wecom.domain.vo.WeKeywordGroupTaskVo;
+import com.linkwechat.wecom.domain.WeKeywordGroupTask;
import com.linkwechat.wecom.service.IWeCommunityKeywordToGroupService;
import com.linkwechat.wecom.service.IWeGroupSopService;
import com.linkwechat.wecom.service.IWePresTagGroupTaskService;
@@ -106,7 +106,6 @@ public class WeCommunityH5Controller extends BaseController {
}
-
/**
* 用于支持H5页面的名称和关键字检索
*
@@ -116,7 +115,7 @@ public class WeCommunityH5Controller extends BaseController {
@GetMapping(path = "/filter")
public TableDataInfo filter(@RequestParam("word") String word) {
startPage();
- List taskList = keywordToGroupService.filterByNameOrKeyword(word);
+ List taskList = keywordToGroupService.filterByNameOrKeyword(word);
return getDataTable(taskList);
}
}
diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityKeywordGroupController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityKeywordGroupController.java
index 6a42e96430af168dbbd7c1eccf91e6432d68c972..3e6517d0c96b3cba53b71a1064165af4246e5a16 100644
--- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityKeywordGroupController.java
+++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityKeywordGroupController.java
@@ -1,57 +1,42 @@
package com.linkwechat.web.controller.wecom;
-import com.linkwechat.common.constant.HttpStatus;
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.utils.SecurityUtils;
-import com.linkwechat.common.utils.bean.BeanUtils;
import com.linkwechat.wecom.domain.WeKeywordGroupTask;
-import com.linkwechat.wecom.domain.dto.WeKeywordGroupTaskDto;
-import com.linkwechat.wecom.domain.vo.WeKeywordGroupTaskVo;
import com.linkwechat.wecom.service.IWeCommunityKeywordToGroupService;
-import com.linkwechat.wecom.service.IWeGroupCodeService;
+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.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
+import java.util.Date;
import java.util.List;
/**
* 关键词拉群controller
*/
+@Api(tags = "关键词拉群")
@RestController
@RequestMapping(value = "/wecom/communityKeywordGroup")
public class WeCommunityKeywordGroupController extends BaseController {
@Autowired
- private IWeCommunityKeywordToGroupService keywordToGroupService;
+ private IWeCommunityKeywordToGroupService service;
- @Autowired
- private IWeGroupCodeService groupCodeService;
/**
* 根据过滤条件获取关键词拉群任务列表
- *
- * @param taskName 任务名称
- * @param createBy 创建人
- * @param keyword 关键词
- * @param beginTime 开始时间
- * @param endTime 结束时间
- * @return 列表数据
*/
+ @ApiOperation(value = "获取关键词拉群任务列表")
// @PreAuthorize("@ss.hasPermi('wecom:communityKeyword:list')")
@GetMapping(path = "/list")
- public TableDataInfo> list(
- @RequestParam(value = "taskName", required = false) String taskName,
- @RequestParam(value = "createBy", required = false) String createBy,
- @RequestParam(value = "keyword", required = false) String keyword,
- @RequestParam(value = "beginTime", required = false) String beginTime,
- @RequestParam(value = "endTime", required = false) String endTime
- ) {
+ public TableDataInfo> list(WeKeywordGroupTask task) {
startPage();
- List taskList = keywordToGroupService
- .getTaskList(taskName, createBy, keyword, beginTime, endTime);
+ List taskList = service.getTaskList(task);
return getDataTable(taskList);
}
@@ -61,62 +46,43 @@ public class WeCommunityKeywordGroupController extends BaseController {
* @param taskId 任务id
* @return 任务详情
*/
+ @ApiOperation(value = "获取任务详情")
// @PreAuthorize("@ss.hasPermi('wecom:communityKeyword:query')")
@GetMapping(path = "/{taskId}")
- public AjaxResult getTask(@PathVariable("taskId") Long taskId) {
- return AjaxResult.success(keywordToGroupService.getTaskById(taskId));
+ public AjaxResult getTask(@ApiParam("任务id") @PathVariable("taskId") Long taskId) {
+ return AjaxResult.success(service.getTaskById(taskId));
}
/**
* 添加新任务
*
- * @param keywordToGroupDto 添加任务所需的数据
+ * @param task 添加任务所需的数据
* @return 结果
*/
+ @ApiOperation(value = "添加新任务")
// @PreAuthorize("@ss.hasPermi('wecom:communityKeyword:add')")
@PostMapping(path = "/")
- public AjaxResult addTask(@RequestBody @Validated WeKeywordGroupTaskDto keywordToGroupDto) {
- // 群活码必须存在
- if (null == groupCodeService.selectWeGroupCodeById(keywordToGroupDto.getGroupCodeId())) {
- return AjaxResult.error(HttpStatus.NOT_FOUND, "群活码不存在");
+ public AjaxResult addTask(@RequestBody @Validated WeKeywordGroupTask task) {
+ if (service.isNameOccupied(task)) {
+ return AjaxResult.error("关键词拉群任务名称"+ task.getTaskName() +"已存在");
}
- // 任务名称必须唯一
- if (!keywordToGroupService.taskNameIsUnique(keywordToGroupDto.getTaskName())) {
- return AjaxResult.error(HttpStatus.BAD_REQUEST, "任务名称已存在");
- }
- WeKeywordGroupTask task = new WeKeywordGroupTask();
- BeanUtils.copyProperties(keywordToGroupDto, task);
task.setCreateBy(SecurityUtils.getUsername());
- String[] keywords = keywordToGroupDto.getKeywords().split(",");
- return toAjax(keywordToGroupService.addTask(task, keywords));
+ task.setCreateTime(new Date());
+ return toAjax(service.addTask(task));
}
/**
* 根据id及更新数据对指定任务进行更新
- *
- * @param taskId 任务id
- * @param keywordToGroupDto 更新所需数据
- * @return 结果
*/
+ @ApiOperation(value = "更新任务")
// @PreAuthorize("@ss.hasPermi('wecom:communityKeyword:edit')")
- @PutMapping(path = "/{taskId}")
- public AjaxResult updateTask(@PathVariable("taskId") Long taskId, @RequestBody @Validated WeKeywordGroupTaskDto keywordToGroupDto) {
- // 群活码必须存在
- if (null == groupCodeService.selectWeGroupCodeById(keywordToGroupDto.getGroupCodeId())) {
- return AjaxResult.error(HttpStatus.NOT_FOUND, "群活码不存在");
- }
- // 若名称发生更改,则必须唯一
- String inputTaskName = keywordToGroupDto.getTaskName();
- String originalName = keywordToGroupService.getTaskById(taskId).getTaskName();
- if (!originalName.equals(inputTaskName) && !keywordToGroupService.taskNameIsUnique(inputTaskName)) {
- return AjaxResult.error(HttpStatus.BAD_REQUEST, "任务名称已存在");
- }
- WeKeywordGroupTask task = new WeKeywordGroupTask();
- BeanUtils.copyProperties(keywordToGroupDto, task);
+ @PutMapping("/{taskId}")
+ public AjaxResult updateTask(
+ @ApiParam("任务id") @PathVariable("taskId") Long taskId, @RequestBody @Validated WeKeywordGroupTask task) {
task.setTaskId(taskId);
task.setUpdateBy(SecurityUtils.getUsername());
- String[] keywords = keywordToGroupDto.getKeywords().split(",");
- return toAjax(keywordToGroupService.updateTask(task, keywords));
+ task.setUpdateTime(new Date());
+ return toAjax(service.updateTask(task));
}
/**
@@ -125,10 +91,11 @@ public class WeCommunityKeywordGroupController extends BaseController {
* @param ids id列表
* @return 结果
*/
+ @ApiOperation(value = "批量删除任务")
// @PreAuthorize("@ss.hasPermi('wecom:communityKeyword:remove')")
@DeleteMapping(path = "/{ids}")
- public AjaxResult batchDeleteTask(@PathVariable("ids") Long[] ids) {
- return toAjax(keywordToGroupService.batchRemoveTaskByIds(ids));
+ public AjaxResult batchDeleteTask(@ApiParam("待删除任务id数组") @PathVariable("ids") Long[] ids) {
+ return toAjax(service.batchRemoveTaskByIds(ids));
}
}
diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java
index ea6c1e9410d62cdf68d9d6491a49ed39bdc75cb6..3b8c0cc710afa13e5e839002649f3968fff846e1 100644
--- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java
+++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java
@@ -10,6 +10,7 @@ import com.linkwechat.common.enums.BusinessType;
import com.linkwechat.common.exception.wecom.WeComException;
import com.linkwechat.common.utils.StringUtils;
import com.linkwechat.common.utils.file.FileUtils;
+import com.linkwechat.wecom.domain.WeCommunityNewGroup;
import com.linkwechat.wecom.domain.WeEmpleCode;
import com.linkwechat.wecom.domain.dto.WeCommunityNewGroupDto;
import com.linkwechat.wecom.domain.vo.WeCommunityNewGroupVo;
@@ -28,9 +29,8 @@ import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
+import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
@@ -83,7 +83,6 @@ public class WeCommunityNewGroupController extends BaseController {
exc.printStackTrace();
}
});
- return;
}
/**
@@ -98,34 +97,19 @@ public class WeCommunityNewGroupController extends BaseController {
@Log(title = "员工活码批量下载", businessType = BusinessType.OTHER)
@GetMapping("/downloadBatch")
public void downloadBatch(Long[] ids, HttpServletRequest request, HttpServletResponse response) {
+ List
*/
+@ApiModel
@Data
@Builder
public class WeTaskFissionProgressVO {
+ @ApiModelProperty("总数")
private Long total;
+
+ @ApiModelProperty("完成数")
private Long completed;
+
+ @ApiModelProperty("客户列表")
private List customers;
}
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 d3637698e745b40053e577c09b81fff292a47f52..f1a0970f2ed59ef7aa07d64ff3cb38040e718390 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.config.CosConfig;
import com.linkwechat.common.constant.WeConstans;
import com.linkwechat.common.enums.MediaType;
import com.linkwechat.common.utils.StringUtils;
@@ -47,16 +48,27 @@ public class WeCallBackAddExternalContactImpl extends WeEventStrategy {
private IWeTaskFissionRewardService weTaskFissionRewardService;
@Autowired
private IWeTaskFissionService weTaskFissionService;
+ private ThreadLocal weFlowerCustomerRelThreadLocal = new ThreadLocal<>();
+
+ @Autowired
+ private IWeGroupCodeService weGroupCodeService;
+
+ @Autowired
+ private CosConfig cosConfig;
@Override
public void eventHandle(WxCpXmlMessageVO message) {
if (message.getExternalUserId() != null) {
+ WeFlowerCustomerRel weFlowerCustomerRel = weFlowerCustomerRelService.getOne(new LambdaQueryWrapper()
+ .eq(WeFlowerCustomerRel::getExternalUserid, message.getExternalUserId())
+ .eq(WeFlowerCustomerRel::getUserId,message.getUserId()));
+ weFlowerCustomerRelThreadLocal.set(weFlowerCustomerRel);
weCustomerService.getCustomersInfoAndSynchWeCustomer(message.getExternalUserId());
}
if (message.getState() != null && message.getWelcomeCode() != null) {
if (isFission(message.getState())) {
taskFissionRecordHandle(message.getState(), message.getWelcomeCode(), message.getUserId(), message.getExternalUserId());
- }else {
+ } else {
empleCodeHandle(message.getState(), message.getWelcomeCode(), message.getUserId(), message.getExternalUserId());
}
}
@@ -64,6 +76,7 @@ public class WeCallBackAddExternalContactImpl extends WeEventStrategy {
//裂变任务处理
private void taskFissionRecordHandle(String state, String wecomCode, String userId, String externalUserId) {
+ log.info("裂变任务处理 >>>>>>>>>>start");
//查询裂变客户任务记录
String fissionRecordId = state.substring(WeConstans.FISSION_PREFIX.length());
WeTaskFissionRecord weTaskFissionRecord = weTaskFissionRecordService.selectWeTaskFissionRecordById(Long.valueOf(fissionRecordId));
@@ -71,20 +84,23 @@ public class WeCallBackAddExternalContactImpl extends WeEventStrategy {
//查询裂变任务详情
WeTaskFission weTaskFission = weTaskFissionService
.selectWeTaskFissionById(weTaskFissionRecord.getTaskFissionId());
-
- Long fissNum = weTaskFissionRecord.getFissNum() + 1;
- weTaskFissionRecord.setFissNum(fissNum);
-
+ Long fissNum = weTaskFissionRecord.getFissNum();
+ if (weFlowerCustomerRelThreadLocal.get() == null){
+ fissNum++;
+ weTaskFissionRecord.setFissNum(fissNum);
+ }
+ log.info("查询裂变任务详情 >>>>>>>>>>{}",JSONObject.toJSONString(weTaskFissionRecord));
if (weTaskFission != null){
//发送欢迎语
- String welcomeMsg = weTaskFission.getWelcomeMsg();
- WeWelcomeMsg.WeWelcomeMsgBuilder weWelcomeMsgBuilder = JSONObject.parseObject(welcomeMsg, WeWelcomeMsg.WeWelcomeMsgBuilder.class);
- weWelcomeMsgBuilder.welcome_code(wecomCode);
+ WeWelcomeMsg.WeWelcomeMsgBuilder weWelcomeMsgBuilder = WeWelcomeMsg.builder().welcome_code(wecomCode);
+ weWelcomeMsgBuilder.text(WeWelcomeMsg.Text.builder()
+ .content(weTaskFission.getWelcomeMsg()).build());
weCustomerService.sendWelcomeMsg(weWelcomeMsgBuilder.build());
}
//裂变数量完成任务处理,消费兑换码
if (fissNum >= weTaskFission.getFissNum()){
+ log.info("裂变数量完成任务处理,消费兑换码 >>>>>>>>>>{}",fissNum);
weTaskFissionRecord.setCompleteTime(new Date());
WeTaskFissionReward reward = new WeTaskFissionReward();
reward.setTaskFissionId(weTaskFissionRecord.getTaskFissionId());
@@ -95,8 +111,9 @@ public class WeCallBackAddExternalContactImpl extends WeEventStrategy {
fissionReward.setRewardUserId(weTaskFissionRecord.getCustomerId());
weTaskFissionRewardService.updateWeTaskFissionReward(fissionReward);
}
-
+ log.info("裂变任务处理变更 >>>>>>>>>>{}",JSONObject.toJSONString(weTaskFissionRecord));
weTaskFissionRecordService.updateWeTaskFissionRecord(weTaskFissionRecord);
+ log.info("裂变任务处理 >>>>>>>>>>end");
}
}
@@ -113,15 +130,17 @@ public class WeCallBackAddExternalContactImpl extends WeEventStrategy {
log.info("执行发送欢迎语>>>>>>>>>>>>>>>");
WeWelcomeMsg.WeWelcomeMsgBuilder weWelcomeMsgBuilder = WeWelcomeMsg.builder().welcome_code(wecomCode);
WeEmpleCodeDto messageMap = weEmpleCodeService.selectWelcomeMsgByState(state);
- if (messageMap != null) {
+
+ if (StringUtils.isNotNull(messageMap)) {
String empleCodeId = messageMap.getEmpleCodeId();
//查询活码对应标签
List tagList = weEmpleCodeTagService.list(new LambdaQueryWrapper()
.eq(WeEmpleCodeTag::getEmpleCodeId, empleCodeId));
//查询外部联系人与通讯录关系数据
- WeFlowerCustomerRel weFlowerCustomerRel = weFlowerCustomerRelService.getOne(new LambdaQueryWrapper()
- .eq(WeFlowerCustomerRel::getUserId, userId)
- .eq(WeFlowerCustomerRel::getExternalUserid, externalUserId));
+ WeFlowerCustomerRel weFlowerCustomerRel = weFlowerCustomerRelService
+ .getOne(new LambdaQueryWrapper()
+ .eq(WeFlowerCustomerRel::getUserId, userId)
+ .eq(WeFlowerCustomerRel::getExternalUserid, externalUserId));
//为外部联系人添加员工活码标签
List weFlowerCustomerTagRels = new ArrayList<>();
Optional.ofNullable(weFlowerCustomerRel).ifPresent(weFlowerCustomerRel1 -> {
@@ -136,22 +155,24 @@ public class WeCallBackAddExternalContactImpl extends WeEventStrategy {
});
weFlowerCustomerTagRelService.saveOrUpdateBatch(weFlowerCustomerTagRels);
});
+
+ // 发送欢迎语
log.debug(">>>>>>>>>欢迎语查询结果:{}", JSONObject.toJSONString(messageMap));
- if (messageMap != null) {
- if (StringUtils.isNotEmpty(messageMap.getWelcomeMsg())) {
- weWelcomeMsgBuilder.text(WeWelcomeMsg.Text.builder()
- .content(messageMap.getWelcomeMsg()).build());
- }
- if (StringUtils.isNotEmpty(messageMap.getCategoryId())) {
- WeMediaDto weMediaDto = weMaterialService
- .uploadTemporaryMaterial(messageMap.getMaterialUrl(), MediaType.IMAGE.getMediaType(),messageMap.getMaterialName());
- Optional.ofNullable(weMediaDto).ifPresent(media -> {
- weWelcomeMsgBuilder.image(WeWelcomeMsg.Image.builder().media_id(media.getMedia_id())
- .pic_url(media.getUrl()).build());
- });
- }
- weCustomerService.sendWelcomeMsg(weWelcomeMsgBuilder.build());
+ // 设定欢迎语文字
+ if (StringUtils.isNotEmpty(messageMap.getWelcomeMsg())) {
+ weWelcomeMsgBuilder.text(WeWelcomeMsg.Text.builder().content(messageMap.getWelcomeMsg()).build());
}
+ // 设置欢迎语图片
+ // 新客拉群创建的员工活码欢迎语图片(群活码图片)
+ String codeUrl = weGroupCodeService.selectGroupCodeUrlByEmplCodeState(state);
+ if (StringUtils.isNotNull(codeUrl)) {
+ buildWelcomeMsgImg(weWelcomeMsgBuilder, codeUrl, codeUrl.replaceAll(cosConfig.getCosImgUrlPrefix(), ""));
+ }
+ // 普通员工活码欢迎语图片
+ else if (StringUtils.isNotEmpty(messageMap.getCategoryId())) {
+ buildWelcomeMsgImg(weWelcomeMsgBuilder, messageMap.getMaterialUrl(), messageMap.getMaterialName());
+ }
+ weCustomerService.sendWelcomeMsg(weWelcomeMsgBuilder.build());
}
} catch (Exception e) {
e.printStackTrace();
@@ -160,11 +181,20 @@ public class WeCallBackAddExternalContactImpl extends WeEventStrategy {
}
private boolean isFission(String str) {
- if (str.indexOf(WeConstans.FISSION_PREFIX) != -1){
- return true;
- }
- return false;
+ return str.contains(WeConstans.FISSION_PREFIX);
}
-
+ /**
+ * 构建欢迎语的图片部分
+ *
+ * @param builder 欢迎语builder
+ * @param picUrl 图片链接
+ * @param fileName 图片名称
+ */
+ private void buildWelcomeMsgImg(WeWelcomeMsg.WeWelcomeMsgBuilder builder, String picUrl, String fileName) {
+ WeMediaDto weMediaDto = weMaterialService.uploadTemporaryMaterial(picUrl, MediaType.IMAGE.getMediaType(), fileName);
+ Optional.ofNullable(weMediaDto).ifPresent(media -> {
+ builder.image(WeWelcomeMsg.Image.builder().media_id(media.getMedia_id()).pic_url(media.getUrl()).build());
+ });
+ }
}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/factory/impl/customer/WeCallBackDelExternalContactImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/factory/impl/customer/WeCallBackDelExternalContactImpl.java
index 2c2a353d17b08477f77743bfb87ac08b93a17f01..546e10a4113acf5bffd1ce604fdf1ffcc1fe813d 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/factory/impl/customer/WeCallBackDelExternalContactImpl.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/factory/impl/customer/WeCallBackDelExternalContactImpl.java
@@ -36,7 +36,7 @@ public class WeCallBackDelExternalContactImpl extends WeEventStrategy {
@Override
public void eventHandle(WxCpXmlMessageVO message) {
if (message.getExternalUserId() != null) {
- weCustomerService.deleteCustomersByEid(message.getExternalUserId());
+ //weCustomerService.deleteCustomersByEid(message.getExternalUserId());
weFlowerCustomerRelService.deleteFollowUser(message.getUserId(), message.getExternalUserId());
//增加敏感行为记录,员工删除客户
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/factory/impl/customergroup/WeCallBackUpdateGroupImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/factory/impl/customergroup/WeCallBackUpdateGroupImpl.java
index 8ff8d2195a1747b2c4d748254c9d528423faa0a7..462ae4c615b16ad3d5d798f63a005d8dad5587dd 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/factory/impl/customergroup/WeCallBackUpdateGroupImpl.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/factory/impl/customergroup/WeCallBackUpdateGroupImpl.java
@@ -1,14 +1,19 @@
package com.linkwechat.wecom.factory.impl.customergroup;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.thread.ThreadUtil;
import com.linkwechat.common.enums.CallbackEventUpdateDetail;
+import com.linkwechat.wecom.domain.*;
import com.linkwechat.wecom.domain.vo.WxCpXmlMessageVO;
import com.linkwechat.wecom.factory.WeEventStrategy;
-import com.linkwechat.wecom.service.IWeGroupCodeActualService;
-import com.linkwechat.wecom.service.IWeGroupService;
+import com.linkwechat.wecom.service.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+import java.util.*;
+import java.util.stream.Collectors;
+
/**
* @author danmo
* @description 客户群变更事件
@@ -23,6 +28,18 @@ public class WeCallBackUpdateGroupImpl extends WeEventStrategy {
@Autowired
private IWeGroupCodeActualService groupCodeActualService;
+ @Autowired
+ private IWeTaskFissionService taskFissionService;
+
+ @Autowired
+ private IWeTaskFissionRecordService taskFissionRecordService;
+
+ @Autowired
+ private IWeTaskFissionCompleteRecordService taskFissionCompleteRecordService;
+
+ @Autowired
+ private IWeGroupMemberService groupMemberService;
+
@Override
public void eventHandle(WxCpXmlMessageVO message) {
try {
@@ -31,10 +48,52 @@ public class WeCallBackUpdateGroupImpl extends WeEventStrategy {
if (updateDetail.equals(CallbackEventUpdateDetail.ADD_MEMBER.getType())) {
// 添加成员,该群的实际群活码扫码次数需要加1
groupCodeActualService.updateScanTimesByChatId(message.getChatId());
+ ThreadUtil.execAsync(() ->{
+ groupFissionEnterCheck(message.getChatId());
+ });
}
} catch (Exception e) {
e.printStackTrace();
log.error("update>>>>>>>>>param:{},ex:{}",message.getChatId(),e);
}
}
+
+ /**
+ * 群裂变客户入群校验
+ * @param chatId
+ */
+ private void groupFissionEnterCheck(String chatId){
+ log.info("群裂变客户入群校验>>>>>>>>>>>>>>>>>>>>>start");
+ WeGroupCodeActual weGroupCodeActual = groupCodeActualService.selectActualCodeByChatId(chatId);
+ //查询群活码id
+ Long groupCodeId = Optional.ofNullable(weGroupCodeActual).map(WeGroupCodeActual::getGroupCodeId).orElse(0L);
+ //根据群活码id 查询任务列表
+ List taskFissionList = taskFissionService.getTaskFissionListByGroupCodeId(groupCodeId);
+ if(CollectionUtil.isNotEmpty(taskFissionList)){
+ Set taskFissionIdSet = taskFissionList.stream().map(WeTaskFission::getId).collect(Collectors.toSet());
+ Map taskFissionIdNumMap = taskFissionList.stream().collect(Collectors.toMap(WeTaskFission::getId, WeTaskFission::getFissNum));
+ //根据任务id查询裂变任务完成无效哦记录列表
+ List completeRecordList = taskFissionCompleteRecordService.getListByTaskIds(taskFissionIdSet);
+ if(CollectionUtil.isNotEmpty(completeRecordList)){
+ completeRecordList.forEach(completeRecord ->{
+ //查询该成员是否入群
+ WeGroupMember weGroupMember = groupMemberService.selectWeGroupMemberByUnionId(chatId,completeRecord.getCustomerId());
+ if (weGroupMember != null){
+ completeRecord.setStatus(0);
+ if(taskFissionCompleteRecordService.updateWeTaskFissionCompleteRecord(completeRecord) > 0){
+ WeTaskFissionRecord record = taskFissionRecordService.selectWeTaskFissionRecordById(completeRecord.getFissionRecordId());
+ if(record != null){
+ Long fissNum = record.getFissNum() + 1;
+ if (fissNum >= taskFissionIdNumMap.get(record.getTaskFissionId())){
+ record.setCompleteTime(new Date());
+ }
+ record.setFissNum(fissNum);
+ taskFissionRecordService.updateWeTaskFissionRecord(record);
+ }
+ }
+ }
+ });
+ }
+ }
+ }
}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/interceptor/WeAccessTokenInterceptor.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/interceptor/WeAccessTokenInterceptor.java
index 8afe85a2493d3539c1339bd381e1a7b8c954dedc..c2cfb59a5cd6e2aa7e66dd386e4af1d9e954cb9d 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/interceptor/WeAccessTokenInterceptor.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/interceptor/WeAccessTokenInterceptor.java
@@ -1,6 +1,8 @@
package com.linkwechat.wecom.interceptor;
+import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
+import com.dtflys.forest.config.ForestConfiguration;
import com.dtflys.forest.exceptions.ForestRuntimeException;
import com.dtflys.forest.http.ForestRequest;
import com.dtflys.forest.http.ForestResponse;
@@ -14,7 +16,10 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+import javax.annotation.Resource;
import java.util.Arrays;
+import java.util.Iterator;
+import java.util.Map;
/**
* @description: 微信token拦截器
@@ -33,6 +38,9 @@ public class WeAccessTokenInterceptor implements Interceptor{
@Autowired
private WeComeConfig weComeConfig;
+ @Resource
+ private ForestConfiguration forestConfiguration;
+
/**
@@ -40,9 +48,11 @@ public class WeAccessTokenInterceptor implements Interceptor{
*/
@Override
public boolean beforeExecute(ForestRequest request) {
- String uri=request.getUrl().replace("http://","");
+ String weComServerUrl = String.valueOf(forestConfiguration.getVariableValue("weComServerUrl"));
+ String weComePrefix = String.valueOf(forestConfiguration.getVariableValue("weComePrefix"));
+ String uri=request.getUrl().replace(weComServerUrl+weComePrefix,"");
log.info(">>>>>>>>>>>>>>>>>>>>>>>>uri:{}",uri);
- //request.setContentType("application/json");
+
if(!Arrays.asList(weComeConfig.getFileUplodUrl()).contains(uri)){
request.setDataType(ForestDataType.JSON);
request.setContentType("application/json");
@@ -58,19 +68,19 @@ public class WeAccessTokenInterceptor implements Interceptor{
}else if(Arrays.asList(weComeConfig.getNeedChatTokenUrl()).contains(uri)){ //需要会话存档token
token=iWeAccessTokenService.findChatAccessToken();
}else if(Arrays.asList(weComeConfig.getThirdAppUrl()).contains(uri)){ //第三方自建应用token
- token=iWeAccessTokenService.findThirdAppAccessToken(request.getHeaderValue(WeConstans.THIRD_APP_PARAM_TIP));
+ token=iWeAccessTokenService.findThirdAppAccessToken(
+ StrUtil.isEmpty(request.getHeaderValue(WeConstans.THIRD_APP_PARAM_TIP))?(String) request.getQuery(WeConstans.THIRD_APP_PARAM_TIP):request.getHeaderValue(WeConstans.THIRD_APP_PARAM_TIP)
+ );
} else{
token=iWeAccessTokenService.findCommonAccessToken();
}
if (uri.contains("ticket/get")){
request.addQuery("type","agent_config");
}
-
request.addQuery("access_token",token);
}
//添加服务器统一请求地址
- request.setUrl(weComeConfig.getServerUrl()+weComeConfig.getWeComePrefix()+uri);
-
+ // request.setUrl(weComeConfig.getServerUrl()+weComeConfig.getWeComePrefix()+uri);
return true;
}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/interceptor/WeiXinAuthInterceptor.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/interceptor/WeiXinAuthInterceptor.java
index d373f71d1544c3dcd71f471ae87c736ef7d92015..b1e79bfebd019cd54463c2211eb54f2e33a60726 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/interceptor/WeiXinAuthInterceptor.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/interceptor/WeiXinAuthInterceptor.java
@@ -56,21 +56,20 @@ public class WeiXinAuthInterceptor implements Interceptor {
private String findAccessToken(String openId){
//获取用户token
- String accessToken =redisCache.getCacheObject(WeConstans.WX_AUTH_ACCESS_TOKEN+":"+ openId);
- if (StringUtils.isEmpty(accessToken)){
+ WxTokenDto wxTokenDto = redisCache.getCacheObject(WeConstans.WX_AUTH_ACCESS_TOKEN + ":" + openId);
+ if (wxTokenDto == null){
//当用户token失效,则获取refreshToken
String refreshToken = redisCache.getCacheObject(WeConstans.WX_AUTH_REFRESH_ACCESS_TOKEN + ":" + openId);
if(StringUtils.isEmpty(refreshToken)){
throw new WeComException(1001,"token失效,请重新授权");
}else {
- WxTokenDto wxTokenDto = wxAuthClient.refreshToken(appId, secret, grantType, refreshToken);
+ wxTokenDto = wxAuthClient.refreshToken(appId, grantType, refreshToken);
if(wxTokenDto != null && StringUtils.isNotEmpty(wxTokenDto.getAccessToken())){
- redisCache.setCacheObject(WeConstans.WX_AUTH_ACCESS_TOKEN+":"+ openId, wxTokenDto.getAccessToken(), wxTokenDto.getExpiresIn(), TimeUnit.SECONDS);
- accessToken = wxTokenDto.getAccessToken();
+ redisCache.setCacheObject(WeConstans.WX_AUTH_ACCESS_TOKEN+":"+ openId, wxTokenDto, wxTokenDto.getExpiresIn(), TimeUnit.SECONDS);
}
}
}
- return accessToken;
+ return wxTokenDto.getAccessToken();
}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCategoryMapper.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCategoryMapper.java
index b337f7c9c961b9f3bddc8644a428bd094be04667..61a3a51005254fe9aa25736a590955d407ce0287 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCategoryMapper.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCategoryMapper.java
@@ -1,66 +1,11 @@
package com.linkwechat.wecom.mapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.linkwechat.wecom.domain.WeCategory;
import org.apache.ibatis.annotations.Param;
import java.util.List;
-public interface WeCategoryMapper {
-
- /**
- * 保存素材分类
- *
- * @param category 素材分类 信息
- * @return {@link int}
- */
- int insertWeCategory(WeCategory category);
-
- /**
- * 保存素材分类
- *
- * @param category 素材分类 信息
- * @return {@link int}
- */
- int updateWeCategory(WeCategory category);
-
- /**
- * 删除分类信息
- *
- * @param id 主键id
- * @return {@link int}
- */
- int deleteWeCategoryById(@Param("id") Long id);
-
- /**
- * 批量删除
- *
- * @param ids id列表
- * @return {@link int}
- */
- int deleteWeCategoryByIds(Long[] ids);
-
- /**
- * 通过类型查询对应类目的分类信息列表
- *
- * @param mediaType 类型
- * @return {@link WeCategory}s
- */
- List findWeCategoryByMediaType(@Param("mediaType") String mediaType);
-
- /**
- * 通过id查询分类信息
- *
- * @param id 主键id
- * @return {@link WeCategory}
- */
- WeCategory findWeCategoryById(@Param("id") Long id);
-
- /**
- * 通过类型和名称查询类目信息
- *
- * @param mediaType 0 图片(image)、1 语音(voice)、2 视频(video),3 普通文件(file) 4 文本
- * @param name 分类名称
- * @return {@link WeCategory}
- */
- WeCategory findWeCategoryByMediaTypeAndName(@Param("mediaType") String mediaType, @Param("name") String name);
+public interface WeCategoryMapper extends BaseMapper {
+ void deleteWeCategoryById(Long[] ids);
}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeChatContactMappingMapper.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeChatContactMappingMapper.java
index 40072044d993b06d74760e77f08cb7bb36dd33a2..37eaef62735a31259a3c67783fed15a5708abb48 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeChatContactMappingMapper.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeChatContactMappingMapper.java
@@ -3,6 +3,7 @@ package com.linkwechat.wecom.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.linkwechat.wecom.domain.WeChatContactMapping;
+import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@@ -12,6 +13,7 @@ import java.util.List;
* @author ruoyi
* @date 2020-12-27
*/
+@Mapper
public interface WeChatContactMappingMapper extends BaseMapper {
/**
* 查询聊天关系映射
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeChatContactMsgMapper.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeChatContactMsgMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..4468aebe136f3e0ce9e00ba6d061548f776c1ea3
--- /dev/null
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeChatContactMsgMapper.java
@@ -0,0 +1,52 @@
+package com.linkwechat.wecom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.linkwechat.wecom.domain.WeChatContactMsg;
+import com.linkwechat.wecom.domain.vo.WeChatContactMsgVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 会话消息Mapper接口
+ *
+ * @author ruoyi
+ * @date 2021-07-28
+ */
+public interface WeChatContactMsgMapper extends BaseMapper {
+
+ /**
+ * 外部联系人 会话列表
+ * @param fromId 消息发送人id
+ * @return 会话列表
+ */
+ List selectExternalChatList(@Param("fromId") String fromId);
+
+ /**
+ * 单聊 会话列表
+ * @param weChatContactMsg 入参
+ * @return 会话列表
+ */
+ List selectAloneChatList(WeChatContactMsg weChatContactMsg);
+
+ /**
+ * 内部联系人 会话列表
+ * @param fromId 消息发送人id
+ * @return 会话列表
+ */
+ List selectInternalChatList(@Param("fromId") String fromId);
+
+ /**
+ * 群聊 会话列表
+ * @param fromId 消息发送人id
+ * @return 会话列表
+ */
+ List selectGroupChatList(@Param("fromId") String fromId);
+
+ /**
+ * 全文检索 会话列表
+ * @param weChatContactMsg 检索条件
+ * @return 会话列表
+ */
+ List selectFullSearchChatList(WeChatContactMsg weChatContactMsg);
+}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCommunityNewGroupMapper.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCommunityNewGroupMapper.java
index eae90f05eb6fe922de106d2859d8a945740e80c8..b0c2f95c2719a463629d14a563a09edd41e2d5a9 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCommunityNewGroupMapper.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCommunityNewGroupMapper.java
@@ -3,6 +3,7 @@ package com.linkwechat.wecom.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.linkwechat.wecom.domain.WeCommunityNewGroup;
import com.linkwechat.wecom.domain.vo.WeCommunityNewGroupVo;
+import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
@@ -15,7 +16,7 @@ import java.util.Optional;
* @author kewen
* @date 2021-02-19
*/
-@Repository
+@Mapper
public interface WeCommunityNewGroupMapper extends BaseMapper {
/**
@@ -27,9 +28,9 @@ public interface WeCommunityNewGroupMapper extends BaseMapper selectWeCommunityNewGroupList(@Param("emplCodeName") String emplCodeName, @Param("createBy") String createBy
- , @Param("beginTime") String beginTime, @Param("endTime") String endTime);
-
+// List selectWeCommunityNewGroupList(@Param("emplCodeName") String emplCodeName, @Param("createBy") String createBy
+// , @Param("beginTime") String beginTime, @Param("endTime") String endTime);
+ List selectWeCommunityNewGroupList(WeCommunityNewGroup weCommunityNewGroup);
/**
* 获取新客自动拉群详细信息
*
@@ -60,12 +61,4 @@ public interface WeCommunityNewGroupMapper extends BaseMapper
{
- /**
- * 查询企业id相关配置
- *
- * @param id 企业id相关配置ID
- * @return 企业id相关配置
- */
- public WeCorpAccount selectWeCorpAccountById(Long id);
-
- /**
- * 查询企业id相关配置列表
- *
- * @param wxCorpAccount 企业id相关配置
- * @return 企业id相关配置集合
- */
- public List selectWeCorpAccountList(WeCorpAccount wxCorpAccount);
-
- /**
- * 新增企业id相关配置
- *
- * @param wxCorpAccount 企业id相关配置
- * @return 结果
- */
- public int insertWeCorpAccount(WeCorpAccount wxCorpAccount);
-
- /**
- * 修改企业id相关配置
- *
- * @param wxCorpAccount 企业id相关配置
- * @return 结果
- */
- public int updateWeCorpAccount(WeCorpAccount wxCorpAccount);
-
-
-
- /**
- * 获取有效cropid
- * @return
- */
- public WeCorpAccount findValidWeCorpAccount();
/**
@@ -58,13 +19,7 @@ public interface WeCorpAccountMapper
* @param corpId
* @return
*/
- public int startVailWeCorpAccount(@Param("corpId") String corpId);
+ int startVailWeCorpAccount(@Param("corpId") String corpId);
- /**
- * 根据企业账号获取企业相关配置
- * @param corpAccount
- * @return
- */
- WeCorpAccount findWeCorpByAccount(@Param("corpAccount") String corpAccount);
}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCustomerMapper.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCustomerMapper.java
index 6bce0289c2ad80200e97f2adbfbc4925ca8d4f4a..dbed59d8bc88652aa2921301230b9c49e7ca4bb4 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCustomerMapper.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCustomerMapper.java
@@ -71,7 +71,7 @@ public interface WeCustomerMapper extends BaseMapper
* @param externalUserid
* @return
*/
- public List getCustomersByUserId(@Param("externalUserid") String externalUserid);
+ public List getCustomersByUserId(@Param("externalUserid") String externalUserid,@Param("userId") String userId);
/**
* 通过标签查询客户列表
@@ -99,4 +99,14 @@ public interface WeCustomerMapper extends BaseMapper
WeCustomerSocialConn countSocialConn(@Param("externalUserid")String externalUserid,@Param("userid")String userid);
+
+ /**
+ * 查询企业微信客户列表,不查询一对多关系相关数据
+ *
+ * @param weCustomer 企业微信客户
+ * @return 企业微信客户集合
+ */
+ public List selectWeCustomerListNoRel(WeCustomer weCustomer);
+
+
}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCustomerMessageMapper.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCustomerMessageMapper.java
index 271d84b23dbeab964f280837503d2779b9560e87..c2760719c7debe31e4f739fc4266aa9873ca2626 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCustomerMessageMapper.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCustomerMessageMapper.java
@@ -2,8 +2,11 @@ package com.linkwechat.wecom.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.linkwechat.wecom.domain.WeCustomerMessage;
+import com.linkwechat.wecom.domain.dto.message.DetailMessageStatusResultDto;
import org.apache.ibatis.annotations.Param;
+import java.util.List;
+
/**
* 群发消息 微信消息表Mapper接口
*
@@ -30,4 +33,6 @@ public interface WeCustomerMessageMapper extends BaseMapper {
*/
int updateWeCustomerMessageCheckStatusById(@Param("messageId") Long messageId,@Param("status") String status);
+
+
}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeEmpleCodeMapper.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeEmpleCodeMapper.java
index f9c517db99394073640d8b7b7e2a76d3bf1c6548..22dea0523b59ad9f1f97e137dfa15c3e157e2e18 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeEmpleCodeMapper.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeEmpleCodeMapper.java
@@ -3,6 +3,7 @@ package com.linkwechat.wecom.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.linkwechat.wecom.domain.WeEmpleCode;
import com.linkwechat.wecom.domain.dto.WeEmpleCodeDto;
+import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
@@ -14,7 +15,7 @@ import java.util.List;
* @author ruoyi
* @date 2020-10-04
*/
-@Repository
+@Mapper
public interface WeEmpleCodeMapper extends BaseMapper
{
/**
@@ -23,14 +24,14 @@ public interface WeEmpleCodeMapper extends BaseMapper
* @param id 员工活码ID
* @return 员工活码
*/
- public WeEmpleCode selectWeEmpleCodeById(Long id);
+ WeEmpleCode selectWeEmpleCodeById(Long id);
/**
* 批量查询员工活码根据id
* @param ids
* @return
*/
- public List selectWeEmpleCodeByIds(@Param("ids") List ids);
+ List selectWeEmpleCodeByIds(@Param("ids") List ids);
/**
* 查询员工活码列表
@@ -38,7 +39,7 @@ public interface WeEmpleCodeMapper extends BaseMapper
* @param weEmpleCode 员工活码
* @return 员工活码集合
*/
- public List selectWeEmpleCodeList(WeEmpleCode weEmpleCode);
+ List selectWeEmpleCodeList(WeEmpleCode weEmpleCode);
/**
* 新增员工活码
@@ -46,7 +47,7 @@ public interface WeEmpleCodeMapper extends BaseMapper
* @param weEmpleCode 员工活码
* @return 结果
*/
- public int insertWeEmpleCode(WeEmpleCode weEmpleCode);
+ int insertWeEmpleCode(WeEmpleCode weEmpleCode);
/**
* 修改员工活码
@@ -54,7 +55,7 @@ public interface WeEmpleCodeMapper extends BaseMapper
* @param weEmpleCode 员工活码
* @return 结果
*/
- public int updateWeEmpleCode(WeEmpleCode weEmpleCode);
+ int updateWeEmpleCode(WeEmpleCode weEmpleCode);
/**
* 删除员工活码
@@ -62,7 +63,7 @@ public interface WeEmpleCodeMapper extends BaseMapper
* @param id 员工活码ID
* @return 结果
*/
- public int deleteWeEmpleCodeById(Long id);
+ int deleteWeEmpleCodeById(Long id);
/**
* 批量删除员工活码
@@ -70,7 +71,7 @@ public interface WeEmpleCodeMapper extends BaseMapper
* @param ids 需要删除的数据ID
* @return 结果
*/
- public int deleteWeEmpleCodeByIds(Long[] ids);
+ int deleteWeEmpleCodeByIds(Long[] ids);
/**
@@ -79,14 +80,14 @@ public interface WeEmpleCodeMapper extends BaseMapper
* @param ids 需要删除的数据ID
* @return 结果
*/
- public int batchRemoveWeEmpleCodeIds(@Param("ids") List ids);
+ int batchRemoveWeEmpleCodeIds(@Param("ids") List ids);
/**
* 通过活动场景获取客户欢迎语
* @param scenario 活动场景
* @return
*/
- public WeEmpleCodeDto selectWelcomeMsgByScenario(@Param("scenario") String scenario, @Param("userId") String userId);
+ WeEmpleCodeDto selectWelcomeMsgByScenario(@Param("scenario") String scenario, @Param("userId") String userId);
/**
* 通过state定位员工活码
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeGroupCodeActualMapper.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeGroupCodeActualMapper.java
index 7deb951659cc0b4468e58a4ea22938371790319d..41ad7776dcc37a1808ed182ce4d62369ec750e4b 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeGroupCodeActualMapper.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeGroupCodeActualMapper.java
@@ -76,7 +76,7 @@ public interface WeGroupCodeActualMapper extends BaseMapper {
* @param groupCodeId 群活码id
* @return 结果
*/
- List selectActualListByGroupCodeId(Long groupCodeId);
+ List selectActualList(Long groupCodeId);
/**
* 通过群活码id删除实际码
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeGroupCodeMapper.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeGroupCodeMapper.java
index 864d34ed3d1c5ca41beb736378ea2584d0f7235c..62400d8b0b59692e1cc1764d4cbb6d9dd066cb99 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeGroupCodeMapper.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeGroupCodeMapper.java
@@ -15,17 +15,7 @@ import org.springframework.stereotype.Repository;
* @date 2020-10-07
*/
@Mapper
-@Repository
-public interface WeGroupCodeMapper extends BaseMapper
-{
- /**
- * 查询客户群活码
- *
- * @param id 客户群活码ID
- * @return 客户群活码
- */
- WeGroupCode selectWeGroupCodeById(Long id);
-
+public interface WeGroupCodeMapper extends BaseMapper {
/**
* 查询客户群活码列表
*
@@ -34,13 +24,6 @@ public interface WeGroupCodeMapper extends BaseMapper
*/
List selectWeGroupCodeList(WeGroupCode weGroupCode);
- /**
- * 根据群活码id查询群活码列表
- * @param ids id列表
- * @return 结果
- */
- List selectWeGroupCodeListByIds(List ids);
-
/**
* 新增客户群活码
*
@@ -57,37 +40,6 @@ public interface WeGroupCodeMapper extends BaseMapper
*/
int updateWeGroupCode(WeGroupCode weGroupCode);
- /**
- * 删除客户群活码
- *
- * @param id 客户群活码ID
- * @return 结果
- */
- int deleteWeGroupCodeById(Long id);
-
- /**
- * 批量删除客户群活码
- *
- * @param ids 需要删除的数据ID
- * @return 结果
- */
- int deleteWeGroupCodeByIds(Long[] ids);
-
- /**
- * 检测活码名称是否唯一
- * @param activityName 活码名称
- * @return 结果
- */
- int checkActivityNameUnique(String activityName);
-
- /**
- * 根据 uuid获取群活码
- *
- * @param uuid uuid
- * @return 结果
- */
- WeGroupCode getWeGroupByUuid(String uuid);
-
/**
* 根据群活码id获取对应所有群聊信息
* @param groupCodeId 群活码id
@@ -101,4 +53,11 @@ public interface WeGroupCodeMapper extends BaseMapper
* @return 总扫码次数
*/
int selectScanTimesByGroupCodeId(Long groupCodeId);
+
+ /**
+ * 通过员工活码获取群活码,用于新客自动拉群。
+ * @param state 员工活码state
+ * @return 群活码URL
+ */
+ String selectGroupCodeUrlByEmplCodeState(String state);
}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeGroupSopMapper.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeGroupSopMapper.java
index 510c643c200294827cce3ca851aab3f1c5f54ab3..2534354e6af1547122b472d09c87c0166323f4a3 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeGroupSopMapper.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeGroupSopMapper.java
@@ -48,14 +48,6 @@ public interface WeGroupSopMapper extends BaseMapper {
*/
int batchRemoveWeGroupSopByIds(Long[] ruleIds);
- /**
- * 校验规则名是否已存在
- *
- * @param ruleName 规则名
- * @return 结果
- */
- int isRuleNameUnique(String ruleName);
-
/**
* 通过规则id获取其所有素材id
*
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeKeywordGroupTaskKwMapper.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeKeywordGroupTaskKwMapper.java
deleted file mode 100644
index ebf7a8486cb0fc28ddd187e017f032fab1d6dacf..0000000000000000000000000000000000000000
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeKeywordGroupTaskKwMapper.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.linkwechat.wecom.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.linkwechat.wecom.domain.WeKeywordGroupTaskKeyword;
-import org.apache.ibatis.annotations.Mapper;
-import org.springframework.stereotype.Repository;
-
-import java.util.List;
-
-/**
- * 关键词拉群 关键词mapper
- */
-@Mapper
-@Repository
-public interface WeKeywordGroupTaskKwMapper extends BaseMapper {
-
- /**
- * 批量绑定关键词拉群任务与关键词关联
- * @param taskKeywordList 待绑定对象
- * @return 结果
- */
- int batchBindsTaskKeyword(List taskKeywordList);
-}
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 d862bfc8e8009fa1cb9abf6b2d905b655f234c08..66357eafa8bf5a76a29c25c6e30304713439204e 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
@@ -2,10 +2,7 @@ package com.linkwechat.wecom.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.linkwechat.wecom.domain.WeKeywordGroupTask;
-import com.linkwechat.wecom.domain.vo.WeKeywordGroupTaskVo;
import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-import org.springframework.stereotype.Repository;
import java.util.List;
@@ -13,49 +10,21 @@ import java.util.List;
* 关键词拉群mapper
*/
@Mapper
-@Repository
public interface WeKeywordGroupTaskMapper extends BaseMapper {
/**
* 根据过滤条件获取关键词拉群任务列表
- *
- * @param taskName 任务名称
- * @param createBy 创建人
- * @param keyword 关键词
- * @param beginTime 开始时间
- * @param endTime 结束时间
- * @return 列表数据
- */
- List getTaskList(
- @Param("taskName") String taskName,
- @Param("createBy") String createBy,
- @Param("keyword") String keyword,
- @Param("beginTime") String beginTime,
- @Param("endTime") String endTime
- );
-
- /**
- * 根据id获取任务性情
- *
- * @param taskId 任务id
+ * @param task 查询信息
* @return 结果
*/
- WeKeywordGroupTaskVo getTaskById(Long taskId);
+ List getTaskList(WeKeywordGroupTask task);
/**
- * 根据任务id获取对应所有的群聊名称
+ * 根据id获取任务性情
*
* @param taskId 任务id
* @return 结果
*/
- List getGroupNameListByTaskId(Long taskId);
-
- /**
- * 校验名称是否唯一
- *
- * @param taskName 任务名
- * @return 结果
- */
- int checkNameUnique(String taskName);
+ WeKeywordGroupTask getTaskById(Long taskId);
/**
* 通过名称或者关键词进行过滤
@@ -63,5 +32,5 @@ public interface WeKeywordGroupTaskMapper extends BaseMapper
* @param word 过滤字段
* @return 结果
*/
- List filterByNameOrKeyword(String word);
+ List filterByNameOrKeyword(String word);
}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WePresTagGroupTaskMapper.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WePresTagGroupTaskMapper.java
index 6ffd57b599b531e9491ae9c79eae1f6fa78e00da..52fd973805b57e947d0432206608a143f141bc29 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WePresTagGroupTaskMapper.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WePresTagGroupTaskMapper.java
@@ -1,17 +1,18 @@
package com.linkwechat.wecom.mapper;
import com.linkwechat.wecom.domain.vo.WePresTagGroupTaskVo;
+import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.linkwechat.wecom.domain.WePresTagGroupTask;
-import org.springframework.stereotype.Repository;
+import org.springframework.security.core.parameters.P;
import java.util.List;
/**
* 老客户标签建群相关Mapper接口
*/
-@Repository
+@Mapper
public interface WePresTagGroupTaskMapper extends BaseMapper {
/**
@@ -53,14 +54,6 @@ public interface WePresTagGroupTaskMapper extends BaseMapper
@Param("endTime") String endTime
);
- /**
- * 检测任务名是否已被占用
- *
- * @param taskName 任务名
- * @return 是否被占用
- */
- int checkTaskNameUnique(String taskName);
-
/**
* 获取某员工的任务
*
@@ -70,4 +63,19 @@ public interface WePresTagGroupTaskMapper extends BaseMapper
*/
List getTaskListByEmplId(@Param("emplId") String emplId, @Param("isDone") boolean isDone);
+ /**
+ * 根据task获取员工信息
+ * @param task
+ * @return
+ */
+ List selectStaffList(WePresTagGroupTask task);
+
+ List selectExternalUserIds(
+ @Param("taskId") Long taskId,
+ @Param("hasScope") boolean hasScope,
+ @Param("hasTag") boolean hasTag,
+ @Param("gender") Integer gender,
+ @Param("beginTime") String beginTime,
+ @Param("endTime") String endTime
+ );
}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeTaskFissionMapper.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeTaskFissionMapper.java
index 5727810cd1af129cc007b161b60da843cf2a0b0d..b3c710389fd5939dae95b0d3cd134dbbcf8329eb 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeTaskFissionMapper.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeTaskFissionMapper.java
@@ -1,5 +1,6 @@
package com.linkwechat.wecom.mapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.linkwechat.wecom.domain.WeTaskFission;
import java.util.List;
@@ -10,7 +11,7 @@ import java.util.List;
* @author leejoker
* @date 2021-01-20
*/
-public interface WeTaskFissionMapper {
+public interface WeTaskFissionMapper extends BaseMapper {
/**
* 查询任务宝
*
@@ -58,4 +59,10 @@ public interface WeTaskFissionMapper {
* @return 结果
*/
public int deleteWeTaskFissionByIds(Long[] ids);
+
+ /**
+ * 更新过期任务
+ * @return
+ */
+ public void updateExpiredWeTaskFission();
}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeUserMapper.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeUserMapper.java
index 5ff24a15341ccfcf7ab864fe7a2eaf6b344020f3..d4fa04d8f6e062f67c728d4883d61ca7bb75351a 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeUserMapper.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeUserMapper.java
@@ -7,7 +7,6 @@ import com.linkwechat.wecom.domain.vo.WeAllocateCustomersVo;
import com.linkwechat.wecom.domain.vo.WeAllocateGroupsVo;
import com.linkwechat.wecom.domain.vo.WeLeaveUserVo;
import org.apache.ibatis.annotations.Param;
-import org.springframework.stereotype.Repository;
import java.util.List;
@@ -17,7 +16,6 @@ import java.util.List;
* @author ruoyi
* @date 2020-08-31
*/
-@Repository
public interface WeUserMapper extends BaseMapper
{
/**
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeAccessTokenService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeAccessTokenService.java
index 5aa4fa6d77c7331c314b27636e70f712b6a6e7c6..69c151e3219bf241215e0babbc156a1442975407 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeAccessTokenService.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeAccessTokenService.java
@@ -1,5 +1,8 @@
package com.linkwechat.wecom.service;
+import com.linkwechat.common.core.domain.entity.WeCorpAccount;
+import com.linkwechat.wecom.domain.WeApp;
+
/**
* @description: 微信token相关接口
* @author: My
@@ -21,5 +24,7 @@ public interface IWeAccessTokenService {
public String findThirdAppAccessToken(String agentId);
- public void removeToken();
+
+
+ public void removeToken(WeCorpAccount wxCorpAccount);
}
\ No newline at end of file
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCategoryService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCategoryService.java
index bbcaf3d808b74522753d23eeb332f9e6857965c9..b555f4bcd674a0d73b342b01b570817ade6b21a2 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCategoryService.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCategoryService.java
@@ -1,5 +1,6 @@
package com.linkwechat.wecom.service;
+import com.baomidou.mybatisplus.extension.service.IService;
import com.linkwechat.common.core.domain.Tree;
import com.linkwechat.wecom.domain.WeCategory;
import com.linkwechat.wecom.domain.vo.WeCategoryVo;
@@ -7,39 +8,23 @@ import org.apache.ibatis.annotations.Param;
import java.util.List;
-public interface IWeCategoryService {
+public interface IWeCategoryService extends IService {
/**
* 保存素材分类
*
* @param category 素材分类 信息
- * @return {@link int}
*/
- int insertWeCategory(WeCategory category);
+ void insertWeCategory(WeCategory category);
/**
* 保存素材分类
*
* @param category 素材分类 信息
- * @return {@link int}
*/
- int updateWeCategory(WeCategory category);
+ void updateWeCategory(WeCategory category);
- /**
- * 删除分类信息
- *
- * @param id 主键id
- * @return {@link int}
- */
- int deleteWeCategoryById(Long id);
- /**
- * 批量删除
- *
- * @param ids id列表
- * @return {@link int}
- */
- int deleteWeCategoryByIds(Long[] ids);
/**
* 通过类型查询对应类目的分类信息列表
@@ -49,12 +34,8 @@ public interface IWeCategoryService {
*/
List extends Tree>> findWeCategoryByMediaType(@Param("mediaType") String mediaType);
- /**
- * 通过id查询分类信息
- *
- * @param id 主键id
- * @return {@link WeCategory}
- */
- WeCategory findWeCategoryById(@Param("id") Long id);
+ void deleteWeCategoryById(Long[] ids);
+
+
}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeChatCollectionService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeChatCollectionService.java
index e7b6a6487bcc6f42aabab81ca8a7cd489f7520b3..1a2296df730e57645e2608cfb491de3f54332483 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeChatCollectionService.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeChatCollectionService.java
@@ -20,7 +20,7 @@ public interface IWeChatCollectionService extends IService {
* @param userId 用户id
* @return 结果
*/
- public int addCollection( Long materialId, String userId);
+ public boolean addCollection( Long materialId, String userId);
/**
* 取消收藏
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeChatContactMsgService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeChatContactMsgService.java
new file mode 100644
index 0000000000000000000000000000000000000000..a218888bb6e03be8b156d784000a5e34b85371b0
--- /dev/null
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeChatContactMsgService.java
@@ -0,0 +1,57 @@
+package com.linkwechat.wecom.service;
+
+import com.linkwechat.wecom.domain.WeChatContactMsg;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.linkwechat.wecom.domain.vo.WeChatContactMsgVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 会话消息Service接口
+ *
+ * @author ruoyi
+ * @date 2021-07-28
+ */
+public interface IWeChatContactMsgService extends IService {
+
+ /**
+ * 查询列表
+ */
+ List queryList(WeChatContactMsg weChatContactMsg);
+
+ /**
+ * 外部联系人 会话列表
+ * @param fromId 消息发送人id
+ * @return 会话列表
+ */
+ List selectExternalChatList(String fromId);
+
+ /**
+ * 单聊 会话列表
+ * @param weChatContactMsg 入参
+ * @return 会话列表
+ */
+ List selectAloneChatList(WeChatContactMsg weChatContactMsg);
+
+ /**
+ * 内部联系人 会话列表
+ * @param fromId 消息发送人id
+ * @return 会话列表
+ */
+ List selectInternalChatList(String fromId);
+
+ /**
+ * 群聊 会话列表
+ * @param fromId 消息发送人id
+ * @return 会话列表
+ */
+ List selectGroupChatList(String fromId);
+
+ /**
+ * 全文检索 会话列表
+ * @param weChatContactMsg 检索条件
+ * @return 会话列表
+ */
+ List selectFullSearchChatList(WeChatContactMsg weChatContactMsg);
+}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCommunityKeywordToGroupService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCommunityKeywordToGroupService.java
index b2a19620adb732c5bb5b9a3cac072c99b23639da..24596820f9a29278a1e97abc066e27f019626378 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCommunityKeywordToGroupService.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCommunityKeywordToGroupService.java
@@ -1,26 +1,21 @@
package com.linkwechat.wecom.service;
+import com.baomidou.mybatisplus.extension.service.IService;
import com.linkwechat.wecom.domain.WeKeywordGroupTask;
-import com.linkwechat.wecom.domain.vo.WeKeywordGroupTaskVo;
import java.util.List;
/**
* 社区运营 - 关键词拉群任务Service
*/
-public interface IWeCommunityKeywordToGroupService {
+public interface IWeCommunityKeywordToGroupService extends IService {
/**
* 根据过滤条件获取关键词拉群任务列表
- *
- * @param taskName 任务名称
- * @param createBy 创建人
- * @param keyword 关键词
- * @param beginTime 开始时间
- * @param endTime 结束时间
- * @return 列表数据
+ * @param task 查询信息
+ * @return 结果
*/
- List getTaskList(String taskName, String createBy, String keyword, String beginTime, String endTime);
+ List getTaskList(WeKeywordGroupTask task);
/**
* 根据id获取任务性情
@@ -28,25 +23,22 @@ public interface IWeCommunityKeywordToGroupService {
* @param taskId 任务id
* @return 结果
*/
- WeKeywordGroupTaskVo getTaskById(Long taskId);
+ WeKeywordGroupTask getTaskById(Long taskId);
/**
* 创建新任务
*
- * @param task 待存储的对象
- * @param keywords 关键词
+ * @param task 任务信息
* @return 结果
*/
- int addTask(WeKeywordGroupTask task, String[] keywords);
+ int addTask(WeKeywordGroupTask task);
/**
* 对指定任务进行更新
- *
- * @param task 待更新对象
- * @param keywords 关键词
+ * @param task 任务信息
* @return 结果
*/
- int updateTask(WeKeywordGroupTask task, String[] keywords);
+ int updateTask(WeKeywordGroupTask task);
/**
* 根据id列表批量删除任务
@@ -59,11 +51,10 @@ public interface IWeCommunityKeywordToGroupService {
/**
* 检测任务名是否唯一
*
- * @param taskName 任务名
+ * @param task 任务信息
* @return 结果
*/
- boolean taskNameIsUnique(String taskName);
-
+ boolean isNameOccupied(WeKeywordGroupTask task);
/**
* 通过名称或者关键词进行过滤
@@ -71,5 +62,5 @@ public interface IWeCommunityKeywordToGroupService {
* @param word 过滤字段
* @return 结果
*/
- List filterByNameOrKeyword(String word);
+ List filterByNameOrKeyword(String word);
}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCommunityNewGroupService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCommunityNewGroupService.java
index a44ce8b157e3e9d1e2a2ab5cdd40f9307e60fb90..2c7e9b84eb1c6cd14f414edb32fdbfc0a43c1447 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCommunityNewGroupService.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCommunityNewGroupService.java
@@ -27,9 +27,10 @@ public interface IWeCommunityNewGroupService extends IService selectWeCommunityNewGroupList(String emplCodeName, String createBy, String beginTime, String endTime);
+ List selectWeCommunityNewGroupList(WeCommunityNewGroup weCommunityNewGroup);
/**
* 获取新客自动拉群详细信息
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCorpAccountService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCorpAccountService.java
index 75374cfc744346178183e025793e741a33e9323f..282613f65ebbc65449a866552594d0a12ad947fb 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCorpAccountService.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCorpAccountService.java
@@ -1,40 +1,17 @@
package com.linkwechat.wecom.service;
+import com.baomidou.mybatisplus.extension.service.IService;
import com.linkwechat.common.core.domain.entity.WeCorpAccount;
-import java.util.List;
-
/**
* 企业id相关配置Service接口
*
* @author ruoyi
* @date 2020-08-24
*/
-public interface IWeCorpAccountService
+public interface IWeCorpAccountService extends IService
{
- /**
- * 查询企业id相关配置
- *
- * @param id 企业id相关配置ID
- * @return 企业id相关配置
- */
- public WeCorpAccount selectWeCorpAccountById(Long id);
- /**
- * 查询企业id相关配置列表
- *
- * @param wxCorpAccount 企业id相关配置
- * @return 企业id相关配置集合
- */
- public List selectWeCorpAccountList(WeCorpAccount wxCorpAccount);
-
- /**
- * 新增企业id相关配置
- *
- * @param wxCorpAccount 企业id相关配置
- * @return 结果
- */
- public int insertWeCorpAccount(WeCorpAccount wxCorpAccount);
/**
* 修改企业id相关配置
@@ -42,7 +19,7 @@ public interface IWeCorpAccountService
* @param wxCorpAccount 企业id相关配置
* @return 结果
*/
- public int updateWeCorpAccount(WeCorpAccount wxCorpAccount);
+ void updateWeCorpAccount(WeCorpAccount wxCorpAccount);
@@ -51,27 +28,27 @@ public interface IWeCorpAccountService
*
* @return 结果
*/
- public WeCorpAccount findValidWeCorpAccount();
+ WeCorpAccount findValidWeCorpAccount();
/**
* 启用有效的企业微信账号
* @param corpId
*/
- public int startVailWeCorpAccount(String corpId);
+ int startVailWeCorpAccount(String corpId);
/**
* 客户流失通知开关
* @param status 开关状态
* @return
*/
- public int startCustomerChurnNoticeSwitch(String status);
+ void startCustomerChurnNoticeSwitch(String status);
/**
* 客户流失通知开关查询
*/
- public String getCustomerChurnNoticeSwitch();
+ String getCustomerChurnNoticeSwitch();
+
- WeCorpAccount findWeCorpByAccount(String corpAccount);
}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerMessagePushService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerMessagePushService.java
index 502489195f8bb5295d37d22fff9cd5e45070677f..35c6b9ebb9fdcb8ffb477b165f89bde3735dbcf9 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerMessagePushService.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerMessagePushService.java
@@ -18,9 +18,9 @@ public interface IWeCustomerMessagePushService {
/**
* 新增群发消息发送
*
- *@param customerMessagePushDto 原始数据信息
+ *@param customerMessagePush 原始数据信息
*/
- public void addWeCustomerMessagePush(CustomerMessagePushDto customerMessagePushDto) throws JsonProcessingException, ParseException;
+ public void addWeCustomerMessagePush(CustomerMessagePushDto customerMessagePush) throws JsonProcessingException, ParseException, CloneNotSupportedException;
/**
* 群发消息列表
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerService.java
index a7164be33862d4ae8319d4f4b701c17cf14fae50..5baa36a956f6c2d3568dad0d69af86f5bbce1d35 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerService.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerService.java
@@ -128,6 +128,22 @@ public interface IWeCustomerService extends IService
void updateWeCustomerPortrait(WeCustomerPortrait weCustomerPortrait);
+ /**
+ * 查询全部客户列表
+ * @param weCustomer
+ * @return
+ */
+ public List selectWeCustomerAllList(WeCustomer weCustomer);
+
+ /**
+ * 查询企业微信客户列表,不查询一对多关系相关数据
+ *
+ * @param weCustomer 企业微信客户
+ * @return 企业微信客户集合
+ */
+ List selectWeCustomerListNoRel(WeCustomer weCustomer);
+
+
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerTrajectoryService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerTrajectoryService.java
index 700bc077641cfb2315fc2735cf60e4226a7f6d5d..00ce9bef189ed4262ad12da63cff5e2c0346445d 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerTrajectoryService.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerTrajectoryService.java
@@ -5,4 +5,9 @@ import com.linkwechat.wecom.domain.WeCustomerTrajectory;
public interface IWeCustomerTrajectoryService extends IService {
+ void waitHandleMsg(String url);
+
+
+ void inforMationNews(String userId,String externalUserid,Integer trajectoryType);
+
}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeEmpleCodeService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeEmpleCodeService.java
index 3ade394fa8943aadaccec72751b0d89d3200c09d..3329dac7619ac3a4caecfd35a026db18851b155f 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeEmpleCodeService.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeEmpleCodeService.java
@@ -22,14 +22,14 @@ public interface IWeEmpleCodeService extends IService
* @param id 员工活码ID
* @return 员工活码
*/
- public WeEmpleCode selectWeEmpleCodeById(Long id);
+ WeEmpleCode selectWeEmpleCodeById(Long id);
/**
* 批量查询员工活码
* @param ids 员工活码ID
* @return
*/
- public List selectWeEmpleCodeByIds(List ids);
+ List selectWeEmpleCodeByIds(List ids);
/**
* 查询员工活码列表
@@ -37,7 +37,7 @@ public interface IWeEmpleCodeService extends IService
* @param weEmpleCode 员工活码
* @return 员工活码集合
*/
- public List selectWeEmpleCodeList(WeEmpleCode weEmpleCode);
+ List selectWeEmpleCodeList(WeEmpleCode weEmpleCode);
/**
* 新增员工活码
@@ -45,7 +45,7 @@ public interface IWeEmpleCodeService extends IService
* @param weEmpleCode 员工活码
* @return 结果
*/
- public void insertWeEmpleCode(WeEmpleCode weEmpleCode);
+ void insertWeEmpleCode(WeEmpleCode weEmpleCode);
/**
* 修改员工活码
@@ -53,7 +53,7 @@ public interface IWeEmpleCodeService extends IService
* @param weEmpleCode 员工活码
* @return 结果
*/
- public void updateWeEmpleCode(WeEmpleCode weEmpleCode);
+ void updateWeEmpleCode(WeEmpleCode weEmpleCode);
// /**
// * 批量删除员工活码
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeGroupCodeService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeGroupCodeService.java
index 439bbbda9c9ac9f7181c2b4475fe65db8c405c04..fc98b96b568b5a8a8aa6d1c4451b49099470837c 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeGroupCodeService.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeGroupCodeService.java
@@ -14,13 +14,6 @@ import org.springframework.web.multipart.MultipartFile;
* @date 2020-10-07
*/
public interface IWeGroupCodeService extends IService {
- /**
- * 查询客户群活码
- *
- * @param id 客户群活码ID
- * @return 客户群活码
- */
- WeGroupCode selectWeGroupCodeById(Long id);
/**
* 根据群活码id查询实际码列表
@@ -28,7 +21,7 @@ public interface IWeGroupCodeService extends IService {
* @param groupCodeId 群活码id
* @return 结果
*/
- List selectActualListByGroupCodeId(Long groupCodeId);
+ List selectActualList(Long groupCodeId);
/**
* 查询客户群活码列表
@@ -38,19 +31,10 @@ public interface IWeGroupCodeService extends IService {
*/
List selectWeGroupCodeList(WeGroupCode weGroupCode);
- /**
- * 根据群活码id查询群活码列表
- *
- * @param ids id列表
- * @return 结果
- */
- List selectWeGroupCodeListByIds(List ids);
-
/**
* 新增客户群活码
*
* @param weGroupCode 客户群活码
- * @return 结果
*/
void insertWeGroupCode(WeGroupCode weGroupCode);
@@ -79,19 +63,19 @@ public interface IWeGroupCodeService extends IService {
int deleteWeGroupCodeById(Long id);
/**
- * 检测活码名称是否唯一
+ * 检测活码名称是否被占用
*
* @param weGroupCode 活码对象
* @return 结果
*/
- boolean checkActivityNameUnique(WeGroupCode weGroupCode);
+ boolean isNameOccupied(WeGroupCode weGroupCode);
/**
- * 根据 uuid获取群活码
+ * 通过员工活码获取群活码,用于新客自动拉群。
*
- * @param uuid uuid
- * @return 结果
+ * @param state 员工活码state
+ * @return 群活码URL
*/
- WeGroupCode getWeGroupByUuid(String uuid);
+ String selectGroupCodeUrlByEmplCodeState(String state);
}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeGroupMemberService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeGroupMemberService.java
index 8c3a08d7c656eb323f40aeff125cb7aae8bc9cf0..62302e08446bb3e50e4d4ad8fec4771d9af5ba22 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeGroupMemberService.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeGroupMemberService.java
@@ -17,4 +17,5 @@ public interface IWeGroupMemberService extends IService {
List selectWeGroupMemberListByChatId(String chatId);
+ WeGroupMember selectWeGroupMemberByUnionId(String chatId, String unionId);
}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeGroupSopService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeGroupSopService.java
index 8fedc64e244fc64c7f87b014dde8499351b4ce43..193c73edcf2c0b462126bfedcb407fc657a46fe8 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeGroupSopService.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeGroupSopService.java
@@ -1,17 +1,16 @@
package com.linkwechat.wecom.service;
-import com.linkwechat.wecom.domain.WeGroup;
+import com.baomidou.mybatisplus.extension.service.IService;
import com.linkwechat.wecom.domain.WeGroupSop;
import com.linkwechat.wecom.domain.vo.WeCommunityTaskEmplVo;
import com.linkwechat.wecom.domain.vo.WeGroupSopVo;
-import com.linkwechat.wecom.domain.vo.WeKeywordGroupTaskVo;
import java.util.List;
/**
* 社区运营 群sop service接口
*/
-public interface IWeGroupSopService {
+public interface IWeGroupSopService extends IService {
/**
* 通过规则id获取sop规则
@@ -65,15 +64,8 @@ public interface IWeGroupSopService {
int batchRemoveGroupSopByIds(Long[] ids);
/**
- * 校验规则名是否唯一
+ * 根据员工id获取对应的sop任务列表
*
- * @param ruleName 规则名
- * @return 是否唯一
- */
- boolean isRuleNameUnique(String ruleName);
-
- /**
- * 根据员工id获取对应的sop任务列表
* @param emplId 员工id
* @param isDone 已完成还是待处理
* @return 结果
@@ -99,7 +91,16 @@ public interface IWeGroupSopService {
/**
* 向指定的群聊进行sop企微消息推送
+ *
* @param groupIdList 群聊id列表
*/
void sendMessage(List groupIdList);
+
+ /**
+ * 规则名是否已被占用
+ *
+ * @param groupSop 规则信息
+ * @return 是否被占用
+ */
+ boolean isNameOccupied(WeGroupSop groupSop);
}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeMaterialService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeMaterialService.java
index c86e57fd4d7d0bcfb92892b3fca639eedb6aec73..a6eaddb82e4c97fbf95790f87abc5ec9dba5acae 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeMaterialService.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeMaterialService.java
@@ -48,7 +48,7 @@ public interface IWeMaterialService {
* @param ids id列表
* @return {@link int}
*/
- int deleteWeMaterialByIds(Long[] ids);
+ void deleteWeMaterialByIds(Long[] ids);
/**
* 更新素材信息
@@ -84,14 +84,6 @@ public interface IWeMaterialService {
*/
void resetCategory(String categoryId, String materials);
- /**
- * 上传企微临时素材
- * @param url 素材路径
- * @param type 素材类型
- * @return
- */
- public WeMediaDto uploadTemporaryMaterial(String url, String type);
-
/**
* 上传企微临时素材
@@ -102,4 +94,10 @@ public interface IWeMaterialService {
*/
public WeMediaDto uploadTemporaryMaterial(String url, String type,String name);
+ /**
+ * 上传素材图片
+ * @param file
+ * @return
+ */
+ WeMediaDto uploadImg(MultipartFile file);
}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWePresTagGroupTaskService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWePresTagGroupTaskService.java
index 44b814a5dfd0d208f2bd98986b0740094c419348..7c5fdab06433e1d176d3c47dd98a27194402799b 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWePresTagGroupTaskService.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWePresTagGroupTaskService.java
@@ -6,6 +6,7 @@ import com.linkwechat.wecom.domain.dto.WePresTagGroupTaskDto;
import com.linkwechat.wecom.domain.vo.WeCommunityTaskEmplVo;
import com.linkwechat.wecom.domain.vo.WePresTagGroupTaskVo;
import com.linkwechat.wecom.domain.vo.WePresTagGroupTaskStatVo;
+import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -16,8 +17,9 @@ public interface IWePresTagGroupTaskService {
/**
* 添加新标签建群任务
- * @param task 建群任务本体信息
- * @param tagIdList 标签列表
+ *
+ * @param task 建群任务本体信息
+ * @param tagIdList 标签列表
* @param emplIdList 员工列表
* @return 结果
*/
@@ -54,20 +56,12 @@ public interface IWePresTagGroupTaskService {
/**
* 更新老客户标签建群任务
*
+ * @param taskId 待更新任务id
* @param wePresTagGroupTaskDto 更新数据
- * @return 结果
- * @taskId 待更新任务id
+ * @return 更新条数
*/
int updateTask(Long taskId, WePresTagGroupTaskDto wePresTagGroupTaskDto);
- /**
- * 检测任务名是否已存在
- *
- * @param taskName 任务名
- * @return 结果
- */
- boolean checkTaskNameUnique(String taskName);
-
/**
* 通过老客标签建群id获取其统计信息
*
@@ -113,7 +107,25 @@ public interface IWePresTagGroupTaskService {
/**
* 根据标签建群任务信息发送消息
+ *
* @param task 标签建群任务
*/
- void sendMessage(WePresTagGroupTask task);
+ void sendMessage(WePresTagGroupTask task, List externalIds);
+
+ /**
+ * 任务名是否已占用
+ *
+ * @param task 任务信息
+ * @return 名称是否占用
+ */
+ boolean isNameOccupied(WePresTagGroupTask task);
+
+ List selectExternalUserIds(
+ Long taskId,
+ boolean hasScope,
+ boolean hasTag,
+ Integer gender,
+ String beginTime,
+ String endTime
+ );
}
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 066beea0f397c9d37468efe7a2107a8d34e6db4f..f02e1c3783b10c6b3f228d02318bc99c9f96150e 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
@@ -6,6 +6,7 @@ import com.linkwechat.wecom.domain.WeTaskFissionCompleteRecord;
import java.util.Date;
import java.util.List;
+import java.util.Set;
/**
* 裂变任务完成记录Service接口
@@ -63,4 +64,18 @@ public interface IWeTaskFissionCompleteRecordService extends IService statisticCompleteRecords(Long taskFissionId, Date startTime, Date endTime);
+
+ /**
+ * 根据任务id查询裂变任务完成记录列表
+ * @param taskFissionIds 任务id
+ * @return
+ */
+ List getListByTaskIds(Set taskFissionIds);
+
+ /**
+ * 根据任务id查询裂变任务完成记录列表
+ * @param taskFissionId
+ * @return
+ */
+ List getCompleteListByTaskId(Long taskFissionId);
}
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 b284693178335208de3de95d08c6e4220c110207..533f186fd6efde91c0c94d690b3fc5e2b296a9cd 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.baomidou.mybatisplus.extension.service.IService;
import com.linkwechat.wecom.domain.WeCustomer;
import com.linkwechat.wecom.domain.WeTaskFission;
import com.linkwechat.wecom.domain.dto.WeChatUserDTO;
@@ -17,7 +18,7 @@ import java.util.List;
* @author leejoker
* @date 2021-01-20
*/
-public interface IWeTaskFissionService {
+public interface IWeTaskFissionService extends IService {
/**
* 查询任务宝
*
@@ -94,4 +95,17 @@ public interface IWeTaskFissionService {
WeTaskFissionStatisticVO taskFissionStatistic(Long taskFissionId, Date startTime, Date endTime);
WeTaskFissionProgressVO getCustomerTaskProgress(WeTaskFission taskFission, String eid);
+
+ /**
+ * 更新过期任务
+ * @return
+ */
+ public void updateExpiredWeTaskFission();
+
+ /**
+ * 根据群活码id 查询任务列表
+ * @param groupCodeId 群活码id
+ * @return
+ */
+ List getTaskFissionListByGroupCodeId(Long groupCodeId);
}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeAccessTokenServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeAccessTokenServiceImpl.java
index 5ea459b1cbc3c4cc637980c35670ec4940624319..3169e0d72a545c0adc9b1cc7adc2ae627d45a018 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeAccessTokenServiceImpl.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeAccessTokenServiceImpl.java
@@ -1,10 +1,12 @@
package com.linkwechat.wecom.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.linkwechat.common.config.RuoYiConfig;
import com.linkwechat.common.constant.Constants;
import com.linkwechat.common.constant.WeConstans;
import com.linkwechat.common.core.redis.RedisCache;
import com.linkwechat.common.exception.wecom.WeComException;
+import com.linkwechat.common.utils.SecurityUtils;
import com.linkwechat.common.utils.StringUtils;
import com.linkwechat.wecom.client.WeAccessTokenClient;
import com.linkwechat.wecom.domain.WeApp;
@@ -42,6 +44,10 @@ public class WeAccessTokenServiceImpl implements IWeAccessTokenService {
private IWeAppService iWeAppService;
+ @Autowired
+ private RuoYiConfig ruoYiConfig;
+
+
/**
* 获取通用accessToken
@@ -106,6 +112,15 @@ public class WeAccessTokenServiceImpl implements IWeAccessTokenService {
.eq(WeApp::getAgentId, agentId)
.eq(WeApp::getDelFlag, Constants.NORMAL_CODE)
.eq(WeApp::getStatus, Constants.NORMAL_CODE));
+
+ return findThirdAppAccessToken(weApp);
+
+ }
+
+
+ private String findThirdAppAccessToken(WeApp weApp){
+
+
if(weApp == null){
throw new WeComException("当前agentId不可用或不存在");
}
@@ -118,14 +133,15 @@ public class WeAccessTokenServiceImpl implements IWeAccessTokenService {
WeAccessTokenDtoDto weAccessTokenDtoDto
= accessTokenClient.getToken(wxCorpAccount.getCorpId(),weApp.getAgentSecret());
- token=weAccessTokenDtoDto.getAccess_token();
- if(StringUtils.isNotEmpty(token)){
- redisCache.setCacheObject(WeConstans.WE_THIRD_APP_TOKEN+"::"+agentId,token,weAccessTokenDtoDto.getExpires_in().intValue(), TimeUnit.SECONDS);
+ if(StringUtils.isNotEmpty(weAccessTokenDtoDto.getAccess_token())){
+
+ redisCache.setCacheObject(WeConstans.WE_THIRD_APP_TOKEN+"::"+weApp.getAgentId(),weAccessTokenDtoDto.getAccess_token(),weAccessTokenDtoDto.getExpires_in().intValue(), TimeUnit.SECONDS);
}
- return token;
+ return weAccessTokenDtoDto.getAccess_token();
+
}
@@ -133,16 +149,32 @@ public class WeAccessTokenServiceImpl implements IWeAccessTokenService {
private String findAccessToken(String accessTokenKey){
- String weAccessToken =redisCache.getCacheObject(accessTokenKey);
+ return ruoYiConfig.isStartTenant()?findAccessTokenForTenant(accessTokenKey):findAccessTokenForNoTenant(accessTokenKey);
+
+ }
+
+
+
+ //多租户环境下获取token
+ private String findAccessTokenForTenant(String accessTokenKey){
+
+
+ WeCorpAccount wxCorpAccount
+ = SecurityUtils.getLoginUser().getUser().getWeCorpAccount();
+
+ if(null == wxCorpAccount){
+ //返回错误异常,让用户绑定企业id相关信息
+ throw new WeComException("无可用的corpid和secret");
+ }
+
+
+ String weAccessToken =redisCache.getCacheObject(accessTokenKey+"::"+wxCorpAccount.getCorpId());
+
+
//为空,请求微信服务器同时缓存到redis中
if(StringUtils.isEmpty(weAccessToken)){
- WeCorpAccount wxCorpAccount
- = iWxCorpAccountService.findValidWeCorpAccount();
- if(null == wxCorpAccount){
- //返回错误异常,让用户绑定企业id相关信息
- throw new WeComException("无可用的corpid和secret");
- }
+
String token="";
Long expires_in=null;
if(WeConstans.WE_COMMON_ACCESS_TOKEN.equals(accessTokenKey) || WeConstans.WE_CONTACT_ACCESS_TOKEN.equals(accessTokenKey)){
@@ -166,13 +198,59 @@ public class WeAccessTokenServiceImpl implements IWeAccessTokenService {
}
if(StringUtils.isNotEmpty(token)){
- redisCache.setCacheObject(accessTokenKey,token,expires_in.intValue(), TimeUnit.SECONDS);
+ redisCache.setCacheObject(accessTokenKey+"::"+wxCorpAccount.getCorpId(),token,expires_in.intValue(), TimeUnit.SECONDS);
weAccessToken = token;
}
}
-
return weAccessToken;
+
+
+ }
+
+
+ //非多租户环境下获取token
+ private String findAccessTokenForNoTenant(String accessTokenKey){
+ String weAccessToken =redisCache.getCacheObject(accessTokenKey);
+
+ //为空,请求微信服务器同时缓存到redis中
+ if(StringUtils.isEmpty(weAccessToken)){
+ WeCorpAccount wxCorpAccount
+ = iWxCorpAccountService.findValidWeCorpAccount();
+ if(null == wxCorpAccount){
+ //返回错误异常,让用户绑定企业id相关信息
+ throw new WeComException("无可用的corpid和secret");
+ }
+ String token="";
+ Long expires_in=null;
+ if(WeConstans.WE_COMMON_ACCESS_TOKEN.equals(accessTokenKey) || WeConstans.WE_CONTACT_ACCESS_TOKEN.equals(accessTokenKey)){
+ WeAccessTokenDtoDto weAccessTokenDtoDto = accessTokenClient.getToken(wxCorpAccount.getCorpId(),
+ WeConstans.WE_COMMON_ACCESS_TOKEN.equals(accessTokenKey) ? wxCorpAccount.getCorpSecret() : wxCorpAccount.getContactSecret());
+ token=weAccessTokenDtoDto.getAccess_token();
+ expires_in=weAccessTokenDtoDto.getExpires_in();
+
+ }else if(WeConstans.WE_PROVIDER_ACCESS_TOKEN.equals(accessTokenKey)){
+ WeAccessTokenDtoDto providerToken = accessTokenClient.getProviderToken(wxCorpAccount.getCorpId(), wxCorpAccount.getProviderSecret());
+ token=providerToken.getProvider_access_token();
+ expires_in=providerToken.getExpires_in();
+ }else if (WeConstans.WE_CHAT_ACCESS_TOKEN.equals(accessTokenKey)){
+ WeAccessTokenDtoDto weAccessTokenDtoDto = accessTokenClient.getToken(wxCorpAccount.getCorpId(),wxCorpAccount.getChatSecret());
+ token=weAccessTokenDtoDto.getAccess_token();
+ expires_in=weAccessTokenDtoDto.getExpires_in();
+ }else if (WeConstans.WE_AGENT_ACCESS_TOKEN.equals(accessTokenKey)){
+ WeAccessTokenDtoDto weAccessTokenDtoDto = accessTokenClient.getToken(wxCorpAccount.getCorpId(),wxCorpAccount.getAgentSecret());
+ token=weAccessTokenDtoDto.getAccess_token();
+ expires_in=weAccessTokenDtoDto.getExpires_in();
+ }
+
+ if(StringUtils.isNotEmpty(token)){
+ redisCache.setCacheObject(accessTokenKey,token,expires_in.intValue(), TimeUnit.SECONDS);
+ weAccessToken = token;
+ }
+
+ }
+
+ return weAccessToken;
}
@@ -180,10 +258,17 @@ public class WeAccessTokenServiceImpl implements IWeAccessTokenService {
* 清空redis中的相关token
*/
@Override
- public void removeToken() {
- redisCache.deleteObject(WeConstans.WE_COMMON_ACCESS_TOKEN);
- redisCache.deleteObject(WeConstans.WE_CONTACT_ACCESS_TOKEN);
- redisCache.deleteObject(WeConstans.WE_PROVIDER_ACCESS_TOKEN);
+ public void removeToken(WeCorpAccount wxCorpAccount) {
+ if(ruoYiConfig.isStartTenant()){
+ redisCache.deleteObject(WeConstans.WE_COMMON_ACCESS_TOKEN+"::"+wxCorpAccount.getAgentId());
+ redisCache.deleteObject(WeConstans.WE_CONTACT_ACCESS_TOKEN+"::"+wxCorpAccount.getAgentId());
+ redisCache.deleteObject(WeConstans.WE_PROVIDER_ACCESS_TOKEN+"::"+wxCorpAccount.getAgentId());
+ }else{
+ redisCache.deleteObject(WeConstans.WE_COMMON_ACCESS_TOKEN);
+ redisCache.deleteObject(WeConstans.WE_CONTACT_ACCESS_TOKEN);
+ redisCache.deleteObject(WeConstans.WE_PROVIDER_ACCESS_TOKEN);
+ }
+
}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeAppServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeAppServiceImpl.java
index 80fd45115bc19b987e140cf91e58f4ab0f2f74c5..23e537fb7d3d560317f4dc861dae803e6bd51ff4 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeAppServiceImpl.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeAppServiceImpl.java
@@ -11,6 +11,7 @@ import com.linkwechat.wecom.domain.WeDepartment;
import com.linkwechat.wecom.domain.dto.WeAppDetailDto;
import com.linkwechat.wecom.domain.dto.WeAppDto;
import com.linkwechat.wecom.mapper.WeAppMapper;
+import com.linkwechat.wecom.service.IWeAccessTokenService;
import com.linkwechat.wecom.service.IWeAppService;
import com.linkwechat.wecom.service.IWeDepartmentService;
import com.linkwechat.wecom.service.IWeUserService;
@@ -43,6 +44,10 @@ public class WeAppServiceImpl extends ServiceImpl implements
IWeUserService iWeUserService;
+ @Autowired
+ IWeAccessTokenService iWeAccessTokenService;
+
+
/**
* 保存应用
* @param weApp
@@ -51,6 +56,7 @@ public class WeAppServiceImpl extends ServiceImpl implements
@Transactional
public void addWeApp(WeApp weApp) {
+
if(null !=this.getOne(new LambdaQueryWrapper()
.eq(WeApp::getAgentId, weApp.getAgentId())
.eq(WeApp::getDelFlag, Constants.SUCCESS))){
@@ -58,18 +64,24 @@ public class WeAppServiceImpl extends ServiceImpl implements
}
+ weApp.setCreateTime(new Date());
+ if(this.save(weApp)){
+ WeAppDetailDto weAppDetailDto
+ = weAppClient.findAgentById(weApp.getAgentId());
+ if(null != weAppDetailDto){
+
+ weApp.setAgentName(weAppDetailDto.getName());
+ weApp.setCreateTime(new Date());
+ weApp.setSquareLogoUrl(weAppDetailDto.getSquare_logo_url());
+ weApp.setDescription(weAppDetailDto.getDescription());
+ weApp.setAllowPartys(StringUtils.join(weAppDetailDto.getAllow_partys().getPartyid(),","));
+ weApp.setAllowUserinfos(StringUtils.join(weAppDetailDto.getAllow_userinfos().getUser(),","));
+ System.out.println("============================================");
+ this.updateById(weApp);
+ }
+ }
+
- WeAppDetailDto weAppDetailDto
- = weAppClient.findAgentById(weApp.getAgentId());
- if(null != weAppDetailDto){
- weApp.setAgentName(weAppDetailDto.getName());
- weApp.setCreateTime(new Date());
- weApp.setSquareLogoUrl(weAppDetailDto.getSquare_logo_url());
- weApp.setDescription(weAppDetailDto.getDescription());
- weApp.setAllowPartys(StringUtils.join(weAppDetailDto.getAllow_partys().getPartyid(),","));
- weApp.setAllowUserinfos(StringUtils.join(weAppDetailDto.getAllow_userinfos().getUser(),","));
- this.save(weApp);
- }
}
@@ -85,7 +97,7 @@ public class WeAppServiceImpl extends ServiceImpl implements
.logo_mediaid(weApp.getLogoMediaid())
.description(weApp.getDescription())
.name(weApp.getAgentName())
- .build()
+ .build(),weApp.getAgentId()
);
}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCategoryServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCategoryServiceImpl.java
index df8426a4aba6f4df1dd5f5c15bbd39748cdbc804..282d815324c3178d4488d79afd0f02013de3811d 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCategoryServiceImpl.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCategoryServiceImpl.java
@@ -1,6 +1,9 @@
package com.linkwechat.wecom.service.impl;
import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.linkwechat.common.constant.Constants;
import com.linkwechat.common.core.domain.Tree;
import com.linkwechat.common.exception.wecom.WeComException;
import com.linkwechat.common.utils.SnowFlakeUtil;
@@ -10,7 +13,6 @@ import com.linkwechat.wecom.domain.vo.WeCategoryVo;
import com.linkwechat.wecom.mapper.WeCategoryMapper;
import com.linkwechat.wecom.service.IWeCategoryService;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
@@ -18,47 +20,49 @@ import java.util.List;
@Slf4j
@Service
-public class WeCategoryServiceImpl implements IWeCategoryService {
+public class WeCategoryServiceImpl extends ServiceImpl implements IWeCategoryService {
+
- @Autowired
- private WeCategoryMapper weCategoryMapper;
@Override
- public int insertWeCategory(WeCategory category) {
+ public void insertWeCategory(WeCategory category) {
//判断是否存在相同的名称
- WeCategory weCategory = weCategoryMapper.findWeCategoryByMediaTypeAndName(category.getMediaType(), category.getName());
+ WeCategory weCategory =this.getOne(new LambdaQueryWrapper()
+ .eq(WeCategory::getMediaType,category.getMediaType())
+ .eq(WeCategory::getName,category.getName())
+ .eq(WeCategory::getDelFlag, Constants.NORMAL_CODE));
if (null != weCategory) {
throw new WeComException("名称已存在!");
}
- category.setCreateTime(DateUtil.date());
+// category.setCreateTime(DateUtil.date());
category.setId(SnowFlakeUtil.nextId());
- return weCategoryMapper.insertWeCategory(category);
+ this.save(category);
}
@Override
- public int updateWeCategory(WeCategory category) {
+ public void updateWeCategory(WeCategory category) {
//判断是否存在相同的名称
- WeCategory weCategory = weCategoryMapper.findWeCategoryByMediaTypeAndName(category.getMediaType(), category.getName());
+ WeCategory weCategory =this.getOne(new LambdaQueryWrapper()
+ .eq(WeCategory::getMediaType,category.getMediaType())
+ .eq(WeCategory::getName,category.getName())
+ .eq(WeCategory::getDelFlag, Constants.NORMAL_CODE));
+
if (null != weCategory) {
throw new WeComException("名称已存在!");
}
- category.setUpdateTime(DateUtil.date());
- return weCategoryMapper.updateWeCategory(category);
+// category.setUpdateTime(DateUtil.date());
+ this.updateById(category);
}
- @Override
- public int deleteWeCategoryById(Long id) {
- return weCategoryMapper.deleteWeCategoryById(id);
- }
- @Override
- public int deleteWeCategoryByIds(Long[] ids) {
- return weCategoryMapper.deleteWeCategoryByIds(ids);
- }
+
+
@Override
public List extends Tree>> findWeCategoryByMediaType(String mediaType) {
- List weCategories = weCategoryMapper.findWeCategoryByMediaType(mediaType);
+ List weCategories = this.list(new LambdaQueryWrapper()
+ .eq(WeCategory::getMediaType,mediaType)
+ .eq(WeCategory::getDelFlag,Constants.NORMAL_CODE));
List weCategoryVos = new ArrayList<>();
weCategories.forEach(c -> {
WeCategoryVo weCategoryVo = new WeCategoryVo();
@@ -71,8 +75,8 @@ public class WeCategoryServiceImpl implements IWeCategoryService {
}
@Override
- public WeCategory findWeCategoryById(Long id) {
- return weCategoryMapper.findWeCategoryById(id);
+ public void deleteWeCategoryById(Long[] ids) {
+ this.baseMapper.deleteWeCategoryById(ids);
}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeChatCollectionServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeChatCollectionServiceImpl.java
index d45d35bdd829219f28bfd4d4152876ff391f5994..06a9be4a4faa021cbdd63645f0eb8824bb5a2338 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeChatCollectionServiceImpl.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeChatCollectionServiceImpl.java
@@ -27,18 +27,19 @@ public class WeChatCollectionServiceImpl extends ServiceImpl wrapper = new QueryWrapper<>();
wrapper.eq("material_id",materialId).eq("user_id",userId);
WeChatCollection queryCollection = weChatCollectionMapper.selectOne(wrapper);
if(null!=queryCollection){
- throw new CustomException("你已收藏");
+ return false;
}
WeChatCollection chatCollection=new WeChatCollection();
chatCollection.setCollectionId(SnowFlakeUtil.nextId());
chatCollection.setMaterialId(materialId);
chatCollection.setUserId(userId);
- return weChatCollectionMapper.addCollection(chatCollection);
+ weChatCollectionMapper.addCollection(chatCollection);
+ return true;
}
@Override
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeChatContactMappingServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeChatContactMappingServiceImpl.java
index edcf0ba6ed2b786d617ed98db6d9da1a681486c6..15aad982e53eb1046fba69c57db45463d612f108 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeChatContactMappingServiceImpl.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeChatContactMappingServiceImpl.java
@@ -32,6 +32,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
@@ -94,7 +95,13 @@ public class WeChatContactMappingServiceImpl extends ServiceImpl().eq(WeUser::getUserId, item.getReceiveId())));
} else if (WeConstans.ID_TYPE_EX.equals(item.getIsCustom())) {
//获取外部联系人信息
- item.setReceiveWeCustomer(weCustomerMapper.selectWeCustomerById(item.getReceiveId()));
+ WeCustomer weCustomer = weCustomerMapper.selectWeCustomerById(item.getReceiveId());
+ if(null == weCustomer){
+ weCustomer=new WeCustomer();
+ }
+ item.setReceiveWeCustomer(
+ weCustomer
+ );
} else if (WeConstans.ID_TYPE_MACHINE.equals(item.getIsCustom())) {
//拉去机器人信息暂不处理
}
@@ -233,7 +240,15 @@ public class WeChatContactMappingServiceImpl extends ServiceImpl weChatContactMappingList = this.baseMapper.selectList(lambdaQueryWrapper);
List resultList = Optional.ofNullable(weChatContactMappingList).orElseGet(ArrayList::new)
- .stream().map(item -> weCustomerMapper.selectWeCustomerById(item.getReceiveId())).collect(Collectors.toList());
+ .stream().map(item ->
+ weCustomerMapper.selectWeCustomerById(item.getReceiveId())
+ ).collect(Collectors.toList());
+
+ if(CollectionUtil.isNotEmpty(resultList)){
+ resultList.removeAll(Collections.singleton(null));
+ }
+
+
PageInfo weCustomerPageInfo = new PageInfo<>(resultList);
weCustomerPageInfo.setTotal(new PageInfo<>(weChatContactMappingList).getTotal());
return weCustomerPageInfo;
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeChatContactMsgServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeChatContactMsgServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..99845567e85741a478587e20b89edf1e90879bd1
--- /dev/null
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeChatContactMsgServiceImpl.java
@@ -0,0 +1,106 @@
+package com.linkwechat.wecom.service.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import com.linkwechat.wecom.domain.dto.WeGroupMemberDto;
+import com.linkwechat.wecom.domain.vo.WeChatContactMsgVo;
+import com.linkwechat.wecom.service.IWeGroupMemberService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import org.apache.commons.lang3.StringUtils;
+import com.linkwechat.wecom.mapper.WeChatContactMsgMapper;
+import com.linkwechat.wecom.domain.WeChatContactMsg;
+import com.linkwechat.wecom.service.IWeChatContactMsgService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 会话消息Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2021-07-28
+ */
+@Service
+public class WeChatContactMsgServiceImpl extends ServiceImpl implements IWeChatContactMsgService {
+ @Autowired
+ private IWeGroupMemberService weGroupMemberService;
+
+ @Override
+ public List queryList(WeChatContactMsg weChatContactMsg) {
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ if (StringUtils.isNotBlank(weChatContactMsg.getMsgId())){
+ lqw.eq(WeChatContactMsg::getMsgId ,weChatContactMsg.getMsgId());
+ }
+ if (StringUtils.isNotBlank(weChatContactMsg.getFromId())){
+ lqw.and(wrapper -> wrapper.eq(WeChatContactMsg::getFromId ,weChatContactMsg.getFromId())
+ .or().eq(WeChatContactMsg::getToList,weChatContactMsg.getFromId()));
+ }
+ if (StringUtils.isNotBlank(weChatContactMsg.getToList())){
+ lqw.and(wrapper -> wrapper.eq(WeChatContactMsg::getFromId ,weChatContactMsg.getToList())
+ .or().eq(WeChatContactMsg::getToList,weChatContactMsg.getToList()));
+ }
+ if (StringUtils.isNotBlank(weChatContactMsg.getRoomId())){
+ lqw.eq(WeChatContactMsg::getRoomId ,weChatContactMsg.getRoomId());
+ }
+ if (StringUtils.isNotBlank(weChatContactMsg.getAction())){
+ lqw.eq(WeChatContactMsg::getAction ,weChatContactMsg.getAction());
+ }
+ if (StringUtils.isNotBlank(weChatContactMsg.getMsgType())){
+ lqw.eq(WeChatContactMsg::getMsgType ,weChatContactMsg.getMsgType());
+ }
+ if (weChatContactMsg.getMsgTime() != null){
+ lqw.and(wrapper -> wrapper.ge(WeChatContactMsg::getMsgTime,weChatContactMsg.getMsgTime())
+ .le(WeChatContactMsg::getMsgTime,weChatContactMsg.getMsgTime()));
+ }
+ if (StringUtils.isNotBlank(weChatContactMsg.getContact())){
+ lqw.like(WeChatContactMsg::getContact ,weChatContactMsg.getContact());
+ }
+ lqw.orderByDesc(WeChatContactMsg::getMsgTime);
+ return this.list(lqw);
+ }
+
+ @Override
+ public List selectExternalChatList(String fromId) {
+ return this.baseMapper.selectExternalChatList(fromId);
+ }
+
+ @Override
+ public List selectAloneChatList(WeChatContactMsg weChatContactMsg) {
+ return this.baseMapper.selectAloneChatList(weChatContactMsg);
+ }
+
+ @Override
+ public List selectInternalChatList(String fromId) {
+ return this.baseMapper.selectInternalChatList(fromId);
+ }
+
+ @Override
+ public List selectGroupChatList(String fromId) {
+ List weChatContactMsgVos = this.baseMapper.selectGroupChatList(fromId);
+ if(CollectionUtil.isNotEmpty(weChatContactMsgVos)){
+ weChatContactMsgVos.forEach(msg ->{
+ List weGroupMemberDtos = weGroupMemberService.selectWeGroupMemberListByChatId(msg.getReceiver());
+ if(CollectionUtil.isNotEmpty(weGroupMemberDtos)){
+ if(StringUtils.isEmpty(msg.getName())){
+ String names = weGroupMemberDtos.stream().map(WeGroupMemberDto::getMemberName)
+ .filter(StringUtils::isNotEmpty).collect(Collectors.joining(","));
+ msg.setName(names);
+ }
+ String avatars = weGroupMemberDtos.stream().map(WeGroupMemberDto::getMemberAvatar)
+ .filter(StringUtils::isNotEmpty).collect(Collectors.joining(","));
+ msg.setAvatar(avatars);
+ }
+ });
+ }
+ return this.baseMapper.selectGroupChatList(fromId);
+ }
+
+ @Override
+ public List selectFullSearchChatList(WeChatContactMsg weChatContactMsg) {
+ return this.baseMapper.selectFullSearchChatList(weChatContactMsg);
+ }
+}
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 3f51bf1bfab36b838d9ce5f0581cb7f3b19c5bf1..eacb7ee3bc384afa3a0d23ca6573125182262f2a 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
@@ -1,26 +1,17 @@
package com.linkwechat.wecom.service.impl;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.linkwechat.common.utils.StringUtils;
-import com.linkwechat.wecom.domain.WeGroupCode;
-import com.linkwechat.wecom.domain.WeKeywordGroupTaskKeyword;
+import com.linkwechat.common.constant.HttpStatus;
+import com.linkwechat.common.exception.CustomException;
import com.linkwechat.wecom.domain.WeKeywordGroupTask;
-import com.linkwechat.wecom.domain.vo.WeGroupCodeVo;
-import com.linkwechat.wecom.domain.vo.WeKeywordGroupTaskVo;
-import com.linkwechat.wecom.mapper.WeGroupCodeMapper;
-import com.linkwechat.wecom.mapper.WeKeywordGroupTaskKwMapper;
import com.linkwechat.wecom.mapper.WeKeywordGroupTaskMapper;
import com.linkwechat.wecom.service.IWeCommunityKeywordToGroupService;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
+import java.util.*;
/**
* 社区运营 - 关键词拉群任务ServiceImpl
@@ -29,43 +20,14 @@ import java.util.stream.Collectors;
@Service
public class WeCommunityKeywordToGroupServiceImpl extends ServiceImpl implements IWeCommunityKeywordToGroupService {
- @Autowired
- private WeKeywordGroupTaskMapper taskMapper;
-
- @Autowired
- private WeKeywordGroupTaskKwMapper taskKwMapper;
-
- @Autowired
- private WeGroupCodeMapper groupCodeMapper;
-
/**
* 根据过滤条件获取关键词拉群任务列表
- *
- * @param taskName 任务名称
- * @param createBy 创建人
- * @param keyword 关键词
- * @param beginTime 开始时间
- * @param endTime 结束时间
- * @return 列表数据
+ * @param task 查询信息
+ * @return 结果
*/
@Override
- public List getTaskList(String taskName, String createBy, String keyword, String beginTime, String endTime) {
- List taskVoList = taskMapper.getTaskList(taskName, createBy, keyword, beginTime, endTime);
- for (WeKeywordGroupTaskVo taskVo : taskVoList) {
- // 查询关键词列表
- List taskKeywordList = this.getTaskKeywordList(taskVo.getTaskId());
- if (StringUtils.isNotEmpty(taskKeywordList)) {
- taskVo.setKeywordList(taskKeywordList);
- }
- // 群活码信息
- taskVo.setGroupCodeInfo(this.getGroupVoByTaskId(taskVo.getGroupCodeId()));
- // 通过群活码id查询对应的群
- List groupNameList = taskMapper.getGroupNameListByTaskId(taskVo.getTaskId());
- groupNameList.removeIf(Objects::isNull);
- taskVo.setGroupNameList(groupNameList);
- }
-
- return taskVoList;
+ public List getTaskList(WeKeywordGroupTask task) {
+ return baseMapper.getTaskList(task);
}
/**
@@ -75,72 +37,31 @@ public class WeCommunityKeywordToGroupServiceImpl extends ServiceImpl keywordList = this.getTaskKeywordList(taskId);
- if (StringUtils.isNotEmpty(keywordList)) {
- taskVo.setKeywordList(keywordList);
- }
- // 群活码
- taskVo.setGroupCodeInfo(this.getGroupVoByTaskId(taskVo.getGroupCodeId()));
- // 群聊名称列表
- List groupNameList = taskMapper.getGroupNameListByTaskId(taskVo.getTaskId());
- groupNameList.removeIf(Objects::isNull);
- taskVo.setGroupNameList(groupNameList);
- return taskVo;
+ public WeKeywordGroupTask getTaskById(Long taskId) {
+ return baseMapper.getTaskById(taskId);
}
/**
* 创建新任务
*
- * @param task 待存储的对象
- * @param keywords 关键词
+ * @param task 任务信息
* @return 结果
*/
@Override
- @Transactional
- public int addTask(WeKeywordGroupTask task, String[] keywords) {
- if (this.save(task)) {
- // 构建关键词对象并存储
- 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;
+ @Transactional(rollbackFor = Exception.class)
+ public int addTask(WeKeywordGroupTask task) {
+ return baseMapper.insert(task);
}
/**
* 对指定任务进行更新
- *
- * @param task 待更新对象
- * @param keywords 关键词
+ * @param task 任务信息
* @return 结果
*/
@Override
- @Transactional
- public int updateTask(WeKeywordGroupTask task, String[] keywords) {
- if (taskMapper.updateById(task) == 1) {
- // 删除原有的关键词
- QueryWrapper taskKwQueryWrapper = new QueryWrapper<>();
- taskKwQueryWrapper.eq("task_id", task.getTaskId());
- taskKwMapper.delete(taskKwQueryWrapper);
- // 再重新插入新的关键词
- 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;
+ @Transactional(rollbackFor = Exception.class)
+ public int updateTask(WeKeywordGroupTask task) {
+ return baseMapper.updateById(task);
}
/**
@@ -150,26 +71,9 @@ public class WeCommunityKeywordToGroupServiceImpl extends ServiceImpl taskKwQueryWrapper = new QueryWrapper<>();
- taskKwQueryWrapper.in("task_id", Arrays.asList(ids));
- taskKwMapper.delete(taskKwQueryWrapper);
- QueryWrapper taskQueryWrapper = new QueryWrapper<>();
- taskKwQueryWrapper.in("task_id", Arrays.asList(ids));
- return taskMapper.delete(taskQueryWrapper);
- }
-
- /**
- * 检测任务名是否唯一
- *
- * @param taskName 任务名
- * @return 结果
- */
- @Override
- public boolean taskNameIsUnique(String taskName) {
- return taskMapper.checkNameUnique(taskName) == 0;
+ return baseMapper.deleteBatchIds(Arrays.asList(ids));
}
/**
@@ -179,44 +83,22 @@ public class WeCommunityKeywordToGroupServiceImpl extends ServiceImpl filterByNameOrKeyword(String word) {
- List taskVoList = taskMapper.filterByNameOrKeyword(word);
- taskVoList.forEach(taskVo -> {
- // 关键词列表
- taskVo.setKeywordList(this.getTaskKeywordList(taskVo.getTaskId()));
- List groupNameList = taskMapper.getGroupNameListByTaskId(taskVo.getTaskId());
- // 群活码
- taskVo.setGroupCodeInfo(this.getGroupVoByTaskId(taskVo.getGroupCodeId()));
- // 群名称列表
- groupNameList.removeIf(StringUtils::isNull);
- taskVo.setGroupNameList(groupNameList);
- });
- return taskVoList;
+ public List filterByNameOrKeyword(String word) {
+ return baseMapper.filterByNameOrKeyword(word);
}
/**
- * 根据任务id获取关键词列表
+ * 任务名是否已被占用
*
- * @param taskId 任务id
- */
- private List getTaskKeywordList(Long taskId) {
- QueryWrapper taskKeywordQueryWrapper = new QueryWrapper<>();
- taskKeywordQueryWrapper.eq("task_id", taskId);
- return taskKwMapper.selectList(taskKeywordQueryWrapper);
- }
-
- /**
- * 获取群活码简略信息
- *
- * @param groupCodeId 群活码id
- * @return 群活码简略信息
+ * @param task 任务信息
+ * @return 结果
*/
- private WeGroupCodeVo getGroupVoByTaskId(Long groupCodeId) {
- WeGroupCode groupCode = groupCodeMapper.selectWeGroupCodeById(groupCodeId);
- WeGroupCodeVo groupCodeVo = new WeGroupCodeVo();
- groupCodeVo.setId(groupCode.getId());
- groupCodeVo.setCodeUrl(groupCode.getCodeUrl());
- groupCodeVo.setUuid(groupCode.getUuid());
- return groupCodeVo;
+ @Override
+ public boolean isNameOccupied(WeKeywordGroupTask task) {
+ Long currentId = Optional.ofNullable(task.getTaskId()).orElse(-1L);
+ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(WeKeywordGroupTask::getTaskName, task.getTaskName());
+ List queryRes = baseMapper.selectList(queryWrapper);
+ return !queryRes.isEmpty() && !currentId.equals(queryRes.get(0).getTaskId());
}
}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCommunityNewGroupServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCommunityNewGroupServiceImpl.java
index 9d5e75757dbbee10c9430c177c9fa93d18b0dfc5..ebd08b6988d470456291b876bff435039f62c14b 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCommunityNewGroupServiceImpl.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCommunityNewGroupServiceImpl.java
@@ -1,6 +1,6 @@
package com.linkwechat.wecom.service.impl;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.linkwechat.common.enums.WeEmpleCodeType;
import com.linkwechat.common.exception.wecom.WeComException;
@@ -69,8 +69,8 @@ public class WeCommunityNewGroupServiceImpl extends ServiceImpl 0) {
- // 批量保存员工活码标签
- empleCodeTagMapper.batchInsetWeEmpleCodeTag(weEmpleCode.getWeEmpleCodeTags());
+
+ if (StringUtils.isNotEmpty(weEmpleCode.getWeEmpleCodeTags())) {
+ // 批量保存员工活码标签
+ empleCodeTagMapper.batchInsetWeEmpleCodeTag(weEmpleCode.getWeEmpleCodeTags());
+ }
// 批量保存活码使用员工
empleCodeUseScopMapper.batchInsetWeEmpleCodeUseScop(weEmpleCode.getWeEmpleCodeUseScops());
@@ -108,15 +111,12 @@ public class WeCommunityNewGroupServiceImpl extends ServiceImpl selectWeCommunityNewGroupList(String emplCodeName, String createBy, String beginTime, String endTime) {
- List communityNewGroupVos = weCommunityNewGroupMapper.selectWeCommunityNewGroupList(emplCodeName, createBy, beginTime, endTime);
+ public List selectWeCommunityNewGroupList(WeCommunityNewGroup weCommunityNewGroup) {
+ List communityNewGroupVos = weCommunityNewGroupMapper.selectWeCommunityNewGroupList(weCommunityNewGroup);
if (StringUtils.isNotEmpty(communityNewGroupVos)) {
communityNewGroupVos.forEach(this::getCompleteEmplCodeInfo);
}
@@ -152,7 +152,7 @@ public class WeCommunityNewGroupServiceImpl extends ServiceImpl userQueryWrapper = new QueryWrapper<>();
- userQueryWrapper.in("user_id", communityNewGroupDto.getEmplList());
+ LambdaQueryWrapper userQueryWrapper = new LambdaQueryWrapper<>();
+ userQueryWrapper.in(WeUser::getUserId, communityNewGroupDto.getEmplList());
List weUserList = weUserMapper.selectList(userQueryWrapper);
List weEmpleCodeUseScopList = weUserList.stream().map(e -> {
WeEmpleCodeUseScop scop = new WeEmpleCodeUseScop();
@@ -248,17 +254,19 @@ public class WeCommunityNewGroupServiceImpl extends ServiceImpl tagIdList = communityNewGroupDto.getTagList();
- QueryWrapper tagQueryWrapper = new QueryWrapper<>();
- tagQueryWrapper.in("tag_id", tagIdList);
- List weTagList = weTagMapper.selectList(tagQueryWrapper);
- List weEmpleCodeTagList = weTagList.stream().map(e -> {
- WeEmpleCodeTag tag = new WeEmpleCodeTag();
- tag.setEmpleCodeId(weEmpleCode.getId());
- tag.setTagId(e.getTagId());
- tag.setTagName(e.getName());
- return tag;
- }).collect(Collectors.toList());
- weEmpleCode.setWeEmpleCodeTags(weEmpleCodeTagList);
+ if (StringUtils.isNotEmpty(tagIdList)) {
+ LambdaQueryWrapper tagQueryWrapper = new LambdaQueryWrapper<>();
+ tagQueryWrapper.in(WeTag::getTagId, tagIdList);
+ List weTagList = weTagMapper.selectList(tagQueryWrapper);
+ List weEmpleCodeTagList = weTagList.stream().map(e -> {
+ WeEmpleCodeTag tag = new WeEmpleCodeTag();
+ tag.setEmpleCodeId(weEmpleCode.getId());
+ tag.setTagId(e.getTagId());
+ tag.setTagName(e.getName());
+ return tag;
+ }).collect(Collectors.toList());
+ weEmpleCode.setWeEmpleCodeTags(weEmpleCodeTagList);
+ }
}
/**
@@ -267,21 +275,31 @@ public class WeCommunityNewGroupServiceImpl extends ServiceImpl {
+ vo.setEmplCodeUrl(e.getQrCode());
+ vo.setWelcomeMsg(e.getWelcomeMsg());
+ vo.setSkipVerify(e.getSkipVerify());
+ });
+
+ // 设置群活码信息
+ WeGroupCode weGroupCode = weGroupCodeMapper.selectById(vo.getGroupCodeId());
+ Optional.ofNullable(weGroupCode).ifPresent(e -> {
+ WeGroupCodeVo groupCodeVo = WeGroupCodeVo
+ .builder()
+ .id(e.getId())
+ .codeUrl(e.getCodeUrl())
+ .build();
+ BeanUtils.copyProperties(e, groupCodeVo);
+ vo.setGroupCodeInfo(groupCodeVo);
+ });
// 获取员工列表信息
List empleCodeUseScopList = empleCodeUseScopMapper.selectWeEmpleCodeUseScopListById(vo.getEmplCodeId());
vo.setEmplList(empleCodeUseScopList);
- // 获取员工活码信息
- WeEmpleCode empleCode = weEmpleCodeMapper.selectWeEmpleCodeById(vo.getEmplCodeId());
- vo.setEmplCodeUrl(empleCode.getQrCode());
- vo.setWelcomeMsg(empleCode.getWelcomeMsg());
-
// 获取相关群聊信息
List groupList = weGroupCodeMapper.selectWeGroupListByGroupCodeId(vo.getGroupCodeId());
vo.setGroupList(groupList);
@@ -289,7 +307,5 @@ public class WeCommunityNewGroupServiceImpl extends ServiceImpl tagList = empleCodeTagMapper.selectWeEmpleCodeTagListById(vo.getEmplCodeId());
vo.setTagList(tagList);
-
- vo.setSkipVerify(empleCode.getSkipVerify());
}
}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCorpAccountServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCorpAccountServiceImpl.java
index 7a2135e5a3cab3dfd04d1cc5572730df1fac8c4c..03e3c8f3412be559427961f6d26f3b40e6a8a2ab 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCorpAccountServiceImpl.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCorpAccountServiceImpl.java
@@ -1,16 +1,18 @@
package com.linkwechat.wecom.service.impl;
-import java.util.List;
-import java.util.Optional;
-
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.linkwechat.common.config.RuoYiConfig;
import com.linkwechat.common.constant.Constants;
import com.linkwechat.common.constant.WeConstans;
+import com.linkwechat.common.core.domain.entity.WeCorpAccount;
+import com.linkwechat.wecom.mapper.WeCorpAccountMapper;
import com.linkwechat.wecom.service.IWeAccessTokenService;
import com.linkwechat.wecom.service.IWeCorpAccountService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-import com.linkwechat.wecom.mapper.WeCorpAccountMapper;
-import com.linkwechat.common.core.domain.entity.WeCorpAccount;
+
+import java.util.Optional;
/**
* 企业id相关配置Service业务层处理
@@ -19,51 +21,17 @@ import com.linkwechat.common.core.domain.entity.WeCorpAccount;
* @date 2020-08-24
*/
@Service
-public class WeCorpAccountServiceImpl implements IWeCorpAccountService {
+public class WeCorpAccountServiceImpl extends ServiceImpl implements IWeCorpAccountService {
+
- @Autowired
- private WeCorpAccountMapper weCorpAccountMapper;
@Autowired
private IWeAccessTokenService iWeAccessTokenService;
- /**
- * 查询企业id相关配置
- *
- * @param id 企业id相关配置ID
- * @return 企业id相关配置
- */
- @Override
- public WeCorpAccount selectWeCorpAccountById(Long id)
- {
- return weCorpAccountMapper.selectWeCorpAccountById(id);
- }
-
- /**
- * 查询企业id相关配置列表
- *
- * @param wxCorpAccount 企业id相关配置
- * @return 企业id相关配置
- */
- @Override
- public List selectWeCorpAccountList(WeCorpAccount wxCorpAccount)
- {
- return weCorpAccountMapper.selectWeCorpAccountList(wxCorpAccount);
- }
-
- /**
- * 新增企业id相关配置
- *
- * @param wxCorpAccount 企业id相关配置
- * @return 结果
- */
- @Override
- public int insertWeCorpAccount(WeCorpAccount wxCorpAccount)
- {
+ @Autowired
+ private RuoYiConfig ruoYiConfig;
- return weCorpAccountMapper.insertWeCorpAccount(wxCorpAccount);
- }
/**
* 修改企业id相关配置
@@ -72,18 +40,15 @@ public class WeCorpAccountServiceImpl implements IWeCorpAccountService {
* @return 结果
*/
@Override
- public int updateWeCorpAccount(WeCorpAccount wxCorpAccount)
+ public void updateWeCorpAccount(WeCorpAccount wxCorpAccount)
{
- int returnCode = weCorpAccountMapper.updateWeCorpAccount(wxCorpAccount);
- if(Constants.SERVICE_RETURN_SUCCESS_CODE()
+ .eq(WeCorpAccount::getDelFlag,Constants.NORMAL_CODE)
+ .eq(WeCorpAccount::getStatus,Constants.NORMAL_CODE));
}
@@ -106,12 +74,11 @@ public class WeCorpAccountServiceImpl implements IWeCorpAccountService {
@Override
public int startVailWeCorpAccount(String corpId) {
- int returnCode = weCorpAccountMapper.startVailWeCorpAccount(corpId);
+ int returnCode = this.baseMapper.startVailWeCorpAccount(corpId);
if(Constants.SERVICE_RETURN_SUCCESS_CODE detailList = queryCustomerMessageStatusResultDto.getDetail_list();
- detailList.forEach(d -> {
- if (d.getStatus().equals(WeConstans.sendMessageStatusEnum.SEND.getStatus())) {
- atomicInteger.incrementAndGet();
- //更新消息发送状态
- customerMessageMapper.updateWeCustomerMessageCheckStatusById(messageId,WeConstans.sendMessageStatusEnum.SEND.getStatus());
- }
+ detailList.forEach(d -> {
+
+// if (d.getStatus().equals(WeConstans.sendMessageStatusEnum.SEND.getStatus())) {
+//
+// atomicInteger.incrementAndGet();
+// //更新消息发送状态
+// customerMessageMapper.updateWeCustomerMessageCheckStatusById(messageId,WeConstans.sendMessageStatusEnum.SEND.getStatus());
+// }
weCustomerMessgaeResultMapper.updateWeCustomerMessgaeResult(messageId, d.getChat_id(), d.getExternal_userid(), d.getStatus(), d.getSend_time());
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 6436142b0e3227df1505cbd8f5e11524931b9a66..f7a7d8c4cd7affaeba1afe27ddf2c38bc58f31db 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
@@ -2,11 +2,13 @@ package com.linkwechat.wecom.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.MediaType;
import com.linkwechat.common.exception.wecom.WeComException;
import com.linkwechat.common.utils.DateUtils;
import com.linkwechat.common.utils.SnowFlakeUtil;
@@ -14,13 +16,16 @@ import com.linkwechat.wecom.client.WeCustomerMessagePushClient;
import com.linkwechat.wecom.domain.WeCustomer;
import com.linkwechat.wecom.domain.WeCustomerMessageTimeTask;
import com.linkwechat.wecom.domain.WeGroup;
+import com.linkwechat.wecom.domain.dto.WeMediaDto;
import com.linkwechat.wecom.domain.dto.message.CustomerMessagePushDto;
+import com.linkwechat.wecom.domain.dto.message.ImageMessageDto;
import com.linkwechat.wecom.domain.vo.CustomerMessagePushVo;
import com.linkwechat.wecom.mapper.WeCustomerMessageTimeTaskMapper;
import com.linkwechat.wecom.service.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -70,20 +75,37 @@ public class WeCustomerMessagePushServiceImpl implements IWeCustomerMessagePushS
@Autowired
private WeCustomerMessageTimeTaskMapper customerMessageTimeTaskMapper;
+
+ @Autowired
+ private IWeMaterialService materialService;
+
@Override
@Transactional(rollbackFor = Exception.class)
- public void addWeCustomerMessagePush(CustomerMessagePushDto customerMessagePushDto) throws JsonProcessingException, ParseException {
+ public void addWeCustomerMessagePush(CustomerMessagePushDto customerMessagePushDto) throws JsonProcessingException, ParseException, CloneNotSupportedException {
-// if ((null != customerMessagePushDto.getSettingTime() && !"".equals(customerMessagePushDto.getSettingTime()))
-// && DateUtils.diffTime(new Date(), DateUtil.parse(customerMessagePushDto.getSettingTime(), "yyyy-MM-dd HH:mm")) > 0) {
-// throw new WeComException("发送时间不能小于当前时间");
-// }
+ if(StrUtil.isNotBlank(customerMessagePushDto.getSettingTime())){
+ if(DateUtils.diffTime(new Date(), DateUtil.parse(customerMessagePushDto.getSettingTime(), "yyyy-MM-dd HH:mm")) > 0){
+ throw new WeComException("发送时间不能小于当前时间");
+ }
+ }
- if(StrUtil.isBlank(customerMessagePushDto.getSettingTime())){
- throw new WeComException("发送时间不能为空");
- }
+ if(customerMessagePushDto.getMessageType().equals("1")){//等于图片或者图文,根据图片URL,获取新的media_id
+ ImageMessageDto imageMessage = customerMessagePushDto.getImageMessage();
+
+
+ if(null != imageMessage && StrUtil.isNotBlank(imageMessage.getPic_url())){
+ WeMediaDto weMediaDto = materialService.uploadTemporaryMaterial(imageMessage.getPic_url(),
+ MediaType.IMAGE.getMediaType()
+ ,imageMessage.getPic_url());
+ if(StrUtil.isNotBlank(weMediaDto.getMedia_id())){
+ imageMessage.setMedia_id(weMediaDto.getMedia_id());
+ }
+
+ }
+
+ }
List customers = Lists.newArrayList();
List groups = new ArrayList<>();
@@ -96,6 +118,8 @@ public class WeCustomerMessagePushServiceImpl implements IWeCustomerMessagePushS
customers = externalUserIds(customerMessagePushDto.getPushRange(), customerMessagePushDto.getStaffId()
, customerMessagePushDto.getDepartment(), customerMessagePushDto.getTag());
}
+
+
if (CollectionUtils.isEmpty(customers)) {
throw new WeComException("没有外部联系人");
}
@@ -128,6 +152,14 @@ public class WeCustomerMessagePushServiceImpl implements IWeCustomerMessagePushS
//保存分类消息信息
weCustomerSeedMessageService.saveSeedMessage(customerMessagePushDto, messageId);
+ this.sendMessage(customerMessagePushDto,messageId,customers,groups);
+
+ }
+
+
+
+ private void sendMessage(CustomerMessagePushDto customerMessagePushDto, long messageId, List customers,List groups ) throws ParseException, JsonProcessingException {
+
//发送群发消息
//调用微信api发送消息
if (null == customerMessagePushDto.getSettingTime() || customerMessagePushDto.getSettingTime().equals("")) {
@@ -137,6 +169,9 @@ public class WeCustomerMessagePushServiceImpl implements IWeCustomerMessagePushS
, DateUtils.getMillionSceondsBydate(customerMessagePushDto.getSettingTime()));
customerMessageTimeTaskMapper.saveWeCustomerMessageTimeTask(timeTask);
}
+
+
+
}
@Override
@@ -158,13 +193,20 @@ public class WeCustomerMessagePushServiceImpl implements IWeCustomerMessagePushS
//从redis中读取数据
List customers = redisCache.getCacheList(WeConstans.WECUSTOMERS_KEY);
if (CollectionUtils.isEmpty(customers)) {
- customers = weCustomerService.selectWeCustomerList(null);
+ WeCustomer weCustomer = new WeCustomer();
+ weCustomer.setUserIds(staffId);
+ weCustomer.setDepartmentIds(department);
+ customers = weCustomerService.selectWeCustomerAllList(weCustomer);
redisCache.setCacheList(WeConstans.WECUSTOMERS_KEY, customers);
+ redisCache.expire(WeConstans.WECUSTOMERS_KEY,2 * 60L);
+ }else{
+ return customers;
}
+
WeCustomer weCustomer = new WeCustomer();
weCustomer.setUserIds(staffId);
weCustomer.setDepartmentIds(department);
- return weCustomerService.selectWeCustomerList(weCustomer);
+ return weCustomerService.selectWeCustomerListNoRel(weCustomer);
} else {
//按条件查询客户
//通过部门id查询所有的员工
@@ -173,7 +215,7 @@ public class WeCustomerMessagePushServiceImpl implements IWeCustomerMessagePushS
weCustomer.setUserIds(staffId);
weCustomer.setTagIds(tag);
weCustomer.setDepartmentIds(department);
- return weCustomerService.selectWeCustomerList(weCustomer);
+ return weCustomerService.selectWeCustomerListNoRel(weCustomer);
}
}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerMessageServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerMessageServiceImpl.java
index 81aa74771cd82598777c0e58fcb37fd314cffe70..ee1698324cd5d26a8b9696dcfb17698abfc20be1 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerMessageServiceImpl.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerMessageServiceImpl.java
@@ -1,5 +1,7 @@
package com.linkwechat.wecom.service.impl;
+import cn.hutool.core.io.FileUtil;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -12,11 +14,11 @@ import com.linkwechat.wecom.client.WeCustomerMessagePushClient;
import com.linkwechat.wecom.domain.WeCustomer;
import com.linkwechat.wecom.domain.WeCustomerMessage;
import com.linkwechat.wecom.domain.WeGroup;
-import com.linkwechat.wecom.domain.dto.message.CustomerMessagePushDto;
-import com.linkwechat.wecom.domain.dto.message.SendMessageResultDto;
-import com.linkwechat.wecom.domain.dto.message.WeCustomerMessagePushDto;
+import com.linkwechat.wecom.domain.dto.WeMediaDto;
+import com.linkwechat.wecom.domain.dto.message.*;
import com.linkwechat.wecom.mapper.WeCustomerMessageMapper;
import com.linkwechat.wecom.service.IWeCustomerMessageService;
+import com.linkwechat.wecom.service.IWeMaterialService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -44,6 +46,9 @@ public class WeCustomerMessageServiceImpl extends ServiceImpl externalUserIds = customers.stream().map(WeCustomer::getExternalUserid).collect(Collectors.toList());
@@ -127,6 +135,7 @@ public class WeCustomerMessageServiceImpl extends ServiceImpl selectWeCustomerList(WeCustomer weCustomer) {
+ //当前登录用户为企业用户
+ if(Constants.USER_TYPE_WECOME
+ .equals(SecurityUtils.getLoginUser().getUser().getUserType())){
+ weCustomer.setUserIds((SecurityUtils.getLoginUser().getUser().getWeUserId()));
+ }
+
return weCustomerMapper.selectWeCustomerList(weCustomer);
}
@@ -128,11 +142,9 @@ public class WeCustomerServiceImpl extends ServiceImpl {
try {
- SecurityContextHolder.setContext(securityContext);
weFlowerCustomerHandle(k);
} catch (Exception e) {
e.printStackTrace();
@@ -189,7 +201,7 @@ public class WeCustomerServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(WeFlowerCustomerRel::getExternalUserid, weMakeCustomerTag.getExternalUserid());
+
+ if(StrUtil.isNotBlank(weMakeCustomerTag.getUserId())){
+ wrapper.eq(WeFlowerCustomerRel::getUserId,weMakeCustomerTag.getUserId());
+ }
+
//查询出当前用户对应的
- List flowerCustomerRels = iWeFlowerCustomerRelService.list(new LambdaQueryWrapper()
- .eq(WeFlowerCustomerRel::getExternalUserid, weMakeCustomerTag.getExternalUserid()));
+ List flowerCustomerRels = iWeFlowerCustomerRelService.list(
+ wrapper
+ );
if (CollectionUtil.isNotEmpty(flowerCustomerRels)) {
@@ -370,6 +391,7 @@ public class WeCustomerServiceImpl extends ServiceImpl getCustomersByUserId(String externalUserid) {
- return this.baseMapper.getCustomersByUserId(externalUserid);
+ String userId=null;
+ if(Constants.USER_TYPE_WECOME.equals(SecurityUtils.getLoginUser().getUser().getUserType())){
+ userId=SecurityUtils.getLoginUser().getUser().getWeUserId();
+ }
+ return this.baseMapper.getCustomersByUserId(externalUserid,userId);
}
@Override
@@ -672,19 +704,25 @@ public class WeCustomerServiceImpl extends ServiceImpl()
.eq(WeFlowerCustomerRel::getExternalUserid,weCustomerPortrait.getExternalUserid())
.eq(WeFlowerCustomerRel::getUserId,weCustomerPortrait.getUserId()));
-
+ //添加轨迹内容(信息动态)
+ iWeCustomerTrajectoryService.inforMationNews(weCustomerPortrait.getUserId(),weCustomerPortrait.getExternalUserid(), TrajectorySceneType.TRAJECTORY_TYPE_XXDT_BCZL.getKey());
}
+ @Override
+ public List selectWeCustomerAllList(WeCustomer weCustomer) {
+ return weCustomerMapper.selectWeCustomerList(weCustomer);
+ }
-
+ @Override
+ public List selectWeCustomerListNoRel(WeCustomer weCustomer) {
+ return weCustomerMapper.selectWeCustomerListNoRel(weCustomer);
+ }
}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerTrajectoryServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerTrajectoryServiceImpl.java
index e71773b76d51843b83c5393415995b5d93ec0b4b..4a6dcf5591460b5dcc0e3f4406e21efef8d6f516 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerTrajectoryServiceImpl.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerTrajectoryServiceImpl.java
@@ -1,11 +1,112 @@
package com.linkwechat.wecom.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.date.DateTime;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.linkwechat.common.constant.Constants;
+import com.linkwechat.common.enums.MessageType;
+import com.linkwechat.common.enums.TrajectorySceneType;
+import com.linkwechat.common.enums.TrajectoryType;
+import com.linkwechat.wecom.client.WeMessagePushClient;
+import com.linkwechat.wecom.domain.WeCustomer;
import com.linkwechat.wecom.domain.WeCustomerTrajectory;
+import com.linkwechat.wecom.domain.WeUser;
+import com.linkwechat.wecom.domain.dto.WeMessagePushDto;
+import com.linkwechat.wecom.domain.dto.message.TextMessageDto;
+import com.linkwechat.wecom.mapper.WeCustomerMapper;
import com.linkwechat.wecom.mapper.WeCustomerTrajectoryMapper;
+import com.linkwechat.wecom.mapper.WeUserMapper;
import com.linkwechat.wecom.service.IWeCustomerTrajectoryService;
+import com.linkwechat.wecom.service.IWeUserService;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
@Service
public class WeCustomerTrajectoryServiceImpl extends ServiceImpl implements IWeCustomerTrajectoryService {
+
+
+
+ @Autowired
+ private WeMessagePushClient weMessagePushClient;
+//
+//
+//// @Autowired
+//// private IWeCustomerService iWeCustomerService;
+//
+ @Autowired
+ private WeCustomerMapper weCustomerMapper;
+//
+//
+//
+// @Autowired
+// private IWeUserService iWeUserService;
+
+ @Autowired
+ private WeUserMapper weUserMapper;
+
+ /**
+ * 待办理处理通知
+ */
+ @Override
+ public void waitHandleMsg(String url) {
+ //获取所有满足时间的通知
+ List trajectories = this.list(new LambdaQueryWrapper()
+ .ne(WeCustomerTrajectory::getStatus, Constants.DELETE_CODE)
+ .last(" AND concat_ws(' ',create_date,start_time) <= DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s')" +
+ " AND concat_ws(' ',create_date,end_time) >= DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s')"));
+ if(CollectionUtil.isNotEmpty(trajectories)){
+
+ List weCustomers = weCustomerMapper.selectBatchIds(
+ trajectories.stream().map(WeCustomerTrajectory::getExternalUserid).collect(Collectors.toList())
+ );
+ Map weCustomerMap
+ = weCustomers.stream().collect(Collectors.toMap(WeCustomer::getExternalUserid, a -> a, (k1, k2) -> k1));
+ //给员工发送通知
+ trajectories.stream().forEach(k->{
+ weMessagePushClient.sendMessageToUser(WeMessagePushDto.builder()
+ .touser(k.getUserId())
+ .msgtype(MessageType.TEXT.getMessageType())
+ .agentid(Integer.parseInt(k.getAgentId()))
+ .text(TextMessageDto.builder()
+ .content("您有一项关于客户"+weCustomerMap.get(k.getExternalUserid()).getName()+"的待办任务提醒,请尽快处理,\n点击查看客户详情。")
+ .build())
+ .build(),
+ String.valueOf(1000012)
+ );
+ });
+
+ }
+ }
+
+
+ /**
+ * 信息动态编辑
+ * @param userId
+ * @param externalUserid
+ * @param trajectoryType
+ */
+ @Override
+ public void inforMationNews(String userId, String externalUserid, Integer trajectoryType) {
+ WeUser weUser = weUserMapper.selectById(userId);
+ if(null != weUser){
+ this.save(
+ WeCustomerTrajectory.builder()
+ .externalUserid(externalUserid)
+ .trajectoryType(TrajectoryType.TRAJECTORY_TYPE_XXDT.getType())
+ .createTime(new DateTime())
+ .userId(userId)
+ .content(
+ TrajectorySceneType.TRAJECTORY_TYPE_XXDT_BCZL.getKey().equals(trajectoryType)?
+ "员工"+weUser.getName()+"编辑了当前客户信息":"员工"+weUser.getName()+"编辑了当前客户标签"
+ ).build()
+ );
+ }
+ }
+
+
}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeEmpleCodeServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeEmpleCodeServiceImpl.java
index 5cbd893bc0f4495c9f62a7b0bf212170cc999792..2470b81d4c9f81e220e410133a18d3d9669854ce 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeEmpleCodeServiceImpl.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeEmpleCodeServiceImpl.java
@@ -30,6 +30,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import javax.validation.constraints.NotEmpty;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@@ -165,16 +166,25 @@ public class WeEmpleCodeServiceImpl extends ServiceImpl item.setEmpleCodeId(weEmpleCode.getId()));
- iWeEmpleCodeUseScopService.updateBatchById(weEmpleCode.getWeEmpleCodeUseScops());
- }
- if (CollectionUtil.isNotEmpty(weEmpleCode.getWeEmpleCodeTags())) {
- weEmpleCode.getWeEmpleCodeTags().forEach(item -> item.setEmpleCodeId(weEmpleCode.getId()));
- weEmpleCodeTagService.updateBatchById(weEmpleCode.getWeEmpleCodeTags());
+ try {
+
+ if (this.baseMapper.updateWeEmpleCode(weEmpleCode) == 1) {
+ if (CollectionUtil.isNotEmpty(weEmpleCode.getWeEmpleCodeUseScops())) {
+ List weEmpleCodeUseScops = weEmpleCode.getWeEmpleCodeUseScops();
+ weEmpleCode.getWeEmpleCodeUseScops().forEach(item -> item.setEmpleCodeId(weEmpleCode.getId()));
+ iWeEmpleCodeUseScopService.saveOrUpdateBatch(weEmpleCode.getWeEmpleCodeUseScops());
+ }
+ if (CollectionUtil.isNotEmpty(weEmpleCode.getWeEmpleCodeTags())) {
+ weEmpleCode.getWeEmpleCodeTags().forEach(item -> item.setEmpleCodeId(weEmpleCode.getId()));
+ weEmpleCodeTagService.saveOrUpdateBatch(weEmpleCode.getWeEmpleCodeTags());
+ }
}
+
+ }catch (Exception e){
+ e.printStackTrace();
+
}
+
}
// /**
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupCodeServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupCodeServiceImpl.java
index 1e1aea305cb7b22b1d7b0329dbed02bdd3f4dd62..f184e7aab51673e140f4597e22f4281761d5eb7d 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupCodeServiceImpl.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupCodeServiceImpl.java
@@ -1,56 +1,49 @@
package com.linkwechat.wecom.service.impl;
+import java.io.IOException;
+import java.util.Arrays;
import java.util.List;
+import java.util.Optional;
import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.linkwechat.common.config.CosConfig;
import com.linkwechat.common.exception.wecom.WeComException;
+import com.linkwechat.common.utils.QREncode;
+import com.linkwechat.common.utils.StringUtils;
+import com.linkwechat.wecom.domain.WeCommunityNewGroup;
import com.linkwechat.wecom.domain.WeGroupCodeActual;
import com.linkwechat.wecom.mapper.WeCommunityNewGroupMapper;
import com.linkwechat.wecom.mapper.WeGroupCodeActualMapper;
import com.linkwechat.wecom.service.IWeGroupCodeActualService;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import com.linkwechat.wecom.mapper.WeGroupCodeMapper;
import com.linkwechat.wecom.domain.WeGroupCode;
import com.linkwechat.wecom.service.IWeGroupCodeService;
+import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Transactional;
/**
* 客户群活码Service业务层处理
- *
+ *
* @author ruoyi
* @date 2020-10-07
*/
@Service
-public class WeGroupCodeServiceImpl extends ServiceImpl implements IWeGroupCodeService
-{
+public class WeGroupCodeServiceImpl extends ServiceImpl implements IWeGroupCodeService {
- @Autowired
- private IWeGroupCodeActualService iWeGroupCodeActualService;
+ private final IWeGroupCodeActualService iWeGroupCodeActualService;
- @Autowired
- private WeGroupCodeMapper weGroupCodeMapper;
+ private final WeGroupCodeActualMapper actualCodeMapper;
- @Autowired
- private WeGroupCodeActualMapper weGroupCodeActualMapper;
+ private final WeCommunityNewGroupMapper communityNewGroupMapper;
- @Autowired
- private WeCommunityNewGroupMapper communityNewGroupMapper;
-
- /**
- * 查询客户群活码
- *
- * @param id 客户群活码ID
- * @return 客户群活码
- */
- @Override
- public WeGroupCode selectWeGroupCodeById(Long id)
- {
- // 获取群活码
-
- return weGroupCodeMapper.selectWeGroupCodeById(id);
+ public WeGroupCodeServiceImpl(IWeGroupCodeActualService iWeGroupCodeActualService, WeGroupCodeActualMapper actualCodeMapper, WeCommunityNewGroupMapper communityNewGroupMapper) {
+ this.iWeGroupCodeActualService = iWeGroupCodeActualService;
+ this.actualCodeMapper = actualCodeMapper;
+ this.communityNewGroupMapper = communityNewGroupMapper;
}
/**
@@ -60,8 +53,8 @@ public class WeGroupCodeServiceImpl extends ServiceImpl selectActualListByGroupCodeId(Long groupCodeId) {
- return weGroupCodeActualMapper.selectActualListByGroupCodeId(groupCodeId);
+ public List selectActualList(Long groupCodeId) {
+ return actualCodeMapper.selectActualList(groupCodeId);
}
/**
@@ -71,37 +64,24 @@ public class WeGroupCodeServiceImpl extends ServiceImpl selectWeGroupCodeList(WeGroupCode weGroupCode)
- {
- List weGroupCodeList = weGroupCodeMapper.selectWeGroupCodeList(weGroupCode);
- for (WeGroupCode item: weGroupCodeList) {
- List actualList = weGroupCodeActualMapper.selectActualListByGroupCodeId(item.getId());
+ public List selectWeGroupCodeList(WeGroupCode weGroupCode) {
+ List weGroupCodeList = baseMapper.selectWeGroupCodeList(weGroupCode);
+ for (WeGroupCode item : weGroupCodeList) {
+ List actualList = actualCodeMapper.selectActualList(item.getId());
item.setActualList(actualList);
}
return weGroupCodeList;
}
- /**
- * 根据群活码id查询群活码列表
- *
- * @param ids id列表
- * @return 结果
- */
- @Override
- public List selectWeGroupCodeListByIds(List ids) {
- return weGroupCodeMapper.selectWeGroupCodeListByIds(ids);
- }
-
/**
* 新增客户群活码
- *
+ *
* @param weGroupCode 客户群活码
*/
@Override
- public void insertWeGroupCode(WeGroupCode weGroupCode)
- {
+ public void insertWeGroupCode(WeGroupCode weGroupCode) {
try {
- weGroupCodeMapper.insertWeGroupCode(weGroupCode);
+ baseMapper.insertWeGroupCode(weGroupCode);
} catch (Exception e) {
throw new WeComException(e.getMessage());
}
@@ -110,22 +90,19 @@ public class WeGroupCodeServiceImpl extends ServiceImpl 0) {
- List actualList = weGroupCode.getActualList();
- if(CollectionUtil.isNotEmpty(actualList)){
- iWeGroupCodeActualService.updateBatchById(actualList);
- }
+ @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
+ public int updateWeGroupCode(WeGroupCode weGroupCode) {
+ // 更新实际码
+ List actualList = weGroupCode.getActualList();
+ if (CollectionUtil.isNotEmpty(actualList)) {
+ iWeGroupCodeActualService.updateBatchById(actualList);
}
- return rows;
+ return baseMapper.updateById(weGroupCode);
}
/**
@@ -135,10 +112,13 @@ public class WeGroupCodeServiceImpl extends ServiceImpl updateWrapper = new LambdaUpdateWrapper<>();
+ updateWrapper.in(WeGroupCodeActual::getGroupCodeId, Arrays.asList(ids)).set(WeGroupCodeActual::getDelFlag, 1);
+ actualCodeMapper.update(null, updateWrapper);
+ return removeByIds(Arrays.asList(ids)) ? 1 : 0;
}
/**
@@ -148,34 +128,39 @@ public class WeGroupCodeServiceImpl extends ServiceImpl updateWrapper = new LambdaUpdateWrapper<>();
+ updateWrapper.eq(WeCommunityNewGroup::getGroupCodeId, id).set(WeCommunityNewGroup::getDelFlag, 1);
+ communityNewGroupMapper.update(null, updateWrapper);
+ // 删除群活码
+ return baseMapper.deleteById(id);
}
/**
- * 检测活码名称是否唯一
+ * 检测活码名称是否被占用
*
* @param weGroupCode 活码对象
* @return 结果
*/
@Override
- public boolean checkActivityNameUnique(WeGroupCode weGroupCode) {
- int rows = weGroupCodeMapper.checkActivityNameUnique(weGroupCode.getActivityName());
- return rows == 0;
+ public boolean isNameOccupied(WeGroupCode weGroupCode) {
+ Long currentId = Optional.ofNullable(weGroupCode.getId()).orElse(-1L);
+ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(WeGroupCode::getActivityName, weGroupCode.getActivityName()).eq(WeGroupCode::getDelFlag, 0);
+ List res = baseMapper.selectList(queryWrapper);
+ return !res.isEmpty() && !currentId.equals(res.get(0).getId());
}
/**
- * 根据 uuid获取群活码
+ * 通过员工活码获取群活码,用于新客自动拉群。
*
- * @param uuid uuid
- * @return 结果
+ * @param state 员工活码state
+ * @return 群活码URL
*/
@Override
- public WeGroupCode getWeGroupByUuid(String uuid) {
- return weGroupCodeMapper.getWeGroupByUuid(uuid);
+ public String selectGroupCodeUrlByEmplCodeState(String state) {
+ return baseMapper.selectGroupCodeUrlByEmplCodeState(state);
}
}
diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupMemberServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupMemberServiceImpl.java
index 208716e5d92f9adb700a1f272d93f381414247f5..b69bb20420357f7535676c0fb1328a6e6b1fef9b 100644
--- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupMemberServiceImpl.java
+++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupMemberServiceImpl.java
@@ -1,5 +1,6 @@
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.WeGroupMember;
import com.linkwechat.wecom.domain.dto.WeGroupMemberDto;
@@ -29,5 +30,12 @@ public class WeGroupMemberServiceImpl extends ServiceImpl()
+ .eq(WeGroupMember::getChatId,chatId)
+ .eq(WeGroupMember::getUnionId,unionId));
+ }
+
}
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 5b7459f7341ab5717875c7f65ef99e5e2514ed6d..995a4ee90669d9183bc25d15f4a5b8ff1ccdce57 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
@@ -1,6 +1,6 @@
package com.linkwechat.wecom.service.impl;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.linkwechat.common.core.domain.entity.WeCorpAccount;
import com.linkwechat.common.enums.CommunityTaskType;
@@ -9,9 +9,10 @@ import com.linkwechat.common.utils.StringUtils;
import com.linkwechat.wecom.client.WeMessagePushClient;
import com.linkwechat.wecom.domain.*;
import com.linkwechat.wecom.domain.dto.WeMessagePushDto;
+import com.linkwechat.wecom.domain.dto.WeMessagePushResultDto;
import com.linkwechat.wecom.domain.dto.message.TextMessageDto;
-import com.linkwechat.wecom.domain.vo.WeGroupSopVo;
import com.linkwechat.wecom.domain.vo.WeCommunityTaskEmplVo;
+import com.linkwechat.wecom.domain.vo.WeGroupSopVo;
import com.linkwechat.wecom.domain.vo.WeMaterialVo;
import com.linkwechat.wecom.mapper.*;
import com.linkwechat.wecom.service.IWeCorpAccountService;
@@ -21,12 +22,14 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Transactional;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.Optional;
import java.util.stream.Collectors;
@Slf4j
@@ -104,7 +107,7 @@ public class WeGroupSopServiceImpl extends ServiceImpl groupIdList, List materialIdList, List picUrlList) {
if (this.save(weGroupSop)) {
Long ruleId = weGroupSop.getRuleId();
@@ -130,7 +133,7 @@ public class WeGroupSopServiceImpl extends ServiceImpl groupIdList, List materialIdList, List picUrlList) {
if (this.updateById(weGroupSop)) {
Long ruleId = weGroupSop.getRuleId();
@@ -139,8 +142,8 @@ public class WeGroupSopServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>();
- sopPicMapper.delete(queryWrapper.eq("rule_id", ruleId));
+ LambdaQueryWrapper