ソースを参照

Merge remote-tracking branch 'origin/ScrmStores' into ScrmStores

zyy 1 日 前
コミット
ea28b8fdd6

+ 60 - 0
fs-admin/src/main/java/com/fs/his/task/Task.java

@@ -3,6 +3,7 @@ package com.fs.his.task;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -18,8 +19,12 @@ import com.fs.company.service.ICompanyService;
 import com.fs.company.service.ICompanyUserService;
 import com.fs.company.vo.QwIpadTotalVo;
 import com.fs.company.vo.RedPacketMoneyVO;
+import com.fs.course.config.CourseConfig;
+import com.fs.course.domain.FsUserCoursePeriodDays;
 import com.fs.course.dto.BatchSendCourseAllDTO;
 import com.fs.course.mapper.FsCourseRedPacketLogMapper;
+import com.fs.course.mapper.FsUserCoursePeriodDaysMapper;
+import com.fs.course.service.IFsCourseLinkService;
 import com.fs.course.service.IFsCourseWatchLogService;
 import com.fs.course.service.ITencentCloudCosService;
 import com.fs.erp.domain.ErpDeliverys;
@@ -67,6 +72,7 @@ import com.fs.sop.domain.QwSopTempVoice;
 import com.fs.sop.service.IQwSopTempVoiceService;
 import com.fs.system.domain.SysConfig;
 import com.fs.system.mapper.SysConfigMapper;
+import com.fs.system.service.ISysConfigService;
 import com.google.gson.Gson;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -203,6 +209,15 @@ public class Task {
     @Autowired
     private Hospital580PrescriptionScrmService prescriptionScrmService;
 
+    @Autowired
+    private FsUserCoursePeriodDaysMapper fsUserCoursePeriodDaysMapper;
+
+    @Autowired
+    private IFsCourseLinkService fsCourseLinkService;
+
+    @Autowired
+    private ISysConfigService configService;
+
     /**
      * sop任务token消耗统计
      */
@@ -1559,4 +1574,49 @@ public class Task {
         prescriptionScrmService.prescriptionInvalid();
     }
 
+    /**
+     * 生成销售看课链接
+     * **/
+    public void generateSalesViewClassLink(){
+        //获取执行中的营期信息和营期课程
+        List<FsUserCoursePeriodDays> periodDaysList = fsUserCoursePeriodDaysMapper.getExecuteInformation();
+        if(!periodDaysList.isEmpty()){
+            //提取销售公司ID
+            String companyIds = periodDaysList.stream().map(FsUserCoursePeriodDays::getCompanyId).distinct().collect(Collectors.joining(","));
+            //获取销售公司以及对应员工信息
+            List<CompanyUser> companyUserList = companyUserMapper.getPeroidInformation(companyIds);
+            if(!companyUserList.isEmpty()){
+                //获取appid
+                String json = configService.selectConfigByKey("course.config");
+                CourseConfig config = JSON.parseObject(json, CourseConfig.class);
+                Map<String,List<CompanyUser>> companyUserMap = companyUserList.stream().collect(Collectors.groupingBy(c->String.valueOf(c.getCompanyId())));
+                periodDaysList.forEach(p->{
+                    String[] companyIdList= p.getCompanyId().split(",");
+                    for (String companyId: companyIdList){
+                        List<CompanyUser> userList = companyUserMap.get(companyId);
+                        userList.forEach(u->{
+                            //组装请求数据
+                            JSONObject jsonObject= new JSONObject();
+                            jsonObject.put("id",p.getId());
+                            jsonObject.put("projectCode","YJB");
+                            jsonObject.put("videoId",p.getVideoId());
+                            jsonObject.put("periodId",p.getPeriodId());
+                            jsonObject.put("courseId",p.getCourseId());
+                            jsonObject.put("projectId",p.getProjectId());
+                            jsonObject.put("companyId",u.getCompanyId());
+                            jsonObject.put("companyUserId",u.getUserId());
+                                //生成看课链接
+                                fsCourseLinkService.getGotoWxAppLink("/pages_course/videovip?course="+jsonObject.toJSONString(),config.getLoginMiniAppId());
+                              try {
+                                Thread.sleep(300);
+                             } catch (InterruptedException e) {
+                                throw new RuntimeException(e);
+                             }
+                        });
+                    }
+                });
+            }
+        }
+    }
+
 }

+ 10 - 0
fs-company/src/main/java/com/fs/company/controller/qw/QwSopTempController.java

@@ -268,4 +268,14 @@ public class QwSopTempController extends BaseController
     public R getSelectableRange(){
         return R.ok().put("data", qwSopTempService.getSelectableRange());
     }
+
+    @PutMapping("/updateCenterType")
+    public R updateCenterType(@RequestBody QwSopTemp qwSopTemp){
+        if(qwSopTemp.getId() == null){
+            return R.error("模板ID不能为空");
+        }else if(qwSopTemp.getSendType() == null){
+            return R.error("发送类型不能为空!");
+        }
+        return qwSopTempService.updateCenterType(qwSopTemp);
+    }
 }

+ 17 - 0
fs-service/src/main/java/com/fs/company/mapper/CompanyUserMapper.java

@@ -284,4 +284,21 @@ public interface CompanyUserMapper
 
 
     List<String> selectCompanyUserNameByIdsList(@Param("companyUserIDs")List<Long> companyUserID);
+
+    /**
+     * 获取营期销售公司信息
+     * @param userIds
+     * **/
+    @Select("SELECT\n" +
+            "\tcu.user_id,\n" +
+            "\tcu.company_id \n" +
+            "FROM\n" +
+            "\tcompany c\n" +
+            "\tINNER JOIN company_user cu ON c.company_id = cu.company_id \n" +
+            "WHERE\n" +
+            "\tc.company_id IN (#{userIds})\n" +
+            "\tc.dept_id NOT IN (136,123,121)\n"+
+            "\tAND c.`status` = 1 \n" +
+            "\tAND cu.`status` = 0")
+    List<CompanyUser> getPeroidInformation(@Param("userIds")String userIds);
 }

+ 4 - 0
fs-service/src/main/java/com/fs/course/domain/FsUserCoursePeriodDays.java

@@ -99,4 +99,8 @@ public class FsUserCoursePeriodDays extends BaseEntityTow {
     @TableField(exist = false)
     private Long projectId;
 
+    //销售公司id
+    @TableField(exist = false)
+    private String companyId;
+
 }

+ 16 - 0
fs-service/src/main/java/com/fs/course/mapper/FsUserCoursePeriodDaysMapper.java

@@ -137,4 +137,20 @@ public interface FsUserCoursePeriodDaysMapper extends BaseMapper<FsUserCoursePer
      * 批量更新日期时间字段
      */
     int batchUpdateDateTime(@Param("list") List<FsUserCoursePeriodDays> list);
+
+    @Select("SELECT\n" +
+            "\tpd.id,\n" +
+            "\tuc.project_id,\n" +
+            "\tep.period_id,\n" +
+            "\tep.company_id,\n" +
+            "\tpd.course_id,\n" +
+            "\tpd.video_id\n" +
+            "FROM\n" +
+            "\tfs_user_course_period ep\n" +
+            "\tINNER JOIN fs_user_course_period_days pd ON ep.period_id = pd.period_id \n" +
+            "\tINNER JOIN fs_user_course uc ON pd.course_id = uc.course_id\n"+
+            "WHERE\n" +
+            "\tep.period_status = 2 \n" +
+            "\tAND pd.STATUS = 1")
+    List<FsUserCoursePeriodDays> getExecuteInformation();
 }

+ 8 - 0
fs-service/src/main/java/com/fs/sop/service/IQwSopTempService.java

@@ -1,5 +1,6 @@
 package com.fs.sop.service;
 
+import com.fs.common.core.domain.R;
 import com.fs.qw.vo.SortDayVo;
 import com.fs.sop.domain.QwSopTemp;
 import com.fs.sop.domain.QwSopTempDay;
@@ -99,4 +100,11 @@ public interface IQwSopTempService
     void updateRedPackage(List<QwSopTempRedPackageVo> list);
 
     List<String> getSelectableRange();
+
+    /**
+     * 一键更新发送类型
+     * @param qwSopTemp 模板信息
+     * @return R
+     * **/
+    R updateCenterType(QwSopTemp qwSopTemp);
 }

+ 27 - 0
fs-service/src/main/java/com/fs/sop/service/impl/QwSopTempServiceImpl.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.fs.common.annotation.DataSource;
+import com.fs.common.core.domain.R;
 import com.fs.common.enums.DataSourceType;
 import com.fs.common.exception.base.BaseException;
 import com.fs.common.utils.PubFun;
@@ -596,4 +597,30 @@ public class QwSopTempServiceImpl implements IQwSopTempService
         }
         return TimeCalculator.calculateAvailableTimes(disabledTimeList);
     }
+
+    @Override
+    public R updateCenterType(QwSopTemp qwSopTemp) {
+        //获取模板信息
+        QwSopTemp temp = qwSopTempMapper.selectQwSopTempById(qwSopTemp.getId());
+        if(temp == null){
+            return R.error("模板不存在");
+        }
+        //获取模板其它数据信息
+        List<QwSopTempContent> contentList = qwSopTempContentService.selectQwSopTempContentByTempId(qwSopTemp.getId());
+        if(contentList.isEmpty()){
+            return R.error("请先创建,模板时间段信息!");
+        }
+
+        //筛选出卡片类型,小程序(4)和APP(9)
+        List<QwSopTempContent> updateTempList = contentList.stream().filter(e -> e.getContentType() == 4 || e.getContentType() == 9).collect(Collectors.toList());
+        updateTempList.stream().forEach(e -> {
+                    e.setContentType(qwSopTemp.getSendType());
+                    //解析json信息
+                    JSONObject jsonObject = JSONObject.parseObject(e.getContent());
+                    jsonObject.put("contentType",qwSopTemp.getSendType().toString());
+                    e.setContent(jsonObject.toJSONString());
+                    qwSopTempContentService.updateQwSopTempContent(e);
+        });
+        return R.ok();
+    }
 }