Bladeren bron

红德堂-销售公司红包开关、营期销售公司红包开关

Long 1 week geleden
bovenliggende
commit
5ae4ef7b26
18 gewijzigde bestanden met toevoegingen van 256 en 7 verwijderingen
  1. 10 0
      fs-admin/src/main/java/com/fs/course/controller/FsUserCoursePeriodController.java
  2. 22 0
      fs-admin/src/main/java/com/fs/course/param/PeriodCompanyRedPacketState.java
  3. 9 0
      fs-admin/src/main/java/com/fs/his/controller/FsCompanyController.java
  4. 18 0
      fs-admin/src/main/java/com/fs/his/param/CompanyRedPacketState.java
  5. 5 0
      fs-service/src/main/java/com/fs/company/domain/Company.java
  6. 7 0
      fs-service/src/main/java/com/fs/company/service/ICompanyService.java
  7. 13 0
      fs-service/src/main/java/com/fs/company/service/impl/CompanyServiceImpl.java
  8. 7 2
      fs-service/src/main/java/com/fs/company/vo/CompanyVO.java
  9. 32 0
      fs-service/src/main/java/com/fs/course/domain/FsUserCoursePeriodCompany.java
  10. 20 0
      fs-service/src/main/java/com/fs/course/mapper/FsUserCoursePeriodCompanyMapper.java
  11. 3 0
      fs-service/src/main/java/com/fs/course/param/CompanyRedPacketParam.java
  12. 13 0
      fs-service/src/main/java/com/fs/course/service/IFsUserCoursePeriodCompanyService.java
  13. 24 0
      fs-service/src/main/java/com/fs/course/service/impl/FsUserCoursePeriodCompanyServiceImpl.java
  14. 36 4
      fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java
  15. 15 0
      fs-service/src/main/resources/db/20251017-销售公司、营期公司列表增加红包开关.sql
  16. 4 0
      fs-service/src/main/resources/mapper/company/CompanyMapper.xml
  17. 15 0
      fs-service/src/main/resources/mapper/course/FsUserCoursePeriodCompanyMapper.xml
  18. 3 1
      fs-service/src/main/resources/mapper/course/FsUserCoursePeriodMapper.xml

+ 10 - 0
fs-admin/src/main/java/com/fs/course/controller/FsUserCoursePeriodController.java

@@ -11,6 +11,7 @@ import com.fs.course.domain.FsUserCoursePeriod;
 import com.fs.course.domain.FsUserCoursePeriodDays;
 import com.fs.course.domain.FsUserCourseVideoRedPackage;
 import com.fs.course.param.*;
+import com.fs.course.service.IFsUserCoursePeriodCompanyService;
 import com.fs.course.service.IFsUserCoursePeriodDaysService;
 import com.fs.course.service.IFsUserCoursePeriodService;
 import com.fs.course.service.IFsUserCourseVideoRedPackageService;
@@ -48,6 +49,7 @@ public class FsUserCoursePeriodController extends BaseController {
     private final IFsUserCoursePeriodService fsUserCoursePeriodService;
     private final IFsUserCoursePeriodDaysService fsUserCoursePeriodDaysService;
     private final IFsUserCourseVideoRedPackageService fsUserCourseVideoRedPackageService;
+    private final IFsUserCoursePeriodCompanyService fsUserCoursePeriodCompanyService;
 
     /**
      * 查询会员营期列表
@@ -215,6 +217,14 @@ public class FsUserCoursePeriodController extends BaseController {
         return R.ok();
     }
 
+    @PreAuthorize("@ss.hasPermi('course:period:changeRedPacketState')")
+    @PostMapping(value = "/changeRedPacketState")
+    @Log(title = "营期销售公司红包状态", businessType = BusinessType.UPDATE)
+    public R changeRedPacketState(@RequestBody PeriodCompanyRedPacketState params) {
+        fsUserCoursePeriodCompanyService.changeRedPacketState(params.getPeriodId(), params.getCompanyId(), params.getState());
+        return R.ok("修改成功");
+    }
+
     @PostMapping("/periodCount")
     @ApiOperation("营期统计")
     public R periodCourseCount(@RequestBody PeriodCountParam param) {

+ 22 - 0
fs-admin/src/main/java/com/fs/course/param/PeriodCompanyRedPacketState.java

@@ -0,0 +1,22 @@
+package com.fs.course.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+public class PeriodCompanyRedPacketState {
+
+    @NotNull(message = "营期ID不能为空")
+    @ApiModelProperty("营期ID")
+    private Long periodId;
+
+    @NotNull(message = "公司ID不能为空")
+    @ApiModelProperty("公司ID")
+    private Long companyId;
+
+    @NotNull(message = "状态不能为空")
+    @ApiModelProperty("是否开启红包 0关闭 1开启")
+    private Integer state;
+}

+ 9 - 0
fs-admin/src/main/java/com/fs/his/controller/FsCompanyController.java

@@ -25,6 +25,7 @@ import com.fs.core.utils.OrderCodeUtils;
 import com.fs.course.config.CourseConfig;
 import com.fs.framework.web.service.TokenService;
 import com.fs.his.mapper.FsDoctorMapper;
+import com.fs.his.param.CompanyRedPacketState;
 import com.fs.his.vo.OptionsVO;
 import com.fs.system.service.ISysConfigService;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -241,4 +242,12 @@ public class FsCompanyController extends BaseController
         deductService.insertCompanyDeduct(deduct);
         return R.ok("提交成功,等待审核");
     }
+
+    @PreAuthorize("@ss.hasPermi('his:company:changeRedPacketState')")
+    @PostMapping(value = "/changeRedPacketState")
+    @Log(title = "销售公司红包状态", businessType = BusinessType.UPDATE)
+    public R changeRedPacketState(@RequestBody CompanyRedPacketState params) {
+        companyService.changeRedPacketState(params.getCompanyId(), params.getState());
+        return R.ok("修改成功");
+    }
 }

+ 18 - 0
fs-admin/src/main/java/com/fs/his/param/CompanyRedPacketState.java

@@ -0,0 +1,18 @@
+package com.fs.his.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+public class CompanyRedPacketState {
+
+    @NotNull(message = "公司ID不能为空")
+    @ApiModelProperty("销售公司ID")
+    private Long companyId;
+
+    @NotNull(message = "状态不能为空")
+    @ApiModelProperty("红包状态 0关闭 1开启")
+    private Integer state;
+}

+ 5 - 0
fs-service/src/main/java/com/fs/company/domain/Company.java

@@ -136,4 +136,9 @@ public class Company extends BaseEntity
     /** 所属部门id */
     private Long deptId;
 
+    /**
+     * 是否开启红包 0关闭 1开启
+     */
+    private Integer openRedPacket;
+
 }

+ 7 - 0
fs-service/src/main/java/com/fs/company/service/ICompanyService.java

@@ -20,6 +20,8 @@ import com.fs.hisStore.domain.FsStoreOrderScrm;
 import com.fs.hisStore.domain.FsStorePaymentScrm;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.validation.constraints.NotNull;
+
 
 /**
  * 企业Service接口
@@ -167,4 +169,9 @@ public interface ICompanyService
     List<OptionsVO> getCompanyListByCorpId(String corpId);
 
     void subtractCompanyMoneyHourse(BigDecimal money, Long companyId, LocalTime start, LocalTime end);
+
+    /**
+     * 修改公司红包状态
+     */
+    void changeRedPacketState(Long companyId, Integer state);
 }

+ 13 - 0
fs-service/src/main/java/com/fs/company/service/impl/CompanyServiceImpl.java

@@ -1281,4 +1281,17 @@ public class CompanyServiceImpl implements ICompanyService
             }
         }
     }
+
+    /**
+     * 修改公司红包状态
+     */
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void changeRedPacketState(Long companyId, Integer state) {
+        Company company = companyMapper.selectCompanyById(companyId);
+        if (company != null && Arrays.asList(0,1).contains(state)) {
+            company.setOpenRedPacket(state);
+            companyMapper.updateCompany(company);
+        }
+    }
 }

+ 7 - 2
fs-service/src/main/java/com/fs/company/vo/CompanyVO.java

@@ -27,11 +27,11 @@ public class CompanyVO implements Serializable
 
     /** 联系电话 */
     @Excel(name = "联系电话")
-   private String companyMobile;
+    private String companyMobile;
 
     /** 地址 */
     @Excel(name = "地址")
-   private String companyAddress;
+    private String companyAddress;
 
     /** 状态 */
     @Excel(name = "状态")
@@ -95,4 +95,9 @@ public class CompanyVO implements Serializable
     private Integer usedNum;
     /** 所属部门id */
     private Long deptId;
+
+    /**
+     * 是否开启红包 0关闭 1开启
+     */
+    private Integer openRedPacket;
 }

+ 32 - 0
fs-service/src/main/java/com/fs/course/domain/FsUserCoursePeriodCompany.java

@@ -0,0 +1,32 @@
+package com.fs.course.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName("fs_user_course_period_company")
+public class FsUserCoursePeriodCompany {
+
+    /**
+     * 主键ID
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 营期ID
+     */
+    private Long periodId;
+
+    /**
+     * 公司ID
+     */
+    private Long companyId;
+
+    /**
+     * 是否开启红包 0关闭 1开启
+     */
+    private Integer openRedPacket;
+}

+ 20 - 0
fs-service/src/main/java/com/fs/course/mapper/FsUserCoursePeriodCompanyMapper.java

@@ -0,0 +1,20 @@
+package com.fs.course.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fs.course.domain.FsUserCoursePeriodCompany;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+public interface FsUserCoursePeriodCompanyMapper extends BaseMapper<FsUserCoursePeriodCompany> {
+
+    /**
+     * 修改营期公司红包状态
+     */
+    void saveOrUpdate(@Param("periodId") Long periodId, @Param("companyId") Long companyId, @Param("state") Integer state);
+
+    /**
+     * 根据营期ID和公司ID查询红包配置
+     */
+    @Select("select * from fs_user_course_period_company where period_id = #{periodId} and company_id = #{companyId}")
+    FsUserCoursePeriodCompany selectByPeriodIdAndCompanyId(@Param("periodId") Long periodId, @Param("companyId") Long companyId);
+}

+ 3 - 0
fs-service/src/main/java/com/fs/course/param/CompanyRedPacketParam.java

@@ -22,4 +22,7 @@ public class CompanyRedPacketParam implements Serializable {
     @Excel(name = "金额")
     private BigDecimal amount;
 
+    // 是否开启红包 0关闭 1开启
+    private Integer openRedPacket;
+
 }

+ 13 - 0
fs-service/src/main/java/com/fs/course/service/IFsUserCoursePeriodCompanyService.java

@@ -0,0 +1,13 @@
+package com.fs.course.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fs.course.domain.FsUserCoursePeriodCompany;
+
+
+public interface IFsUserCoursePeriodCompanyService extends IService<FsUserCoursePeriodCompany> {
+
+    /**
+     * 修改营期公司红包状态
+     */
+    void changeRedPacketState(Long periodId, Long companyId, Integer state);
+}

+ 24 - 0
fs-service/src/main/java/com/fs/course/service/impl/FsUserCoursePeriodCompanyServiceImpl.java

@@ -0,0 +1,24 @@
+package com.fs.course.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fs.course.domain.FsUserCoursePeriodCompany;
+import com.fs.course.mapper.FsUserCoursePeriodCompanyMapper;
+import com.fs.course.service.IFsUserCoursePeriodCompanyService;
+import org.springframework.stereotype.Service;
+
+import java.util.Arrays;
+
+@Service
+public class FsUserCoursePeriodCompanyServiceImpl extends ServiceImpl<FsUserCoursePeriodCompanyMapper, FsUserCoursePeriodCompany>
+        implements IFsUserCoursePeriodCompanyService {
+
+    /**
+     * 修改营期公司红包状态
+     */
+    @Override
+    public void changeRedPacketState(Long periodId, Long companyId, Integer state) {
+        if (periodId != null && companyId != null && Arrays.asList(0, 1).contains(state)) {
+            baseMapper.saveOrUpdate(periodId, companyId, state);
+        }
+    }
+}

+ 36 - 4
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java

@@ -231,6 +231,8 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
 
     @Autowired
     ConfigUtil configUtil;
+    @Autowired
+    private FsUserCoursePeriodCompanyMapper periodCompanyMapper;
 
 
 
@@ -1254,9 +1256,9 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
         BigDecimal amount = BigDecimal.ZERO;
         FsUserCourseVideoRedPackage redPackage = fsUserCourseVideoRedPackageMapper.selectRedPacketByCompanyId(param.getVideoId(), param.getCompanyId(), param.getPeriodId());
 
-        if (redPackage != null) {
+        if (redPackage != null && redPackage.getRedPacketMoney() != null) {
             amount = redPackage.getRedPacketMoney();
-        } else if (video != null) {
+        } else if (video != null && video.getRedPacketMoney() != null) {
             amount = video.getRedPacketMoney();
         }
 
@@ -1314,8 +1316,12 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
         packetParam.setUser(user);
 
         logger.info("红包金额 {},红包商户号 {}",amount,packetParam);
+
+        // 获取红包开关
+        boolean openRedPacket = getRedPacketState(log.getCompanyId());
+
         //2025.6.19 红包金额为0的时候
-        if (amount.compareTo(BigDecimal.ZERO)>0){
+        if (openRedPacket && amount.compareTo(BigDecimal.ZERO)>0){
             // 发送红包
             return sendRedPacketRewardToUser(param, log, config, packetParam, amount);
         } else {
@@ -1482,8 +1488,11 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
 
         logger.info("红包金额 {},红包商户号 {}",amount,packetParam);
 
+        // 获取红包开关
+        boolean openRedPacket = getRedPacketState(log.getCompanyId(), log.getPeriodId());
+
         //2025.6.19 红包金额为0的时候
-        if (amount.compareTo(BigDecimal.ZERO)>0){
+        if (openRedPacket && amount.compareTo(BigDecimal.ZERO)>0){
 
             Company company = companyMapper.selectCompanyById(param.getCompanyId());
             BigDecimal money = company.getMoney();
@@ -1555,6 +1564,29 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
 
     }
 
+    /**
+     * 获取红包开关
+     */
+    private boolean getRedPacketState(Long companyId) {
+        Company company = companyMapper.selectCompanyById(companyId);
+
+        // 公司开关
+        return company.getOpenRedPacket() == 1;
+    }
+
+    /**
+     * 获取红包开关
+     */
+    private boolean getRedPacketState(Long companyId, Long periodId) {
+        Company company = companyMapper.selectCompanyById(companyId);
+
+        FsUserCoursePeriodCompany coursePeriodCompany = periodCompanyMapper.selectByPeriodIdAndCompanyId(periodId, companyId);
+        boolean periodRedPacketState = coursePeriodCompany == null || coursePeriodCompany.getOpenRedPacket() == 1;
+
+        // 公司开关和营期开关
+        return company.getOpenRedPacket() == 1 && periodRedPacketState;
+    }
+
     /**
      * 直接发送奖励
      *

+ 15 - 0
fs-service/src/main/resources/db/20251017-销售公司、营期公司列表增加红包开关.sql

@@ -0,0 +1,15 @@
+-- 销售表新增红包开关字段
+alter table company
+    add column `open_red_packet` tinyint default 1 comment '是否开启红包 0关闭 1开启';
+
+-- 新增【营期】-【公司】关系表默认红包开关开启
+drop table if exists `fs_user_course_period_company`;
+create table `fs_user_course_period_company` (
+    `id`                bigint not null auto_increment       comment '主键ID',
+    `period_id`         bigint not null                      comment '营期ID',
+    `company_id`        bigint not null                      comment '公司ID',
+    `open_red_packet`   tinyint(1) default 1                 comment '是否开启红包 0关闭 1开启',
+    primary key (`id`) using btree,
+    unique uk_period_company (`period_id`,`company_id`)
+) engine = Innodb comment '营期公司关联表';
+

+ 4 - 0
fs-service/src/main/resources/mapper/company/CompanyMapper.xml

@@ -42,6 +42,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="groupName"    column="group_name"    />
         <result property="maxPadNum"    column="max_pad_num"    />
         <result property="deptId"   column="dept_id" />
+        <result property="openRedPacket"   column="open_red_packet" />
     </resultMap>
 
     <sql id="selectCompanyVo">
@@ -122,6 +123,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="groupName != null">group_name,</if>
             <if test="maxPadNum != null">max_pad_num,</if>
             <if test="deptId != null">dept_id,</if>
+            <if test="openRedPacket != null">open_red_packet,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="companyName != null">#{companyName},</if>
@@ -158,6 +160,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="groupName != null">#{groupName},</if>
             <if test="maxPadNum != null">#{maxPadNum},</if>
             <if test="deptId != null">#{deptId},</if>
+            <if test="openRedPacket != null">#{open_red_packet},</if>
          </trim>
     </insert>
 
@@ -200,6 +203,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="groupName != null">group_name = #{groupName},</if>
             <if test="maxPadNum != null">max_pad_num = #{maxPadNum},</if>
             <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="openRedPacket != null">open_red_packet = #{openRedPacket},</if>
         </trim>
         where company_id = #{companyId}
     </update>

+ 15 - 0
fs-service/src/main/resources/mapper/course/FsUserCoursePeriodCompanyMapper.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fs.course.mapper.FsUserCoursePeriodCompanyMapper">
+
+    <insert id="saveOrUpdate" >
+        insert into fs_user_course_period_company
+            (period_id, company_id, open_red_packet)
+        values
+            (#{periodId}, #{companyId}, #{state})
+        on duplicate key update
+            open_red_packet = VALUES(open_red_packet)
+    </insert>
+</mapper>

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

@@ -203,10 +203,12 @@
     <select id="selectCompanyByPeriod" resultType="com.fs.course.param.CompanyRedPacketParam">
         SELECT
             company.company_id,
-            company.company_name
+            company.company_name,
+            IF(ucpc.open_red_packet is null, 1, ucpc.open_red_packet) openRedPacket
         FROM
             company
                 LEFT JOIN fs_user_course_period fcp ON FIND_IN_SET ( company.company_id, fcp.company_id ) > 0
+        LEFT JOIN fs_user_course_period_company ucpc ON ucpc.company_id = company.company_id AND ucpc.period_id = fcp.period_id
         where fcp.period_id = #{periodId}
     </select>