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 javax.annotation.Resource;
|
|
import static java.util.Objects.isNull;
|
import static java.util.Objects.nonNull;
|
|
/**
|
* (McsCoupon)表服务实现类
|
*
|
* @author makejava
|
* @since 2021-12-28 14:37:08
|
*/
|
@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);
|
}
|
}
|