Quellcode durchsuchen

用户转让盲豆

MrWang vor 2 Jahren
Ursprung
Commit
368d8a6a67

+ 39 - 0
mp-admin/src/main/java/com/qs/mp/web/controller/api/user/UserMineController.java

@@ -7,11 +7,16 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.qs.mp.admin.domain.Coupon;
 import com.qs.mp.admin.domain.CouponChannel;
 import com.qs.mp.admin.domain.Ticket;
+import com.qs.mp.admin.domain.TicketPackage;
 import com.qs.mp.admin.domain.vo.TicketListVO;
 import com.qs.mp.admin.service.ICouponChannelService;
 import com.qs.mp.admin.service.ICouponService;
 import com.qs.mp.admin.service.IGoodsService;
 import com.qs.mp.channel.domain.Channel;
+import com.qs.mp.channel.domain.ChannelOrderDetail;
+import com.qs.mp.channel.domain.param.ChannelTicketTransferParam;
+import com.qs.mp.channel.domain.param.UserCoinTransferParam;
+import com.qs.mp.channel.service.IChannelCoinTransferService;
 import com.qs.mp.channel.service.IChannelService;
 import com.qs.mp.common.annotation.Log;
 import com.qs.mp.common.core.domain.AjaxResult;
@@ -46,6 +51,7 @@ import java.util.Map;
 
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
+import java.util.Objects;
 import java.util.stream.Collectors;
 import lombok.AllArgsConstructor;
 import ma.glasnost.orika.MapperFacade;
@@ -99,6 +105,9 @@ public class UserMineController extends BaseApiController {
     @Autowired
     private ISysUserService userService;
 
+    @Autowired
+    private IChannelCoinTransferService channelCoinTransferService;
+
     @Log(title = "昵称和头像修改", businessType = BusinessType.UPDATE)
     @PostMapping("/updateUserInfo")
     public AjaxResult updateUserInfo(@RequestBody SysUser user) {
@@ -345,4 +354,34 @@ public class UserMineController extends BaseApiController {
         return AjaxResult.success(result);
     }
 
+    /**
+     * 我的盲豆转让
+     */
+    @PostMapping("/transfer/save")
+    @ApiOperation("我的盲豆转让")
+    public AjaxResult transfer(@RequestBody UserCoinTransferParam userCoinTransferParam) {
+        // 自己为转让人
+        Long userId = SecurityUtils.getLoginUser().getUserId();
+        if (userId == null) {
+            return AjaxResult.error("非法调用");
+        }
+        if (Objects.isNull(userCoinTransferParam.getNumber()) ||
+            StringUtils.isBlank(userCoinTransferParam.getMobile())) {
+            return AjaxResult.error("转让参数不能为空");
+        }
+        // 校验受让人信息
+        SysUser sysUser = userService.getOne(new LambdaQueryWrapper<SysUser>()
+            .eq(SysUser::getUserId, userCoinTransferParam.getAssigneeId())
+            .eq(SysUser::getStatus, 0).eq(SysUser::getDelFlag,0));
+        if (Objects.isNull(sysUser)) {
+            return AjaxResult.error("受让人信息不存在");
+        }
+        if (userId.equals(userCoinTransferParam.getAssigneeId())) {
+            return AjaxResult.error("不能转让给自己");
+        }
+        // 转让盲豆给他人
+        boolean flag  = channelCoinTransferService.transferCoin(userId, userCoinTransferParam);
+        return AjaxResult.success(flag);
+    }
+
 }

+ 67 - 0
mp-service/src/main/java/com/qs/mp/channel/domain/ChannelCoinTransfer.java

@@ -0,0 +1,67 @@
+package com.qs.mp.channel.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * @author hu
+ * @create 2023/4/20 15:39
+ * @apiNote 用户盲豆转让信息表实体类
+ */
+
+@TableName("mp_user_coin_transfer")
+@Data
+@ApiModel("用户盲豆转让信息表实体类")
+public class ChannelCoinTransfer implements Serializable {
+
+  private static final long serialVersionUID = 1L;
+
+  /**
+   * 主键
+   */
+  @TableId(value = "id", type = IdType.AUTO)
+  @ApiModelProperty("主键")
+  private Long id;
+
+  /**
+   * 转让人ID
+   */
+  @TableField("transfer_id")
+  @ApiModelProperty("转让人ID")
+  private Long transferId;
+
+  /**
+   * 拥有人ID
+   */
+  @TableField("have_id")
+  @ApiModelProperty("拥有人ID")
+  private Long haveId;
+
+  /**
+   * 受让人的盲豆数量
+   */
+  @TableField("number")
+  @ApiModelProperty("受让人的盲豆数量")
+  private Integer number;
+
+  /**
+   * 创建时间
+   */
+  @TableField("created_time")
+  @ApiModelProperty("创建时间")
+  private Date createdTime;
+
+  /**
+   * 更新时间
+   */
+  @TableField("updated_time")
+  @ApiModelProperty("更新时间")
+  private Date updatedTime;
+}

+ 25 - 0
mp-service/src/main/java/com/qs/mp/channel/domain/param/UserCoinTransferParam.java

@@ -0,0 +1,25 @@
+package com.qs.mp.channel.domain.param;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author hu
+ * @apiNote 我的盲豆转让入参类
+ * @date 2023/4/20
+ */
+
+@ApiModel("我的盲豆转让入参类")
+@Data
+public class UserCoinTransferParam {
+
+  @ApiModelProperty("受让人的盲豆数量")
+  private Integer number;
+
+  @ApiModelProperty("受让人id")
+  private Long assigneeId;
+
+  @ApiModelProperty("受让人手机号")
+  private String mobile;
+}

+ 13 - 0
mp-service/src/main/java/com/qs/mp/channel/mapper/ChannelCoinTransferMapper.java

@@ -0,0 +1,13 @@
+package com.qs.mp.channel.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qs.mp.channel.domain.ChannelCoinTransfer;
+
+/**
+ * @author mine
+ * @create 2023/4/20 15:22
+ * @apiNote
+ */
+public interface ChannelCoinTransferMapper extends BaseMapper<ChannelCoinTransfer> {
+
+}

+ 21 - 0
mp-service/src/main/java/com/qs/mp/channel/service/IChannelCoinTransferService.java

@@ -0,0 +1,21 @@
+package com.qs.mp.channel.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qs.mp.channel.domain.ChannelCoinTransfer;
+import com.qs.mp.channel.domain.param.UserCoinTransferParam;
+
+/**
+ * @author hu
+ * @create 2023/4/20 15:16
+ * @apiNote 用户盲豆转让信息表 服务类
+ */
+public interface IChannelCoinTransferService extends IService<ChannelCoinTransfer>{
+
+  /**
+   * 用户盲豆转让
+   * @param userId     转让人id
+   * @param userCoinTransferParam 转让参数
+   * @return
+   */
+  boolean transferCoin(Long userId, UserCoinTransferParam userCoinTransferParam);
+}

+ 42 - 0
mp-service/src/main/java/com/qs/mp/channel/service/impl/ChannelCoinTransferServiceImpl.java

@@ -0,0 +1,42 @@
+package com.qs.mp.channel.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qs.mp.channel.domain.ChannelCoinTransfer;
+import com.qs.mp.channel.domain.ChannelOrderDetail;
+import com.qs.mp.channel.domain.ChannelTicketTransfer;
+import com.qs.mp.channel.domain.param.UserCoinTransferParam;
+import com.qs.mp.channel.mapper.ChannelCoinTransferMapper;
+import com.qs.mp.channel.service.IChannelCoinTransferService;
+import com.qs.mp.user.service.IUserCoinService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * @author hu
+ * @create 2023/4/20 15:17
+ * @apiNote 用户盲豆转让
+ */
+
+@Service
+public class ChannelCoinTransferServiceImpl extends ServiceImpl<ChannelCoinTransferMapper, ChannelCoinTransfer> implements IChannelCoinTransferService {
+
+  @Autowired
+  private IUserCoinService userCoinService;
+
+  @Override
+  @Transactional(rollbackFor = Exception.class)
+  public boolean transferCoin(Long userId, UserCoinTransferParam userCoinTransferParam) {
+    // 转让盲豆
+    ChannelCoinTransfer channelCoinTransfer = new ChannelCoinTransfer();
+    channelCoinTransfer.setTransferId(userId);
+    channelCoinTransfer.setHaveId(userCoinTransferParam.getAssigneeId());
+    channelCoinTransfer.setNumber(userCoinTransferParam.getNumber());
+    // 记录盲豆转让信息
+    this.save(channelCoinTransfer);
+    //处理更新盲豆
+    return true;
+  }
+}
+

+ 0 - 2
mp-service/src/main/java/com/qs/mp/channel/service/impl/ChannelTicketTransferServiceImpl.java

@@ -37,7 +37,6 @@ public class ChannelTicketTransferServiceImpl extends ServiceImpl<ChannelTicketT
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean transferTicket(Long transferChannelId, ChannelTicketTransferParam channelTicketTransferParam) {
-
         // 转让盲票
         ChannelTicketTransfer channelTicketTransfer = new ChannelTicketTransfer();
         channelTicketTransfer.setTransferChannelId(transferChannelId);
@@ -54,7 +53,6 @@ public class ChannelTicketTransferServiceImpl extends ServiceImpl<ChannelTicketT
                 .set(ChannelOrderDetail::getChannelId, channelTicketTransferParam.getChannelId())
                 .eq(ChannelOrderDetail::getPkgId, channelTicketTransferParam.getPkgId())
                 .eq(ChannelOrderDetail::getChannelId, transferChannelId));
-
         return true;
     }
 

+ 20 - 0
mp-service/src/main/resources/mapper/user/ChannelCoinTransferMapper.xml

@@ -0,0 +1,20 @@
+<?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.qs.mp.user.mapper.ChannelCoinTransferMapper">
+
+  <!-- 通用查询映射结果 -->
+  <resultMap id="BaseResultMap" type="com.qs.mp.user.mapper.ChannelCoinTransferMapper">
+    <id column="id" property="id"/>
+    <result column="transfer_id" property="transferId"/>
+    <result column="have_id" property="haveId"/>
+    <result column="number" property="number"/>
+    <result column="createdTime" property="createdTime"/>
+    <result column="updatedTime" property="updatedTime"/>
+  </resultMap>
+
+  <!-- 通用查询结果列 -->
+  <sql id="Base_Column_List">
+    id, transfer_id, have_id, number, created_time, updated_time
+  </sql>
+</mapper>