lidongdong
2023-09-04 b2fce0dc7dc4ea5dec9792a2bc3ceb9d33d6e07b
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/McsCouponServiceImpl.java
@@ -1,10 +1,37 @@
package com.panzhihua.service_community.service.impl;
import java.util.Date;
import java.util.List;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.common.model.vos.community.microCommercialStreet.GameStatisticsVO;
import com.panzhihua.common.model.vos.community.microCommercialStreet.VerifiedReturnVO;
import com.panzhihua.common.service.user.UserService;
import com.panzhihua.service_community.dao.McsGameDAO;
import com.panzhihua.service_community.dao.McsMerchantDAO;
import com.panzhihua.service_community.dao.McsVerifiedRecordDAO;
import com.panzhihua.service_community.entity.McsGame;
import com.panzhihua.service_community.entity.McsMerchant;
import com.panzhihua.service_community.entity.McsVerifiedRecord;
import org.springframework.stereotype.Service;
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.PageJoinGameListDTO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.microCommercialStreet.McsCouponVO;
import com.panzhihua.common.model.vos.community.microCommercialStreet.MyCouponVO;
import com.panzhihua.service_community.dao.McsCouponDAO;
import com.panzhihua.service_community.entity.McsCoupon;
import com.panzhihua.service_community.service.McsCouponService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import static java.util.Objects.isNull;
import static java.util.Objects.nonNull;
/**
 * (McsCoupon)表服务实现类
@@ -15,4 +42,113 @@
@Service("mcsCouponService")
public class McsCouponServiceImpl extends ServiceImpl<McsCouponDAO, McsCoupon> implements McsCouponService {
    @Resource
    private McsVerifiedRecordDAO mcsVerifiedRecordDAO;
    @Resource
    private McsGameDAO mcsGameDAO;
    @Resource
    private UserService userService;
    @Resource
    private McsMerchantDAO mcsMerchantDAO;
    /**
     * 我的戳戳卷
     * @return
     * @param type
     * @param userId
     */
    @Override
    public R getMyCoupon(Integer type, Long userId) {
        MyCouponVO myCouponVO = this.baseMapper.getMyCouponData(userId);
        List<McsCouponVO> mcsCoupons = this.baseMapper.getCouponList(type, userId);
        myCouponVO.setCouponList(mcsCoupons);
        return R.ok(myCouponVO);
    }
    /**
     * 我的评价-参与游戏列表
     * @param pageJoinGameListDTO
     * @return
     */
    @Override
    public R getJoinGameList(PageJoinGameListDTO pageJoinGameListDTO) {
        Page page = new Page<>();
        page.setSize(pageJoinGameListDTO.getPageSize());
        page.setCurrent(pageJoinGameListDTO.getPageNum());
        IPage<McsCouponVO> mcsCoupons = this.baseMapper.pageJoinGameList(page, pageJoinGameListDTO);
        return R.ok(mcsCoupons);
    }
    /**
     * 戳戳卷核销
     * @param couponId
     * @param userId
     * @return
     */
    @Override
    public R verifyMcsCoupon(Long couponId, Long userId) {
        McsCoupon mcsCoupon = this.baseMapper.selectById(couponId);
        if (isNull(mcsCoupon)) {
            return R.fail("无效券码");
        }
        McsGame mcsGame = mcsGameDAO.selectById(mcsCoupon.getGameId());
        if (isNull(mcsGame)) {
            return R.fail("资源不存在");
        }
        McsMerchant mcsMerchant = mcsMerchantDAO.selectById(mcsGame.getMerchantId());
        if (isNull(mcsMerchant)) {
            return R.fail("资源不存在");
        }
        if (!mcsMerchant.getUserId().equals(userId)) {
            return R.fail("限指定商家核验");
        }
        if (mcsCoupon.getIsVerified()) {
            return R.fail("该券已核销");
        }
        Date nowDate = new Date();
        if (mcsGame.getExpireAt().before(nowDate)) {
            return R.fail("已过期");
        }
        R<LoginUserInfoVO> userInfoVOR = userService.getUserInfoByUserId(mcsCoupon.getUserId().toString());
        String nickName;
        if (R.isOk(userInfoVOR) && nonNull(userInfoVOR.getData())) {
            LoginUserInfoVO loginUserInfoVO = JSONObject.parseObject(JSONObject.toJSONString(userInfoVOR.getData()), LoginUserInfoVO.class);
            nickName = loginUserInfoVO.getName();
        } else {
            nickName = "默认昵称";
        }
        McsVerifiedRecord mcsVerifiedRecord = new McsVerifiedRecord();
        mcsVerifiedRecord.setCouponId(couponId);
        mcsVerifiedRecord.setAward(mcsCoupon.getAward());
        mcsVerifiedRecord.setName(mcsGame.getName());
        mcsVerifiedRecord.setNickName(nickName);
        mcsVerifiedRecord.setGameId(mcsGame.getId());
        mcsVerifiedRecord.setMerchantId(mcsGame.getMerchantId());
        int num = mcsVerifiedRecordDAO.insert(mcsVerifiedRecord);
        if (num > 0) {
            mcsCoupon.setIsVerified(true);
            this.baseMapper.updateById(mcsCoupon);
            VerifiedReturnVO verifiedReturnVO = new VerifiedReturnVO();
            verifiedReturnVO.setAward(mcsCoupon.getAward());
            verifiedReturnVO.setAwardType(mcsGame.getAwardType());
            verifiedReturnVO.setCouponId(couponId);
            verifiedReturnVO.setCover(mcsGame.getCover());
            verifiedReturnVO.setGameName(mcsGame.getName());
            verifiedReturnVO.setNickName(nickName);
            verifiedReturnVO.setVerifiedAt(nowDate);
            return R.ok(verifiedReturnVO);
        }
        return R.fail("核验失败,请重试");
    }
    /**
     * 游戏统计
     * @param userId
     * @return
     */
    @Override
    public R getMcsGameStatistics(Long userId) {
        GameStatisticsVO gameStatisticsVO = this.baseMapper.getMcsGameStatistics(userId);
        return R.ok(gameStatisticsVO);
    }
}