Explorar el Código

Merge remote-tracking branch 'origin/master'

zyp hace 1 semana
padre
commit
4c9a954a5d

+ 9 - 0
fs-company-app/src/main/java/com/fs/app/controller/CompanyUserController.java

@@ -28,6 +28,7 @@ import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.*;
@@ -102,6 +103,14 @@ public class CompanyUserController extends AppBaseController {
         return R.ok().put("data", pageInfo);
     }
 
+    @Login
+    @ApiOperation("获取销售信息")
+    @GetMapping("/getCompanyUserInfo")
+    public R getCompanyUserInfo(@ApiParam(name = "companyUserId", value = "销售用户ID", required = true)
+                                @RequestParam Long companyUserId) {
+        return R.ok().put("data", companyUserService.selectCompanyUserById(companyUserId));
+    }
+
     @Login
     @ApiOperation("修改用户信息")
     @PostMapping("/updateUserInfo")

+ 1 - 1
fs-company-app/src/main/java/com/fs/app/controller/FsUserController.java

@@ -226,7 +226,7 @@ public class FsUserController extends AppBaseController {
     @ApiOperation("修改用户标签")
     @PostMapping("/changeUserTags")
     public ResponseResult<Object> changeUserTags(@Valid @RequestBody FsUserTagUpdateParam param) {
-        companyTagUserService.changeUserTags(param.getFsUserId(), param.getTagIds());
+        companyTagUserService.changeUserTags(param.getFsUserIds(), param.getTagIds());
         return ResponseResult.ok();
     }
 

+ 6 - 0
fs-company-app/src/main/java/com/fs/app/exception/FSExceptionHandler.java

@@ -12,6 +12,7 @@ import org.springframework.validation.BindException;
 import org.springframework.validation.FieldError;
 import org.springframework.validation.ObjectError;
 import org.springframework.web.bind.MethodArgumentNotValidException;
+import org.springframework.web.bind.MissingServletRequestParameterException;
 import org.springframework.web.bind.annotation.ExceptionHandler;
 import org.springframework.web.bind.annotation.RestControllerAdvice;
 import org.springframework.web.servlet.NoHandlerFoundException;
@@ -50,6 +51,11 @@ public class FSExceptionHandler {
 		return R.error("数据库中已存在该记录");
 	}
 
+	@ExceptionHandler(MissingServletRequestParameterException.class)
+	public R handleMissingServletRequestParameterException(MissingServletRequestParameterException e) {
+		logger.error(e.getMessage(), e);
+		return R.error("缺少必要的参数");
+	}
 
 	@ExceptionHandler(Exception.class)
 	public R handleException(Exception e){

+ 4 - 4
fs-company-app/src/main/java/com/fs/app/param/FsUserTagUpdateParam.java

@@ -3,7 +3,7 @@ package com.fs.app.param;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import javax.validation.constraints.NotNull;
+import javax.validation.constraints.NotEmpty;
 import java.util.List;
 
 @Data
@@ -11,9 +11,9 @@ public class FsUserTagUpdateParam {
     /**
      * 用户ID
      */
-    @ApiModelProperty("用户ID")
-    @NotNull(message = "用户ID不能为空")
-    private Long fsUserId;
+    @ApiModelProperty("用户ID集合")
+    @NotEmpty(message = "用户ID不能为空")
+    private List<Long> fsUserIds;
     /**
      * 标签ID
      */

+ 1 - 1
fs-company/src/main/resources/application.yml

@@ -43,8 +43,8 @@ spring:
     # 国际化资源文件路径
     basename: i18n/messages
   profiles:
-#    active: dev
     active: dev
+#    active: druid
     include: config
   # 文件上传
   servlet:

+ 2 - 2
fs-service-system/src/main/java/com/fs/company/service/ICompanyTagUserService.java

@@ -82,8 +82,8 @@ public interface ICompanyTagUserService
 
     /**
      * 修改用户标签
-     * @param fsUserId 用户ID
+     * @param fsUserIds 用户ID集合
      * @param tagIds   标签ID集合
      */
-    void changeUserTags(Long fsUserId, List<Long> tagIds);
+    void changeUserTags(List<Long> fsUserIds, List<Long> tagIds);
 }

+ 25 - 23
fs-service-system/src/main/java/com/fs/company/service/impl/CompanyTagUserServiceImpl.java

@@ -140,33 +140,35 @@ public class CompanyTagUserServiceImpl implements ICompanyTagUserService
 
     /**
      * 修改用户标签
-     * @param fsUserId 用户ID
+     * @param fsUserIds 用户ID
      * @param tagIds   标签ID集合
      */
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public void changeUserTags(Long fsUserId, List<Long> tagIds) {
-        FsUser fsUser = fsUserMapper.selectFsUserById(fsUserId);
-        if (Objects.isNull(fsUser)) {
-            throw new ServiceException("用户不存在");
-        }
+    public void changeUserTags(List<Long> fsUserIds, List<Long> tagIds) {
+        fsUserIds.forEach(fsUserId -> {
+            FsUser fsUser = fsUserMapper.selectFsUserById(fsUserId);
+            if (Objects.isNull(fsUser)) {
+                return;
+            }
 
-        // 删除原标签
-        Map<String, Object> params = new HashMap<>();
-        params.put("userId", fsUserId);
-        params.put("companyId", fsUser.getCompanyId());
-        params.put("companyUserId", fsUser.getCompanyUserId());
-        companyTagUserMapper.deleteCompanyTagUserByMap(params);
-
-        // 不为空则添加新标签
-        if (Objects.nonNull(tagIds) && !tagIds.isEmpty()) {
-            CompanyTagUser companyTagUser = new CompanyTagUser();
-            companyTagUser.setUserId(fsUserId);
-            companyTagUser.setCompanyId(fsUser.getCompanyId());
-            companyTagUser.setCompanyUserId(fsUser.getCompanyUserId());
-            companyTagUser.setTagIds(tagIds.stream().map(String::valueOf).collect(Collectors.joining(",")));
-            companyTagUser.setCreateTime(new Date());
-            companyTagUserMapper.insertCompanyTagUser(companyTagUser);
-        }
+            // 删除原标签
+            Map<String, Object> params = new HashMap<>();
+            params.put("userId", fsUserId);
+            params.put("companyId", fsUser.getCompanyId());
+            params.put("companyUserId", fsUser.getCompanyUserId());
+            companyTagUserMapper.deleteCompanyTagUserByMap(params);
+
+            // 不为空则添加新标签
+            if (Objects.nonNull(tagIds) && !tagIds.isEmpty()) {
+                CompanyTagUser companyTagUser = new CompanyTagUser();
+                companyTagUser.setUserId(fsUserId);
+                companyTagUser.setCompanyId(fsUser.getCompanyId());
+                companyTagUser.setCompanyUserId(fsUser.getCompanyUserId());
+                companyTagUser.setTagIds(tagIds.stream().map(String::valueOf).collect(Collectors.joining(",")));
+                companyTagUser.setCreateTime(new Date());
+                companyTagUserMapper.insertCompanyTagUser(companyTagUser);
+            }
+        });
     }
 }

+ 2 - 0
fs-service-system/src/main/java/com/fs/course/vo/newfs/FsCourseAnalysisCountVO.java

@@ -3,11 +3,13 @@ package com.fs.course.vo.newfs;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import lombok.experimental.Accessors;
 
 import java.math.BigDecimal;
 
 @Data
 @ApiModel
+@Accessors(chain = true)
 public class FsCourseAnalysisCountVO implements Cloneable {
 
     @ApiModelProperty(value = "关联视频id")

+ 13 - 1
fs-service-system/src/main/java/com/fs/qw/service/impl/QwExternalContactServiceImpl.java

@@ -1788,7 +1788,6 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
             qwSopAutoByTags.setSendType(2);
             List<QwSopRuleTimeVO> qwSopRuleTimeVOS = qwSopMapper.selectQwSopAutoByTagsByForeach(qwSopAutoByTags);
             try {
-                log.info("SOP任务:{}", qwSopRuleTimeVOS.size());
                 if (qwSopRuleTimeVOS != null && !qwSopRuleTimeVOS.isEmpty()) {
                     //SOP规则
                     qwSopRuleTimeTools(qwSopRuleTimeVOS, userID, qwUser, corpId, externalUserID, externalContact.getName(), contact, currentDate, localTime, combinedTagsList);
@@ -2592,7 +2591,20 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
     }
 
     private void qwAiSopRuleTimeTools(List<QwSopRuleTimeVO> qwSopAiRuleTimeVOS, String userID, QwUser qwUser, String corpId, String externalUserID, String externalContactName, QwExternalContact contact) {
+
+        SysConfig sysConfig = sysConfigService.selectConfigByConfigKey("qw.config");
+        List<SopUserLogsInfo> sopUserLogsInfos = sopUserLogsInfoMapper.repeatProject(PubFun.listToNewList(qwSopAiRuleTimeVOS, QwSopRuleTimeVO::getProject), externalUserID);
+        Map<Integer, List<String>> collect = sopUserLogsInfos.stream().collect(Collectors.groupingBy(SopUserLogsInfo::getProject, Collectors.mapping(SopUserLogsInfo::getSopId, Collectors.toList())));
         qwSopAiRuleTimeVOS.forEach(ruleTimeVO -> {
+            if(sysConfig != null){
+                QwConfig qwConfig = JSON.parseObject(sysConfig.getConfigValue(), QwConfig.class);
+                if(qwConfig.isProject()){
+                    List<String> sopIdList = collect.get(ruleTimeVO.getProject());
+                    log.info("是否多个项目:{}", sopIdList);
+                    if(sopIdList.isEmpty()) return;
+                    if(sopIdList.contains(ruleTimeVO.getId())) return;
+                }
+            }
             SopUserLogsInfo sopUserLogsInfo = new SopUserLogsInfo();
             sopUserLogsInfo.setQwUserId(userID.trim());
             sopUserLogsInfo.setCorpId(corpId.trim());

+ 16 - 7
fs-service-system/src/main/java/com/fs/store/service/impl/FsUserServiceImpl.java

@@ -1,6 +1,7 @@
 package com.fs.store.service.impl;
 
 import java.math.BigDecimal;
+import java.math.BigInteger;
 import java.math.RoundingMode;
 import java.util.*;
 import java.util.function.Function;
@@ -618,14 +619,22 @@ public class FsUserServiceImpl implements IFsUserService
 
         //4、处理数据
         return videoList.stream().map(v -> {
-            FsCourseAnalysisVO fsCourseAnalysisVO = new FsCourseAnalysisVO();
-            BeanUtils.copyProperties(v, fsCourseAnalysisVO);
-            FsCourseAnalysisCountVO countVO = new FsCourseAnalysisCountVO();
-            fsCourseAnalysisVO.setCountVO(courseMap.getOrDefault(v.getVideoId(), countVO));
+            FsCourseAnalysisVO allVO = new FsCourseAnalysisVO();
+            BeanUtils.copyProperties(v, allVO);
 
-            fsCourseAnalysisVO.setCountVO(redPacketMap.getOrDefault(v.getVideoId(), countVO));
-            fsCourseAnalysisVO.setCountVO(answerMap.getOrDefault(v.getVideoId(), countVO));
-            return fsCourseAnalysisVO;
+            FsCourseAnalysisCountVO countVO = new FsCourseAnalysisCountVO();
+            FsCourseAnalysisCountVO courseVO = courseMap.getOrDefault(v.getVideoId(), countVO);
+            FsCourseAnalysisCountVO redPacketVO = redPacketMap.getOrDefault(v.getVideoId(), countVO);
+            FsCourseAnalysisCountVO answerVO = answerMap.getOrDefault(v.getVideoId(), countVO);
+            //单独赋值
+            countVO.setVideoId(v.getVideoId()).setCourseWatchNum(courseVO.getCourseWatchNum()).setCourseCompleteNum(courseVO.getCourseWatchNum())
+                    .setCompleteRate(courseVO.getCompleteRate() != null ? courseVO.getCompleteRate() : new BigDecimal(BigInteger.ZERO));
+            countVO.setRedPacketNum(redPacketVO.getRedPacketNum())
+                    .setRedPacketAmount(redPacketVO.getRedPacketAmount() != null ? redPacketVO.getRedPacketAmount() : new BigDecimal(BigInteger.ZERO));
+            countVO.setAnswerNum(answerVO.getAnswerNum()).setAnswerRightNum(answerVO.getAnswerRightNum())
+                    .setAnswerRightRate(answerVO.getAnswerRightRate()!=null ? answerVO.getAnswerRightRate() : new BigDecimal(BigInteger.ZERO));
+            allVO.setCountVO(countVO);
+            return allVO;
         }).collect(Collectors.toList());
     }
 

+ 2 - 0
fs-service-system/src/main/java/com/fs/store/vo/h5/FsUserPageListVO.java

@@ -74,5 +74,7 @@ public class FsUserPageListVO {
     @ApiModelProperty(value = "销售名称")
     private String companyUserNickName;
 
+    @ApiModelProperty(value = "备注")
+    private String remark;
 
 }

+ 1 - 3
fs-service-system/src/main/resources/mapper/course/FsUserCourseVideoMapper.xml

@@ -179,9 +179,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         course.course_name
         FROM `fs_user_course_video` video
         LEFT JOIN fs_user_course course ON video.course_id = course.course_id
-        where 1 = 1
-        and course.is_del = 0
-        AND FIND_IN_SET(#{companyId}, course.company_ids)
+        where course.is_del = 0
         <if test="courseId != null and courseId !='' ">
             AND video.course_id = #{courseId}
         </if>

+ 2 - 2
fs-service-system/src/main/resources/mapper/store/FsUserMapper.xml

@@ -391,8 +391,8 @@
         fs_user_course_count.stop_watch_days,
         fs_user_course_count.create_time,
         fs_user_course_count.complete_watch_date,
-        company_tag.tag,
-        company_tag_user.tag_ids,
+        GROUP_CONCAT(DISTINCT company_tag.tag) AS tag,
+        GROUP_CONCAT(DISTINCT company_tag.tag_id) AS tagIds,
         company_user.nick_name as companyUserNickName
         FROM
         fs_user