三七 4 hete
szülő
commit
91899d3e6a

+ 20 - 0
fs-service/src/main/java/com/fs/course/param/CourseCouponVerifyParam.java

@@ -0,0 +1,20 @@
+package com.fs.course.param;
+
+import lombok.Data;
+
+/**
+ * 课程/直播-优惠券核销参数
+ */
+@Data
+public class CourseCouponVerifyParam {
+
+    /** 优惠券发放记录) */
+    private Long couponUserId;
+    /**
+    * 核销卷id
+    */
+    private Long couponId;
+
+    /** 销售用户ID(服务端填充) */
+    private Long companyUserId;
+}

+ 11 - 2
fs-service/src/main/java/com/fs/his/domain/FsCourseCouponUser.java

@@ -41,8 +41,8 @@ public class FsCourseCouponUser {
     @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd")
     private Date startTime;
 
-    /** 核销状态 0-未核销 1-已核销 */
-    @Excel(name = "核销状态 0-未核销 1-已核销")
+    /** 核销状态 0-未核销 1-已核销 2已过期 3停用 */
+    @Excel(name = "核销状态 0-未核销 1-已核销 2已过期 3停用")
     private Integer status;
 
     /**
@@ -68,4 +68,13 @@ public class FsCourseCouponUser {
     /** 直播间id */
     @Excel(name = "直播间id")
     private Long liveId;
+
+    /** 核销销售用户ID */
+    @Excel(name = "核销销售用户ID")
+    private Long verifyUserId;
+
+    /** 核销时间 */
+    @Excel(name = "核销时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date verifyTime;
 }

+ 3 - 0
fs-service/src/main/java/com/fs/his/mapper/FsCourseCouponUserMapper.java

@@ -97,4 +97,7 @@ public interface FsCourseCouponUserMapper extends BaseMapper<FsCourseCouponUser>
 
     @Select("SELECT cu.*,c.title couponName FROM `fs_course_coupon_user` cu LEFT JOIN fs_course_coupon c ON cu.coupon_id = c.id WHERE cu.log_id = #{param.logId}")
     List<FsCourseCouponUserRecordVO> selectCourseCouponUserRecordList(@Param("param")FsCourseCouponUser courseCouponUser);
+
+    @Select("select * from fs_course_coupon_user where verify_user_id = #{companyUserId} and status = 1 ")
+    List<FsCourseCouponUserVO> getUseCouponByCompanyUserId(Long companyUserId);
 }

+ 6 - 0
fs-service/src/main/java/com/fs/his/service/IFsCourseCouponUserService.java

@@ -3,6 +3,7 @@ package com.fs.his.service;
 import java.util.List;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fs.common.core.domain.R;
+import com.fs.course.param.CourseCouponVerifyParam;
 import com.fs.his.domain.FsCourseCouponUser;
 import com.fs.his.vo.CourseCouponUserListUVO;
 import com.fs.his.vo.FsCourseCouponUserRecordVO;
@@ -70,4 +71,9 @@ public interface IFsCourseCouponUserService extends IService<FsCourseCouponUser>
 
 
     List<FsCourseCouponUserRecordVO> selectCourseCouponUserRecordList(FsCourseCouponUser courseCouponUser);
+
+
+    List<FsCourseCouponUserVO> getUseCouponByCompanyUserId(Long companyUserId);
+    R verifyCoupon(CourseCouponVerifyParam param);
+
 }

+ 84 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsCourseCouponUserServiceImpl.java

@@ -8,9 +8,14 @@ import java.util.Objects;
 import com.fs.common.core.domain.R;
 import com.fs.common.utils.DateUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fs.common.utils.StringUtils;
+import com.fs.course.param.CourseCouponVerifyParam;
+import com.fs.his.domain.FsCourseCoupon;
+import com.fs.his.mapper.FsCourseCouponMapper;
 import com.fs.his.vo.CourseCouponUserListUVO;
 import com.fs.his.vo.FsCourseCouponUserRecordVO;
 import com.fs.his.vo.FsCourseCouponUserVO;
+import com.fs.live.domain.LiveCouponUser;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.fs.his.mapper.FsCourseCouponUserMapper;
@@ -26,6 +31,10 @@ import com.fs.his.service.IFsCourseCouponUserService;
 @Service
 public class FsCourseCouponUserServiceImpl extends ServiceImpl<FsCourseCouponUserMapper, FsCourseCouponUser> implements IFsCourseCouponUserService {
 
+
+    @Autowired
+    private FsCourseCouponMapper couponMapper;
+
     /**
      * 查询用户看课优惠券
      *
@@ -141,4 +150,79 @@ public class FsCourseCouponUserServiceImpl extends ServiceImpl<FsCourseCouponUse
     public List<FsCourseCouponUserRecordVO> selectCourseCouponUserRecordList(FsCourseCouponUser courseCouponUser) {
         return baseMapper.selectCourseCouponUserRecordList(courseCouponUser);
     }
+
+    @Override
+    public List<FsCourseCouponUserVO> getUseCouponByCompanyUserId(Long companyUserId) {
+        return baseMapper.getUseCouponByCompanyUserId(companyUserId);
+    }
+
+    @Override
+    public R verifyCoupon(CourseCouponVerifyParam param) {
+
+        // 1. 参数校验
+        if (param.getCompanyUserId() == null) {
+            return R.error("销售未登录");
+        }
+        if (param.getCouponId() == null) {
+            return R.error("核销码不能为空");
+        }
+        if (param.getCouponUserId() == null) {
+            return R.error("用户领取记录ID不能为空");
+        }
+
+        FsCourseCoupon fsCourseCoupon = couponMapper.selectFsCourseCouponById(param.getCouponId());
+        Date nowDate = DateUtils.getNowDate();
+        FsCourseCouponUser couponUser = baseMapper.selectFsCourseCouponUserById(param.getCouponUserId());
+
+        if (fsCourseCoupon == null) {
+            return R.error("无此核销卷");
+        }
+
+        if(fsCourseCoupon.getStatus()==0){
+            couponUser.setStatus(3);
+            couponUser.setUpdateTime(nowDate);
+            baseMapper.updateFsCourseCouponUser(couponUser);
+            return R.error("核销卷已停用");
+        }
+
+
+        if (fsCourseCoupon.getLimitTime() != null && fsCourseCoupon.getLimitTime().before(nowDate)) {
+
+            couponUser.setStatus(2);
+            couponUser.setUpdateTime(nowDate);
+            baseMapper.updateFsCourseCouponUser(couponUser);
+            return R.error("核销券已过期");
+        }
+
+        if (couponUser == null) {
+            return R.error("无核销卷领取记录");
+        }
+
+        if (couponUser.getStatus() != null && couponUser.getStatus()==1) {
+            return R.error("核销卷已核销");
+        }
+
+        if (couponUser.getStatus() != null && couponUser.getStatus()==2) {
+            return R.error("核销卷已过期");
+        }
+
+        if (couponUser.getLimitTime() != null && couponUser.getLimitTime().before(nowDate)) {
+
+            couponUser.setStatus(2);
+            couponUser.setUpdateTime(nowDate);
+            baseMapper.updateFsCourseCouponUser(couponUser);
+            return R.error("核销卷已过期");
+        }
+
+        couponUser.setStatus(1);
+        couponUser.setVerifyTime(nowDate);
+        couponUser.setUpdateTime(nowDate);
+        couponUser.setVerifyUserId(param.getCompanyUserId());
+
+        baseMapper.updateFsCourseCouponUser(couponUser);
+
+        return R.ok("核销成功");
+
+    }
+
 }

+ 2 - 2
fs-service/src/main/resources/application-druid-ddgy.yml

@@ -175,6 +175,6 @@ openIM:
 im:
     type: NONE
 #是否为新商户,新商户不走mpOpenId
-isNewWxMerchant: false
+isNewWxMerchant: true
 
-enableRedPackAccount: 1
+enableRedPackAccount: 0

+ 17 - 0
fs-service/src/main/resources/db/changelog/changes/20260613-live-user-add-is-del.sql

@@ -91,3 +91,20 @@ ALTER TABLE fs_store_product_scrm
 ALTER TABLE fs_store_order_scrm
     ADD COLUMN sender_phone VARCHAR(20) NULL DEFAULT NULL COMMENT '物流订阅成功的发货人手机号';
 --rollback ALTER TABLE fs_store_order_scrm DROP COLUMN sender_phone;
+
+--changeset sgw:20260626-fs_course_coupon_user-company_user_id
+--preconditions onFail:MARK_RAN
+--precondition-sql-check expectedResult:1 SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = DATABASE() AND table_name = 'fs_course_coupon_user'
+--precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'fs_course_coupon_user' AND column_name = 'verify_user_id'
+ALTER TABLE fs_course_coupon_user
+    ADD COLUMN verify_user_id BIGINT DEFAULT NULL COMMENT '核销销售ID';
+--rollback ALTER TABLE fs_course_coupon_user DROP COLUMN verify_user_id;
+
+
+--changeset sgw:20260626-fs_course_coupon_user-verify_time
+--preconditions onFail:MARK_RAN
+--precondition-sql-check expectedResult:1 SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = DATABASE() AND table_name = 'fs_course_coupon_user'
+--precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'fs_course_coupon_user' AND column_name = 'verify_time'
+ALTER TABLE fs_course_coupon_user
+    ADD COLUMN verify_time DATETIME DEFAULT NULL COMMENT '核销时间';
+--rollback ALTER TABLE fs_course_coupon_user DROP COLUMN verify_time;

+ 12 - 1
fs-service/src/main/resources/mapper/his/FsCourseCouponUserMapper.xml

@@ -16,10 +16,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="logId"    column="log_id"    />
         <result property="sendType"    column="send_type"    />
         <result property="liveId"    column="live_id"    />
+        <result property="verifyUserId"    column="verify_user_id"    />
+        <result property="verifyTime"    column="verify_time"    />
     </resultMap>
 
     <sql id="selectFsCourseCouponUserVo">
-        select id, coupon_id, user_id, limit_time, start_time, create_time, update_time, status, log_id,send_type,live_id from fs_course_coupon_user
+        select id, coupon_id, user_id, limit_time, start_time, create_time, update_time, status, log_id,send_type,live_id,
+               verify_user_id,verify_time from fs_course_coupon_user
     </sql>
 
     <select id="selectFsCourseCouponUserList" parameterType="FsCourseCouponUser" resultMap="FsCourseCouponUserResult">
@@ -33,6 +36,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="logId != null "> and log_id = #{logId}</if>
             <if test="sendType != null "> and send_type = #{sendType}</if>
             <if test="liveId != null "> and live_id = #{liveId}</if>
+            <if test="verifyUserId != null "> and verify_user_id = #{verifyUserId}</if>
+            <if test="verifyTime != null "> and verify_time = #{verifyTime}</if>
         </where>
     </select>
 
@@ -55,6 +60,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="logId != null">log_id,</if>
             <if test="sendType != null">send_type,</if>
             <if test="liveId != null">live_id,</if>
+            <if test="verifyUserId != null">verify_user_id,</if>
+            <if test="verifyTime != null">verify_time,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="couponId != null">#{couponId},</if>
@@ -67,6 +74,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="logId != null">#{logId},</if>
             <if test="sendType != null">#{sendType},</if>
             <if test="liveId != null">#{liveId},</if>
+            <if test="verifyUserId != null">#{verifyUserId},</if>
+            <if test="verifyTime != null">#{verifyTime},</if>
          </trim>
     </insert>
 
@@ -83,6 +92,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="logId != null">log_id = #{logId},</if>
             <if test="sendType != null">send_type = #{sendType},</if>
             <if test="liveId != null">live_id = #{liveId},</if>
+            <if test="verifyUserId != null">verify_user_id = #{verifyUserId},</if>
+            <if test="verifyTime != null">verify_time = #{verifyTime},</if>
         </trim>
         where id = #{id}
     </update>

+ 33 - 1
fs-user-app/src/main/java/com/fs/app/controller/FsCourseCouponUserController.java

@@ -3,10 +3,15 @@ package com.fs.app.controller;
 
 import com.fs.app.annotation.Login;
 import com.fs.common.core.domain.R;
+import com.fs.company.domain.CompanyUser;
+import com.fs.company.service.ICompanyUserService;
+import com.fs.course.param.CourseCouponVerifyParam;
 import com.fs.his.domain.FsCourseCouponUser;
 import com.fs.his.param.FsCourseCouponUserUParam;
 import com.fs.his.service.IFsCourseCouponUserService;
 import com.fs.his.vo.CourseCouponUserListUVO;
+import com.fs.his.vo.FsCourseCouponUserVO;
+import com.fs.live.param.LiveCouponVerifyParam;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
@@ -25,7 +30,8 @@ public class FsCourseCouponUserController extends AppBaseController {
     Logger logger= LoggerFactory.getLogger(getClass());
     @Autowired
     private IFsCourseCouponUserService fsCourseCouponUserService;
-
+    @Autowired
+    private ICompanyUserService companyUserService;
 
     @Login
     @GetMapping("/myCouponList")
@@ -49,4 +55,30 @@ public class FsCourseCouponUserController extends AppBaseController {
         return fsCourseCouponUserService.useCoupon(courseCouponUser.getUserId(), courseCouponUser.getId());
     }
 
+    /**
+    * 获取销售已核销的列表
+    */
+    @Login
+    @GetMapping("/getUseCouponByCompanyUserId/{companyUserId}")
+    public List<FsCourseCouponUserVO> getUseCouponByCompanyUserId(@PathVariable(value = "companyUserId") Long companyUserId) {
+
+        return fsCourseCouponUserService.getUseCouponByCompanyUserId(companyUserId);
+    }
+
+    /**
+     * 销售扫码核销优惠券
+     */
+    @Login
+    @PostMapping("/verifyCoupon")
+    public R verifyCoupon(@RequestBody CourseCouponVerifyParam param) {
+        Long companyUserId = getCompanyUserId();
+        CompanyUser companyUser = companyUserService.selectCompanyUserById(companyUserId);
+        if (companyUser == null) {
+            return R.error("销售不存在");
+        }
+        param.setCompanyUserId(companyUserId);
+        return fsCourseCouponUserService.verifyCoupon(param);
+    }
+
+
 }