瀏覽代碼

医健宝,销售训练营代码提交

yjwang 1 周之前
父節點
當前提交
b6c2de85cd

+ 78 - 4
fs-company/src/main/java/com/fs/company/controller/course/FsUserCoursePeriodController.java

@@ -5,10 +5,12 @@ import com.fs.common.annotation.Log;
 import com.fs.common.core.controller.BaseController;
 import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.core.domain.R;
+import com.fs.common.core.domain.entity.SysDictData;
 import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.enums.BusinessType;
 import com.fs.common.exception.CustomException;
 import com.fs.common.utils.ServletUtils;
+import com.fs.common.utils.StringUtils;
 import com.fs.common.utils.poi.ExcelUtil;
 import com.fs.course.domain.FsUserCoursePeriod;
 import com.fs.course.domain.FsUserCoursePeriodDays;
@@ -29,6 +31,8 @@ import com.fs.framework.service.TokenService;
 import com.fs.his.vo.OptionsVO;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.hc.openapi.tool.fastjson.JSON;
+import com.hc.openapi.tool.fastjson.JSONObject;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -36,10 +40,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import java.time.LocalDate;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 
 /**
@@ -72,6 +73,23 @@ public class FsUserCoursePeriodController extends BaseController {
         return getDataTable(list);
     }
 
+    /**
+     * @Description: 营期key value 值
+     * @Param:
+     * @Return:
+     * @Author xgb
+     * @Date 2025/11/18 14:59
+     */
+    @GetMapping("/listLabel")
+    public TableDataInfo listLabel(FsUserCoursePeriod fsUserCoursePeriod)
+    {
+        startPage();
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        fsUserCoursePeriod.setCompanyId(loginUser.getCompany().getCompanyId().toString());
+        List<SysDictData> list = fsUserCoursePeriodService.selectFsUserCoursePeriodListLabel(fsUserCoursePeriod);
+        return getDataTable(list);
+    }
+
     @PostMapping("/page")
     @ApiOperation("自定义查询主列表分页")
     public R pageList(@RequestBody FsUserCoursePeriod fsUserCoursePeriod)
@@ -84,6 +102,33 @@ public class FsUserCoursePeriodController extends BaseController {
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         fsUserCoursePeriod.setCompanyIdList(Collections.singletonList(loginUser.getCompany().getCompanyId()));
         List<FsUserCoursePeriodVO> list = fsUserCoursePeriodService.selectFsUserCoursePeriodPage(fsUserCoursePeriod);
+        Long currentCompanyId = loginUser.getCompany().getCompanyId();
+        for (FsUserCoursePeriodVO vo : list) {
+            String isNeedRegisterMember = vo.getIsNeedRegisterMember();
+
+            if (StringUtils.isNotEmpty(isNeedRegisterMember)) {
+                boolean containsCurrentCompany = Arrays.stream(isNeedRegisterMember.split(","))
+                        .map(String::trim)
+                        .anyMatch(id -> id.equals(String.valueOf(currentCompanyId)));
+                vo.setIsNeedRegisterMember(containsCurrentCompany ? "1" : "0");
+            } else {
+                vo.setIsNeedRegisterMember("0");
+            }
+
+            if (StringUtils.isNotBlank(vo.getIsOpenRestFlag())) {
+                try {
+                    JSONObject jsonObject = JSON.parseObject(vo.getIsOpenRestFlag());
+                    Integer restReminder = jsonObject.getInteger(currentCompanyId.toString());
+                    vo.setIsOpenRestReminder(restReminder);
+                } catch (Exception e) {
+                    log.error("解析休息标志失败, isOpenRestFlag: {}, companyId: {}",
+                            vo.getIsOpenRestFlag(), currentCompanyId, e);
+                    vo.setIsOpenRestReminder(null);
+                }
+            } else {
+                vo.setIsOpenRestReminder(null);
+            }
+        }
         PageInfo<FsUserCoursePeriodVO> pageInfo = new PageInfo<>(list);
         Map<String, Object> result = new HashMap<>();
         result.put("rows", pageInfo.getList());
@@ -145,6 +190,33 @@ public class FsUserCoursePeriodController extends BaseController {
         fsUserCoursePeriod.setCompanyId(loginUser.getCompany().getCompanyId().toString());
         return toAjax(fsUserCoursePeriodService.updateFsUserCoursePeriod(fsUserCoursePeriod));
     }
+    /**
+     * 修改会员营期单独注册状态
+     */
+    @PreAuthorize("@ss.hasPermi('course:period:edit')")
+    @Log(title = "会员营期", businessType = BusinessType.UPDATE)
+    @PutMapping("/editIsNeedRegisterMember")
+    public AjaxResult editIsNeedRegisterMember(@RequestBody FsUserCoursePeriod fsUserCoursePeriod)
+    {
+        FsUserCoursePeriod fsUserCoursePeriod1 = fsUserCoursePeriodService.selectFsUserCoursePeriodById(fsUserCoursePeriod.getPeriodId());
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        if (ObjectUtil.isEmpty(fsUserCoursePeriod.getIsNeedRegisterMember())){
+            throw new CustomException("修改失败!");
+        }
+
+        return toAjax(fsUserCoursePeriodService.editIsNeedRegisterMember(fsUserCoursePeriod,loginUser.getCompany().getCompanyId().toString()));
+
+    }
+
+    @PreAuthorize("@ss.hasPermi('course:period:edit')")
+    @Log(title = "会员营期", businessType = BusinessType.UPDATE)
+    @PutMapping("/updatePeriodIsOpenRestReminder")
+    public AjaxResult updatePeriodIsOpenRestReminder(@RequestBody FsUserCoursePeriod fsUserCoursePeriod)
+    {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        return toAjax(fsUserCoursePeriodService.updatePeriod(fsUserCoursePeriod,loginUser.getCompany().getCompanyId()));
+
+    }
 
     /**
      * 删除会员营期
@@ -229,6 +301,8 @@ public class FsUserCoursePeriodController extends BaseController {
         PageHelper.startPage(param.getPageNum(), param.getPageSize());
         FsUserCoursePeriod period = fsUserCoursePeriodService.selectFsUserCoursePeriodById(param.getPeriodId());
         param.setMaxDate(LocalDate.now().plusDays(period.getMaxViewNum()));
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        param.setCompanyId(loginUser.getCompany().getCompanyId());
         List<FsPeriodCountVO> list = fsUserCoursePeriodDaysService.periodCourseCount(param);
         long count = fsUserCoursePeriodDaysService.periodCourseByCount(param);
         PageInfo<FsPeriodCountVO> pageInfo = new PageInfo<>(list);

+ 3 - 0
fs-service/src/main/java/com/fs/course/mapper/FsUserCoursePeriodMapper.java

@@ -1,5 +1,6 @@
 package com.fs.course.mapper;
 
+import com.fs.common.core.domain.entity.SysDictData;
 import com.fs.course.domain.FsUserCoursePeriod;
 import com.fs.course.param.CompanyRedPacketParam;
 import com.fs.course.param.PeriodStatisticCountParam;
@@ -170,4 +171,6 @@ public interface FsUserCoursePeriodMapper
             "</foreach> " +
             "</script> ")
     List<Long> selectFsUserCoursePeriodListByPeriodId(@Param("periodIds") List<Long> qwUserIds,@Param("companyId") Long companyId);
+
+    List<SysDictData> selectFsUserCoursePeriodListLabel(FsUserCoursePeriod fsUserCoursePeriod);
 }

+ 7 - 0
fs-service/src/main/java/com/fs/course/service/IFsUserCoursePeriodService.java

@@ -1,6 +1,7 @@
 package com.fs.course.service;
 
 import com.fs.common.core.domain.R;
+import com.fs.common.core.domain.entity.SysDictData;
 import com.fs.course.domain.FsUserCoursePeriod;
 import com.fs.course.param.PeriodStatisticCountParam;
 import com.fs.course.vo.FsCourseStaticsCountVO;
@@ -102,6 +103,12 @@ public interface IFsUserCoursePeriodService
 
     List<Long> selectFsUserCoursePeriodListByPeriodId(List<Long> periodIds,Long companyId);
 
+    int editIsNeedRegisterMember(FsUserCoursePeriod fsUserCoursePeriod,String s);
+
+    List<SysDictData> selectFsUserCoursePeriodListLabel(FsUserCoursePeriod fsUserCoursePeriod);
+
+    int updatePeriod(FsUserCoursePeriod fsUserCoursePeriod, Long companyId);
+
     R copyFsUserCoursePeriodAndCourse(PeriodStatisticCountParam param);
 
 }

+ 58 - 0
fs-service/src/main/java/com/fs/course/service/impl/FsUserCoursePeriodServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fs.common.core.domain.R;
+import com.fs.common.core.domain.entity.SysDictData;
 import com.fs.common.core.redis.RedisCache;
 import com.fs.common.exception.CustomException;
 import com.fs.common.exception.ServiceException;
@@ -17,7 +18,10 @@ import com.fs.course.service.IFsUserCoursePeriodDaysService;
 import com.fs.course.service.IFsUserCoursePeriodService;
 import com.fs.course.vo.FsCourseStaticsCountVO;
 import com.fs.course.vo.FsUserCoursePeriodVO;
+import com.hc.openapi.tool.fastjson.JSON;
+import com.hc.openapi.tool.fastjson.JSONObject;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -31,6 +35,7 @@ import java.time.temporal.ChronoUnit;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
+import java.util.stream.Collectors;
 
 /**
  * 会员营期Service业务层处理
@@ -332,6 +337,59 @@ public class FsUserCoursePeriodServiceImpl implements IFsUserCoursePeriodService
         return fsUserCoursePeriodMapper.selectFsUserCoursePeriodListByPeriodId(periodIds,companyId);
     }
 
+    @Override
+    public int editIsNeedRegisterMember(FsUserCoursePeriod fsUserCoursePeriod,String companyId) {
+        String currentValue = fsUserCoursePeriod.getIsNeedRegisterMember();
+
+        if (currentValue.equals("0")) {
+            String updatedValue = Arrays.stream(currentValue.split(","))
+                    .map(String::trim)
+                    .filter(id -> !id.equals(companyId))
+                    .collect(Collectors.joining(","));
+            fsUserCoursePeriod.setIsNeedRegisterMember(updatedValue);
+        } else {
+            String updatedValue = Arrays.stream(currentValue.split(","))
+                    .map(String::trim)
+                    .filter(id -> !id.equals("0"))
+                    .collect(Collectors.collectingAndThen(
+                            Collectors.toCollection(LinkedHashSet::new),
+                            set -> {
+                                set.add(companyId);
+                                return String.join(",", set);
+                            }
+                    ));
+            fsUserCoursePeriod.setIsNeedRegisterMember(updatedValue);
+        }
+        return fsUserCoursePeriodMapper.updateFsUserCoursePeriod(fsUserCoursePeriod);
+    }
+
+    @Override
+    public List<SysDictData> selectFsUserCoursePeriodListLabel(FsUserCoursePeriod fsUserCoursePeriod) {
+        return fsUserCoursePeriodMapper.selectFsUserCoursePeriodListLabel(fsUserCoursePeriod);
+    }
+
+    @Override
+    public int updatePeriod(FsUserCoursePeriod fsUserCoursePeriod, Long companyId) {
+        Integer flag=fsUserCoursePeriod.getIsOpenRestReminder();
+        FsUserCoursePeriod period=fsUserCoursePeriodMapper.selectFsUserCoursePeriodById(fsUserCoursePeriod.getPeriodId());
+        if (period==null){
+            return 0;
+        }
+
+        JSONObject jsonObject;
+        if (StringUtils.isNotBlank(period.getIsOpenRestFlag())){
+            jsonObject= JSON.parseObject(period.getIsOpenRestFlag());
+            jsonObject.put(companyId.toString(),flag);
+        }else {
+            jsonObject=new JSONObject();
+            jsonObject.put(companyId.toString(),flag);
+        }
+
+        fsUserCoursePeriod.setIsOpenRestFlag(jsonObject.toJSONString());
+
+        return fsUserCoursePeriodMapper.updateFsUserCoursePeriod(fsUserCoursePeriod);
+    }
+
     @Override
     public R copyFsUserCoursePeriodAndCourse(PeriodStatisticCountParam param) {
         if (param == null || param.getPeriodId() == null || param.getTrainingCampId() == null) {

+ 9 - 1
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java

@@ -2215,6 +2215,9 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
         if(Objects.isNull(courseProject)){
             return ResponseResult.fail(504, "课程配置错误,项目归属为空,课程ID: " + param.getCourseId());
         }
+        FsUserCoursePeriod fsUserCoursePeriod = param.getPeriodId() != null
+                ? fsUserCoursePeriodMapper.selectFsUserCoursePeriodById(param.getPeriodId())
+                : null;
 
         FsUserCompanyUser userCompanyUser = userCompanyUserService.selectByUserIdAndProjectId(fsUser.getUserId(), courseProject);
 
@@ -2233,7 +2236,12 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
                 if((companyUser.getIsAllowedAllRegister() !=null && companyUser.getIsAllowedAllRegister() != 1)){
                     return ResponseResult.fail(504,"当前销售禁止绑定会员,请联系销售!");
                 }
-                if (companyUser.getIsNeedRegisterMember() == null || companyUser.getIsNeedRegisterMember() == 1){
+                if (companyUser.getIsNeedRegisterMember() == null || companyUser.getIsNeedRegisterMember() == 1
+                        || (ObjectUtils.isNotEmpty(fsUserCoursePeriod)
+                        && ObjectUtils.isNotEmpty(fsUserCoursePeriod.getIsNeedRegisterMember())
+                        && Arrays.stream(fsUserCoursePeriod.getIsNeedRegisterMember().split(","))
+                        .map(String::trim)
+                        .anyMatch(id -> id.equals(String.valueOf(company.getCompanyId()))))){
                     return ResponseResult.fail(504,"请联系销售发送邀请链接成为会员!");
                 }
                 int defaultStatus = (company != null ? company.getFsUserIsDefaultBlack() : 0) == 1 ? 0 : 1;

+ 6 - 0
fs-service/src/main/java/com/fs/course/vo/FsUserCoursePeriodVO.java

@@ -88,5 +88,11 @@ public class FsUserCoursePeriodVO implements Serializable {
     @JsonFormat(pattern = "yyyy-MM-dd")
     @Excel(name = "营期线", width = 31, dateFormat = "yyyy-MM-dd")
     private Date periodLine;
+    /** 是否需要单独注册会员,1-是,0-否(用于个微销售分享看课) */
+    private String isNeedRegisterMember;
 
+    // 控制休息提示是否打开要暂停  0-关闭 1-打开 null-默认打开
+    private Integer IsOpenRestReminder;
+
+    private String IsOpenRestFlag;
 }

+ 13 - 1
fs-service/src/main/resources/mapper/course/FsUserCoursePeriodMapper.xml

@@ -21,6 +21,7 @@
         <result property="courseLogo"    column="course_logo"    />
         <result property="openCommentStatus"    column="open_comment_status"    />
         <result property="periodLine"    column="period_line"    />
+        <result property="isNeedRegisterMember"    column="is_need_register_member"    />
     </resultMap>
 
     <sql id="selectFsUserCoursePeriodVo">
@@ -48,12 +49,14 @@
         SELECT
         fs_user_course_period.period_id,
         fs_user_course_period.period_name,
+        fs_user_course_period.is_need_register_member,
         fs_user_course_period.company_id,
         fs_user_course_period.training_camp_id,
         fs_user_course_period.create_time,
         fs_user_course_period.update_time,
         fs_user_course_period.period_status,
         fs_user_course_period.max_view_num,
+        fs_user_course_period.is_open_rest_flag,
         course_style,
         live_room_style,
         red_packet_grant_method,
@@ -81,7 +84,6 @@
             <if test="periodStartingTime != null "> and period_starting_time &gt;= #{periodStartingTime}</if>
             <if test="periodEndTime != null "> and period_end_time &lt;= #{periodEndTime}</if>
             <if test="periodLine != null "> and period_line = #{periodLine}</if>
-            <if test="periodStatus != null "> and fs_user_course_period.period_status = #{periodStatus}</if>
         </where>
         group by fs_user_course_period.period_id
         order by create_time desc
@@ -96,6 +98,7 @@
         insert into fs_user_course_period
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="periodId != null">period_id,</if>
+            <if test="isNeedRegisterMember != null">is_need_register_member,</if>
             <if test="periodName != null">period_name,</if>
             <if test="companyId != null">company_id,</if>
             <if test="trainingCampId != null">training_camp_id,</if>
@@ -118,6 +121,7 @@
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="periodId != null">#{periodId},</if>
+            <if test="isNeedRegisterMember != null">#{isNeedRegisterMember},</if>
             <if test="periodName != null">#{periodName},</if>
             <if test="companyId != null">#{companyId},</if>
             <if test="trainingCampId != null">#{trainingCampId},</if>
@@ -144,6 +148,7 @@
         update fs_user_course_period
         <trim prefix="SET" suffixOverrides=",">
             <if test="periodName != null">period_name = #{periodName},</if>
+            <if test="isNeedRegisterMember != null">is_need_register_member = #{isNeedRegisterMember},</if>
             <if test="companyId != null">company_id = #{companyId},</if>
             <if test="trainingCampId != null">training_camp_id = #{trainingCampId},</if>
             <if test="createTime != null">create_time = #{createTime},</if>
@@ -162,6 +167,7 @@
             <if test="courseLogo != null and courseLogo !=''">course_logo = #{courseLogo},</if>
             <if test="openCommentStatus != null">open_comment_status = #{openCommentStatus},</if>
             <if test="periodLine != null">period_line = #{periodLine},</if>
+            <if test="isOpenRestFlag != null">is_open_rest_flag = #{isOpenRestFlag},</if>
         </trim>
         where period_id = #{periodId}
     </update>
@@ -397,4 +403,10 @@
         group by
         `period`.period_id
     </select>
+
+    <select id="selectFsUserCoursePeriodListLabel" resultType="com.fs.common.core.domain.entity.SysDictData">
+        select period_id as dictValue,period_name as dictLabel from fs_user_course_period
+                 where del_flag = '0'
+         <if test="companyId != null">and FIND_IN_SET (#{companyId},company_id) &gt; 0</if>
+    </select>
 </mapper>