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 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 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 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 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); } }