From eb80b83a3d4a0b59325e90405dc6c687c2904d3a Mon Sep 17 00:00:00 2001
From: puhanshu <a9236326>
Date: 星期三, 05 一月 2022 14:45:16 +0800
Subject: [PATCH] 商家后台相关代码提交

---
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/McsGameServiceImpl.java |  195 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 195 insertions(+), 0 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/McsGameServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/McsGameServiceImpl.java
index 3c5a6a7..25c3a82 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/McsGameServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/McsGameServiceImpl.java
@@ -2,19 +2,29 @@
 
 import static java.util.Objects.isNull;
 
+import javax.annotation.Resource;
+
+import com.panzhihua.common.model.vos.community.microCommercialStreet.TopStatisticsVO;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.panzhihua.common.model.dtos.community.microCommercialStreet.McsGameDTO;
 import com.panzhihua.common.model.dtos.community.microCommercialStreet.PageMcsGameDTO;
 import com.panzhihua.common.model.dtos.community.microCommercialStreet.SetPopularForGameDTO;
 import com.panzhihua.common.model.dtos.community.microCommercialStreet.SetShelfForGameDTO;
 import com.panzhihua.common.model.vos.R;
 import com.panzhihua.common.model.vos.community.microCommercialStreet.McsGameVO;
 import com.panzhihua.service_community.dao.McsGameDAO;
+import com.panzhihua.service_community.dao.McsMerchantDAO;
 import com.panzhihua.service_community.entity.McsGame;
+import com.panzhihua.service_community.entity.McsMerchant;
 import com.panzhihua.service_community.service.McsGameService;
+
+import java.util.Date;
 
 /**
  * (McsGame)表服务实现类
@@ -24,6 +34,9 @@
  */
 @Service("mcsGameService")
 public class McsGameServiceImpl extends ServiceImpl<McsGameDAO, McsGame> implements McsGameService {
+
+    @Resource
+    private McsMerchantDAO mcsMerchantDAO;
 
     /**
      * 分页查询戳戳游戏
@@ -81,6 +94,12 @@
         Integer type = setShelfForGameDTO.getType();
         if (type.equals(1)) {
             //上架
+            McsMerchant mcsMerchant = mcsMerchantDAO.selectById(mcsGame.getMerchantId());
+            Integer publishLimit = mcsMerchant.getPublishLimit();
+            Integer publishCount = this.baseMapper.selectPublishCount(mcsGame.getMerchantId());
+            if (publishCount >= publishLimit) {
+                return R.fail("空闲戳戳点不足");
+            }
             mcsGame.setStatus(2);
         } else if (type.equals(2)) {
             //下架
@@ -108,6 +127,7 @@
             return R.fail("修改数据不存在");
         }
         mcsGame.setIsDel(true);
+        mcsGame.setStatus(McsGame.Status.yxj);
         mcsGame.setUpdatedBy(userId);
         int num = this.baseMapper.updateById(mcsGame);
         if (num > 0) {
@@ -115,4 +135,179 @@
         }
         return R.fail("删除失败,请重新尝试");
     }
+
+    /**
+     * 新增戳戳游戏
+     * @param mcsGameDTO
+     * @return
+     */
+    @Override
+    public R addMcsGame(McsGameDTO mcsGameDTO) {
+        Long userId = mcsGameDTO.getCreatedBy();
+        McsMerchant mcsMerchant = mcsMerchantDAO.selectOne(new QueryWrapper<McsMerchant>().lambda().eq(McsMerchant::getUserId, userId));
+        if (isNull(mcsMerchant)) {
+            return R.fail("未查询到商家信息");
+        }
+        Integer type = mcsGameDTO.getType();
+        McsGame mcsGame = new McsGame();
+        if (type.equals(1)) {
+            //1.戳戳币游戏
+            Integer allocation = mcsGameDTO.getAllocation();
+            Integer coins = mcsGameDTO.getCoins();
+            if (isNull(allocation)) {
+                return R.fail("缺少分配方式");
+            }
+            if (isNull(coins)) {
+                return R.fail("未设置戳戳币总额");
+            }
+            mcsGame.setSurplusCoins(mcsGameDTO.getCoins());
+        } else if (type.equals(2)) {
+            //2.体验游戏
+            Integer awardType = mcsGameDTO.getAwardType();
+            if (isNull(awardType)) {
+                return R.fail("缺少奖励类型");
+            }
+        } else {
+            return R.fail("未知错误");
+        }
+        BeanUtils.copyProperties(mcsGameDTO, mcsGame);
+        mcsGame.setSurplusCoupons(mcsGameDTO.getCoupons());
+        mcsGame.setStatus(McsGame.Status.wfb);
+        mcsGame.setMerchantId(mcsMerchant.getId());
+        int num = this.baseMapper.insert(mcsGame);
+        if (num > 0) {
+            return R.ok();
+        }
+        return R.fail("新增失败,请重新尝试");
+    }
+
+    /**
+     * 编辑戳戳游戏
+     * @param mcsGameDTO
+     * @return
+     */
+    @Override
+    public R putMcsGame(McsGameDTO mcsGameDTO) {
+        McsGame mcsGame = this.baseMapper.selectById(mcsGameDTO.getId());
+        if (isNull(mcsGame)) {
+            return R.fail("资源不存在");
+        }
+        Integer type = mcsGameDTO.getType();
+        if (type.equals(1)) {
+            //1.戳戳币游戏
+            Integer allocation = mcsGameDTO.getAllocation();
+            Integer coins = mcsGameDTO.getCoins();
+            if (isNull(allocation)) {
+                return R.fail("缺少分配方式");
+            }
+            if (isNull(coins)) {
+                return R.fail("未设置戳戳币总额");
+            }
+            Integer beforeCoins = mcsGame.getCoins();
+            Integer beforeSurplusCoins = mcsGame.getSurplusCoins();
+            Integer beforeUsedCoins = beforeCoins - beforeSurplusCoins;
+            Integer surplusCoins = coins - beforeUsedCoins;
+            if (surplusCoins < 0) {
+                return R.fail("戳戳币总额少于已发出的数量");
+            }
+            mcsGame.setSurplusCoins(surplusCoins);
+        } else if (type.equals(2)) {
+            //2.体验游戏
+            Integer awardType = mcsGameDTO.getAwardType();
+            if (isNull(awardType)) {
+                return R.fail("缺少奖励类型");
+            }
+        } else {
+            return R.fail("未知错误");
+        }
+        Integer beforeCoupons = mcsGame.getCoupons();
+        Integer beforeSurplusCoupons = mcsGame.getSurplusCoupons();
+        Integer beforeUsedCoupons = beforeCoupons - beforeSurplusCoupons;
+        BeanUtils.copyProperties(mcsGameDTO, mcsGame);
+        Integer coupons = mcsGame.getCoupons();
+        Integer surplusCoupons = coupons - beforeUsedCoupons;
+        if (surplusCoupons < 0) {
+            return R.fail("卷总数少于已发出的数量");
+        }
+        mcsGame.setSurplusCoupons(surplusCoupons);
+        int num = this.baseMapper.updateById(mcsGame);
+        if (num > 0) {
+            return R.ok();
+        }
+        return R.fail("编辑失败,请重新尝试");
+    }
+
+    /**
+     * 发布戳戳游戏
+     * @param gameId
+     * @param userId
+     * @return
+     */
+    @Override
+    public R publishMcsGame(Long gameId, Long userId) {
+        McsGame mcsGame = this.baseMapper.selectById(gameId);
+        if (isNull(mcsGame)) {
+            return R.fail("资源不存在");
+        }
+        McsMerchant mcsMerchant = mcsMerchantDAO.selectById(mcsGame.getMerchantId());
+        Integer publishLimit = mcsMerchant.getPublishLimit();
+        Integer publishCount = this.baseMapper.selectPublishCount(mcsGame.getMerchantId());
+        if (publishCount >= publishLimit) {
+            return R.fail("空闲戳戳点不足");
+        }
+        mcsGame.setStatus(McsGame.Status.jxz);
+        mcsGame.setPublishAt(new Date());
+        mcsGame.setUpdatedBy(userId);
+        int num = this.baseMapper.updateById(mcsGame);
+        if (num > 0) {
+            return R.ok();
+        }
+        return R.fail("发布失败,请重新尝试");
+    }
+
+    /**
+     * 结束戳戳游戏
+     * @param gameId
+     * @param userId
+     * @return
+     */
+    @Override
+    public R finishMcsGame(Long gameId, Long userId) {
+        McsGame mcsGame = this.baseMapper.selectById(gameId);
+        if (isNull(mcsGame)) {
+            return R.fail("资源不存在");
+        }
+        mcsGame.setStatus(McsGame.Status.yjs);
+        mcsGame.setUpdatedBy(userId);
+        int num = this.baseMapper.updateById(mcsGame);
+        if (num > 0) {
+            return R.ok();
+        }
+        return R.fail("结束失败,请重新尝试");
+    }
+
+    /**
+     * 戳戳游戏顶部统计数据
+     * @param userId
+     * @return
+     */
+    @Override
+    public R getTopStatistics(Long userId) {
+        McsMerchant mcsMerchant = mcsMerchantDAO.selectOne(new QueryWrapper<McsMerchant>().lambda().eq(McsMerchant::getUserId, userId));
+        if (isNull(mcsMerchant)) {
+            return R.fail("未查询到商家信息");
+        }
+        TopStatisticsVO topStatisticsVO = new TopStatisticsVO();
+        topStatisticsVO.setExpireAt(mcsMerchant.getExpireAt());
+        Integer appliedCount = this.baseMapper.selectAppliedCount(mcsMerchant.getId());
+        topStatisticsVO.setAppliedTotal(appliedCount);
+        Integer verifiedCount = this.baseMapper.selectVerifiedCount(mcsMerchant.getId());
+        topStatisticsVO.setVerifiedTotal(verifiedCount);
+
+        Integer publishLimit = mcsMerchant.getPublishLimit();
+        Integer publishCount = this.baseMapper.selectPublishCount(mcsMerchant.getId());
+        Integer idleTotal = publishLimit - publishCount;
+        topStatisticsVO.setIdleTotal(idleTotal > 0 ? idleTotal : 0);
+        return R.ok(topStatisticsVO);
+    }
 }

--
Gitblit v1.7.1