New file |
| | |
| | | package com.matrix.system.shopXcx.api.action; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.RandomUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.matrix.system.common.init.UserCacheManager; |
| | | import com.matrix.core.pojo.AjaxResult; |
| | | import com.matrix.core.tools.StringUtils; |
| | | import com.matrix.system.activity.dao.ActivitySignAwardSetDao; |
| | | import com.matrix.system.activity.dao.ActivitySignReceiveRecordDao; |
| | | import com.matrix.system.activity.dao.ActivitySignRecordDao; |
| | | import com.matrix.system.activity.dao.ActivitySignWriteoffDao; |
| | | import com.matrix.system.activity.entity.ActivitySignAwardSet; |
| | | import com.matrix.system.activity.entity.ActivitySignReceiveRecord; |
| | | import com.matrix.system.activity.entity.ActivitySignRecord; |
| | | import com.matrix.system.activity.entity.ActivitySignWriteoff; |
| | | import com.matrix.system.common.constance.AppConstance; |
| | | import com.matrix.system.hive.bean.SysVipInfo; |
| | | import com.matrix.system.score.dao.ScoreVipDetailDao; |
| | | import com.matrix.system.score.entity.ScoreVipDetail; |
| | | import com.matrix.system.score.service.ScoreVipDetailService; |
| | | import com.matrix.system.shopXcx.api.service.WxShopLogisticsQueryService; |
| | | import com.matrix.system.shopXcx.api.tools.WxShopCouponUtil; |
| | | import com.matrix.system.shopXcx.api.vo.ActivitySignAwardSetVo; |
| | | import com.matrix.system.shopXcx.api.vo.LuckyDrawBasicInfoJsonVo; |
| | | import com.matrix.system.shopXcx.api.vo.LuckyDrawInfoVo; |
| | | import com.matrix.system.shopXcx.api.vo.LuckyDrawSuccessVo; |
| | | import com.matrix.system.shopXcx.bean.ShopActivities; |
| | | import com.matrix.system.shopXcx.bean.ShopCoupon; |
| | | import com.matrix.system.shopXcx.bean.ShopCouponRecord; |
| | | import com.matrix.system.shopXcx.dao.*; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import io.swagger.annotations.ApiResponse; |
| | | import io.swagger.annotations.ApiResponses; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | @Api(tags = "转盘抽奖活动接口类") |
| | | @RestController |
| | | @RequestMapping(value = "/wxapi/luckydraw") |
| | | public class WxShopActivitiesLuckydrawAction { |
| | | |
| | | @Autowired |
| | | private ShopActivitiesDao shopActivitiesDao; |
| | | |
| | | @Autowired |
| | | private UserCacheManager userCacheManager; |
| | | |
| | | @Autowired |
| | | private ActivitySignAwardSetDao activitySignAwardSetDao; |
| | | |
| | | @Autowired |
| | | private ActivitySignReceiveRecordDao activitySignReceiveRecordDao; |
| | | |
| | | @Autowired |
| | | private ActivitySignWriteoffDao activitySignWriteoffDao; |
| | | |
| | | @Autowired |
| | | private ActivitySignRecordDao activitySignRecordDao; |
| | | |
| | | @Autowired |
| | | ShopDeliveryInfoDao shopDeliveryInfoDao; |
| | | |
| | | @Autowired |
| | | private ShopLogisticsInfoDao shopLogisticsInfoDao; |
| | | @Autowired |
| | | private ShopReceiveAddressDao shopReceiveAddressDao; |
| | | |
| | | @Autowired |
| | | private WxShopLogisticsQueryService wxShopLogisticsQueryService; |
| | | @Autowired |
| | | private ScoreVipDetailService scoreVipDetailService; |
| | | @Autowired |
| | | private ShopCouponDao shopCouponDao; |
| | | @Autowired |
| | | private WxShopCouponUtil wxShopCouponUtil; |
| | | @Autowired |
| | | private ShopCouponRecordDao shopCouponRecordDao; |
| | | @Autowired |
| | | private ScoreVipDetailDao scoreVipDetailDao; |
| | | |
| | | @ApiOperation(value = "获取抽奖基本信息", notes = "") |
| | | @ApiResponses({ |
| | | @ApiResponse(code = 200, message = "ok", response = LuckyDrawInfoVo.class) |
| | | }) |
| | | @GetMapping(value = "/getLuckydrawBasicInfo") |
| | | public AjaxResult getLuckydrawBasicInfo() { |
| | | //获取登录人信息 |
| | | SysVipInfo loginUser = userCacheManager.getLoginUser(); |
| | | Long companyId = loginUser.getCompanyId(); |
| | | Long userId = loginUser.getId(); |
| | | //获取抽奖活动的信息 |
| | | LuckyDrawInfoVo luckyDrawInfoVo = new LuckyDrawInfoVo(); |
| | | AjaxResult ajaxResult = new AjaxResult(); |
| | | |
| | | ShopActivities shopActivities = shopActivitiesDao.selectOneByCompanyIdAndActTypeAndActStatus(companyId,ShopActivities.ACTIVITIES_TYPE_LUCKYDRAW,ShopActivities.ACTSTATUS_STATUS_ING); |
| | | if(ObjectUtil.isEmpty(shopActivities)){ |
| | | ajaxResult = AjaxResult.buildFailInstance("活动还没有开始"); |
| | | ajaxResult.setData(luckyDrawInfoVo); |
| | | return ajaxResult; |
| | | } |
| | | Long actId = shopActivities.getId(); |
| | | luckyDrawInfoVo.setActName(shopActivities.getActName()); |
| | | luckyDrawInfoVo.setActCode(shopActivities.getActCode()); |
| | | luckyDrawInfoVo.setId(shopActivities.getId()); |
| | | String actContent = shopActivities.getActContent(); |
| | | LuckyDrawBasicInfoJsonVo luckyDrawBasicInfoJsonVo = JSON.parseObject(actContent, LuckyDrawBasicInfoJsonVo.class); |
| | | luckyDrawInfoVo.setLuckyDrawBasicInfoJsonVo(luckyDrawBasicInfoJsonVo); |
| | | |
| | | List<ActivitySignAwardSetVo> activitySignAwardSetVos = activitySignAwardSetDao |
| | | .selectListByActIDAndCompanyId(actId,companyId, ActivitySignAwardSet.AWARDSTATE_WORK); |
| | | luckyDrawInfoVo.setActivitySignAwardSetVos(activitySignAwardSetVos); |
| | | |
| | | /** |
| | | * 今日是否能参与 |
| | | * 用户今日剩余抽奖次数 |
| | | * 今日参与次数<每日允许最大参与次数都可以抽奖 |
| | | */ |
| | | //获取活动设置的参与次数 |
| | | Integer wmkcjjh = luckyDrawBasicInfoJsonVo.getWmkcjjh(); |
| | | //获取今日参与次数 |
| | | List<ActivitySignRecord> activityRecords = activitySignRecordDao.selectListByActIdAndUserIdLikesignTime(actId,userId,new Date()); |
| | | if(CollUtil.isNotEmpty(activityRecords)){ |
| | | if(activityRecords.size() >= wmkcjjh){ |
| | | luckyDrawInfoVo.setJoinState(LuckyDrawInfoVo.JOINSTATE_NOT); |
| | | luckyDrawInfoVo.setLuckyDrawTime(0); |
| | | }else{ |
| | | luckyDrawInfoVo.setJoinState(LuckyDrawInfoVo.JOINSTATE_YES); |
| | | luckyDrawInfoVo.setLuckyDrawTime(wmkcjjh-activityRecords.size()); |
| | | } |
| | | }else{ |
| | | luckyDrawInfoVo.setJoinState(LuckyDrawInfoVo.JOINSTATE_YES); |
| | | luckyDrawInfoVo.setLuckyDrawTime(wmkcjjh); |
| | | } |
| | | |
| | | //获取用户当前积分 |
| | | int totalScore = scoreVipDetailDao.selectUserTotalScore(userId); |
| | | luckyDrawInfoVo.setTotalScore(totalScore); |
| | | ajaxResult = AjaxResult.buildSuccessInstance(""); |
| | | ajaxResult.setData(luckyDrawInfoVo); |
| | | return ajaxResult; |
| | | } |
| | | |
| | | /** |
| | | * 点击抽奖 |
| | | * |
| | | */ |
| | | @ApiOperation(value = "点击抽奖", notes = "") |
| | | @ApiResponses({ |
| | | @ApiResponse(code = 200, message = "ok", response = LuckyDrawSuccessVo.class) |
| | | }) |
| | | |
| | | @GetMapping(value = "/clickLuckyDraw/{actId}") |
| | | @ResponseBody |
| | | @Transactional |
| | | public AjaxResult clickLuckyDraw(@PathVariable("actId") long actId) { |
| | | SysVipInfo user = userCacheManager.getLoginUser(); |
| | | Long userId = user.getId(); |
| | | Long companyId = user.getCompanyId(); |
| | | /** |
| | | * 活动是否存在 |
| | | * 活动是否已经开始 |
| | | * 免费抽奖还是积分抽奖 |
| | | * 积分抽奖一次一次换 |
| | | * 减少积分 |
| | | * 是否中奖 |
| | | * 中奖规则 |
| | | * 奖品处理 |
| | | * |
| | | */ |
| | | //活动是否存在 |
| | | ShopActivities shopActivities = shopActivitiesDao.selectById(actId); |
| | | if (ObjectUtil.isEmpty(shopActivities)) { |
| | | return AjaxResult.buildFailInstance("活动不存在"); |
| | | } |
| | | //活动是否已经开始 |
| | | Integer actStatus = shopActivities.getActStatus(); |
| | | if(ShopActivities.ACTSTATUS_STATUS_ING != actStatus) { |
| | | return AjaxResult.buildFailInstance("活动未开始"); |
| | | } |
| | | //获取今日抽奖总次数 |
| | | String actContent = shopActivities.getActContent(); |
| | | LuckyDrawBasicInfoJsonVo luckyDrawBasicInfoJsonVo = JSON.parseObject(actContent, LuckyDrawBasicInfoJsonVo.class); |
| | | List<ActivitySignRecord> activityRecords = activitySignRecordDao.selectListByActIdAndUserIdLikesignTime(actId,userId, DateUtil.date()); |
| | | if(CollUtil.isNotEmpty(activityRecords)){ |
| | | Integer wmkcjjh = luckyDrawBasicInfoJsonVo.getWmkcjjh(); |
| | | Integer jfdhcs = luckyDrawBasicInfoJsonVo.getJfdhcs(); |
| | | if(activityRecords.size() >= (wmkcjjh+jfdhcs)){ |
| | | return AjaxResult.buildFailInstance("明天再来抽奖吧"); |
| | | } |
| | | } |
| | | |
| | | //生成抽奖记录 |
| | | ActivitySignRecord activitySignRecordAdd = new ActivitySignRecord(); |
| | | activitySignRecordAdd.setCompanyId(companyId); |
| | | activitySignRecordAdd.setCreateBy(user.getVipName()); |
| | | activitySignRecordAdd.setCreateTime(DateUtil.date()); |
| | | activitySignRecordAdd.setUpdateBy(user.getVipName()); |
| | | activitySignRecordAdd.setUpdateTime(DateUtil.date()); |
| | | activitySignRecordAdd.setActivityId(actId); |
| | | activitySignRecordAdd.setSignTime(DateUtil.date()); |
| | | activitySignRecordAdd.setUserId(userId); |
| | | activitySignRecordDao.insert(activitySignRecordAdd); |
| | | |
| | | /** |
| | | 获取中奖概率 |
| | | 中奖了获取奖品ID |
| | | 没有中奖则获取谢谢参与的奖品ID |
| | | 每个人最多中奖次数 |
| | | */ |
| | | |
| | | List<LuckyDrawSuccessVo> luckyDrawSuccessVos = new ArrayList<>(); |
| | | |
| | | //获取谢谢参与奖 |
| | | QueryWrapper<ActivitySignAwardSet> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.eq("award_rule",ActivitySignAwardSet.AWARDRULE_NORMAL); |
| | | queryWrapper.eq("company_id",companyId); |
| | | queryWrapper.eq("activity_id",actId); |
| | | ActivitySignAwardSet activitySignAwardSetNormal = activitySignAwardSetDao.selectOne(queryWrapper); |
| | | //每个人最多中奖次数 |
| | | Integer zzjcs = luckyDrawBasicInfoJsonVo.getZzjcs(); |
| | | QueryWrapper<ActivitySignReceiveRecord> queryWrapperActivitySignReceiveRecord = new QueryWrapper<>(); |
| | | queryWrapperActivitySignReceiveRecord.eq("company_id", companyId); |
| | | queryWrapperActivitySignReceiveRecord.eq("activity_id", actId); |
| | | queryWrapperActivitySignReceiveRecord.eq("user_id", userId); |
| | | queryWrapperActivitySignReceiveRecord.ne("award_id", activitySignAwardSetNormal.getId()); |
| | | List<ActivitySignReceiveRecord> activitySignReceiveRecordDone = activitySignReceiveRecordDao.selectList(queryWrapperActivitySignReceiveRecord); |
| | | if(CollUtil.isNotEmpty(activitySignReceiveRecordDone)){ |
| | | if(activitySignReceiveRecordDone.size() >= zzjcs){ |
| | | //生成领取记录 |
| | | ActivitySignReceiveRecord activitySignReceiveRecord = new ActivitySignReceiveRecord(); |
| | | activitySignReceiveRecord.setUserId(userId); |
| | | activitySignReceiveRecord.setReceiveTime(DateUtil.date()); |
| | | activitySignReceiveRecord.setAwardId(activitySignAwardSetNormal.getId()); |
| | | activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_DONE); |
| | | activitySignReceiveRecord.setActivityId(actId); |
| | | activitySignReceiveRecord.setCompanyId(companyId); |
| | | activitySignReceiveRecord.setCreateBy(user.getVipName()); |
| | | activitySignReceiveRecord.setCreateTime(new Date()); |
| | | activitySignReceiveRecord.setUpdateBy(user.getVipName()); |
| | | activitySignReceiveRecord.setUpdateTime(new Date()); |
| | | activitySignReceiveRecordDao.insert(activitySignReceiveRecord); |
| | | |
| | | LuckyDrawSuccessVo luckyDrawSuccessVo = new LuckyDrawSuccessVo(); |
| | | luckyDrawSuccessVo.setType(1); |
| | | luckyDrawSuccessVo.setAwardName(activitySignAwardSetNormal.getAwardName()); |
| | | luckyDrawSuccessVo.setAwardImg(activitySignAwardSetNormal.getIntroduceImg()); |
| | | luckyDrawSuccessVos.add(luckyDrawSuccessVo); |
| | | |
| | | AjaxResult ajaxResult = AjaxResult.buildSuccessInstance(""); |
| | | ajaxResult.setData(luckyDrawSuccessVos); |
| | | return ajaxResult; |
| | | } |
| | | } |
| | | //总中奖率 |
| | | int zzjl = luckyDrawBasicInfoJsonVo.getZzjl(); |
| | | int randomInt = RandomUtil.randomInt(1, 100); |
| | | //不中奖的分界线 |
| | | int failureScope = 100 - zzjl; |
| | | if(failureScope >= randomInt){ |
| | | //生成领取记录 |
| | | ActivitySignReceiveRecord activitySignReceiveRecord = new ActivitySignReceiveRecord(); |
| | | activitySignReceiveRecord.setUserId(userId); |
| | | activitySignReceiveRecord.setReceiveTime(DateUtil.date()); |
| | | activitySignReceiveRecord.setAwardId(activitySignAwardSetNormal.getId()); |
| | | activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_DONE); |
| | | activitySignReceiveRecord.setActivityId(actId); |
| | | activitySignReceiveRecord.setCompanyId(companyId); |
| | | activitySignReceiveRecord.setCreateBy(user.getVipName()); |
| | | activitySignReceiveRecord.setCreateTime(new Date()); |
| | | activitySignReceiveRecord.setUpdateBy(user.getVipName()); |
| | | activitySignReceiveRecord.setUpdateTime(new Date()); |
| | | activitySignReceiveRecordDao.insert(activitySignReceiveRecord); |
| | | |
| | | LuckyDrawSuccessVo luckyDrawSuccessVo = new LuckyDrawSuccessVo(); |
| | | luckyDrawSuccessVo.setType(1); |
| | | luckyDrawSuccessVo.setAwardName(activitySignAwardSetNormal.getAwardName()); |
| | | luckyDrawSuccessVo.setAwardImg(activitySignAwardSetNormal.getIntroduceImg()); |
| | | luckyDrawSuccessVos.add(luckyDrawSuccessVo); |
| | | |
| | | AjaxResult ajaxResult = AjaxResult.buildSuccessInstance(""); |
| | | ajaxResult.setData(luckyDrawSuccessVos); |
| | | return ajaxResult; |
| | | } |
| | | //中奖 |
| | | if(failureScope < randomInt){ |
| | | //获取奖品 |
| | | ActivitySignAwardSet activitySignAwardSetCumulativeDay = updateShopActivityAndAwardSet(actId); |
| | | |
| | | if(ObjectUtil.isNotEmpty(activitySignAwardSetCumulativeDay)){ |
| | | LuckyDrawSuccessVo luckyDrawSuccessVo = new LuckyDrawSuccessVo(); |
| | | luckyDrawSuccessVo.setType(2); |
| | | luckyDrawSuccessVo.setAwardType(activitySignAwardSetCumulativeDay.getAwardType()); |
| | | luckyDrawSuccessVo.setAwardName(activitySignAwardSetCumulativeDay.getAwardName()); |
| | | luckyDrawSuccessVo.setAwardImg(activitySignAwardSetCumulativeDay.getIntroduceImg()); |
| | | luckyDrawSuccessVo.setAwardState(activitySignAwardSetCumulativeDay.getAwardState()); |
| | | //新增奖品领取记录 |
| | | ActivitySignReceiveRecord activitySignReceiveRecord = new ActivitySignReceiveRecord(); |
| | | activitySignReceiveRecord.setUserId(userId); |
| | | activitySignReceiveRecord.setReceiveTime(DateUtil.date()); |
| | | activitySignReceiveRecord.setAwardId(activitySignAwardSetCumulativeDay.getId()); |
| | | activitySignReceiveRecord.setActivityId(actId); |
| | | activitySignReceiveRecord.setCompanyId(companyId); |
| | | activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_DONE); |
| | | activitySignReceiveRecord.setCreateBy(user.getVipName()); |
| | | activitySignReceiveRecord.setCreateTime(new Date()); |
| | | activitySignReceiveRecord.setUpdateBy(user.getVipName()); |
| | | activitySignReceiveRecord.setUpdateTime(new Date()); |
| | | /** |
| | | * 奖项类型(1:自定义产品2:积分3:优惠券4:店铺商品) |
| | | * |
| | | * todo:4:店铺商品 |
| | | */ |
| | | //1:自定义产品 |
| | | if(ActivitySignAwardSet.AWARDTYPE_CUSTOMIZE == activitySignAwardSetCumulativeDay.getAwardType()) { |
| | | activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_ING); |
| | | String randomString = StringUtils.getRandomString(8); |
| | | activitySignReceiveRecord.setWriteOffCode(randomString); |
| | | |
| | | /** |
| | | * 获取对应奖品的领取方式(兑奖方式(1:线下兑换2:物流配送3:客服兑换) |
| | | */ |
| | | luckyDrawSuccessVo.setWriteOffCode(randomString); |
| | | luckyDrawSuccessVo.setAwardWay(activitySignAwardSetCumulativeDay.getAwardWay()); |
| | | //2:物流配送 |
| | | luckyDrawSuccessVo.setOperationTip(activitySignAwardSetCumulativeDay.getOperationTip()); |
| | | //1:线下兑换 |
| | | if(ActivitySignAwardSet.AWARDWAY_ONE == activitySignAwardSetCumulativeDay.getAwardWay()) { |
| | | luckyDrawSuccessVo.setIntroduceTip(activitySignAwardSetCumulativeDay.getIntroduceTip()); |
| | | luckyDrawSuccessVo.setPrizeAddress(activitySignAwardSetCumulativeDay.getPrizeAddress()); |
| | | luckyDrawSuccessVo.setPrizeStartTime(activitySignAwardSetCumulativeDay.getPrizeStartTime()); |
| | | luckyDrawSuccessVo.setPrizeEndTime(activitySignAwardSetCumulativeDay.getPrizeEndTime()); |
| | | } |
| | | //3:客服兑换 |
| | | if(ActivitySignAwardSet.AWARDWAY_THREE == activitySignAwardSetCumulativeDay.getAwardWay()) { |
| | | luckyDrawSuccessVo.setWechatImg(activitySignAwardSetCumulativeDay.getWechatImg()); |
| | | luckyDrawSuccessVo.setPrizeStartTime(activitySignAwardSetCumulativeDay.getPrizeStartTime()); |
| | | luckyDrawSuccessVo.setPrizeEndTime(activitySignAwardSetCumulativeDay.getPrizeEndTime()); |
| | | } |
| | | } |
| | | //2:积分 |
| | | if(ActivitySignAwardSet.AWARDTYPE_SCORE == activitySignAwardSetCumulativeDay.getAwardType()) { |
| | | luckyDrawSuccessVo.setScoreCnt(activitySignAwardSetCumulativeDay.getScoreCnt()); |
| | | } |
| | | //3:优惠券 |
| | | if(ActivitySignAwardSet.AWARDTYPE_COUPON == activitySignAwardSetCumulativeDay.getAwardType()) { |
| | | luckyDrawSuccessVo.setCouponName(activitySignAwardSetCumulativeDay.getCouponName()); |
| | | //获取优惠券 |
| | | int couponId = Integer.parseInt(activitySignAwardSetCumulativeDay.getCouponId()); |
| | | ShopCoupon shopCoupon = shopCouponDao.selectById(couponId); |
| | | // 如果没有找到该优惠券 |
| | | if (shopCoupon == null) { |
| | | return new AjaxResult(AjaxResult.STATUS_FAIL, "没有找到该优惠券!"); |
| | | } |
| | | // 如果优惠券有数量限制并且已经领完 |
| | | if (shopCoupon.getMaxQuantity() >= 0 && (shopCoupon.getMaxQuantity() <= shopCoupon.getQuantityReceive())) { |
| | | return new AjaxResult(AjaxResult.STATUS_FAIL, "优惠券已领完!"); |
| | | } |
| | | boolean newPeople = wxShopCouponUtil.verifyIsNewPeople(userId); |
| | | // 如果改券是新人专属且当前用户不是新人 |
| | | if (AppConstance.COUPON_GET_LIMT_NEW.equals(shopCoupon.getGetLimit()) && !newPeople) { |
| | | return new AjaxResult(AjaxResult.STATUS_FAIL, "该优惠券为新人专享优惠券!"); |
| | | } |
| | | ShopCouponRecord insertRecord = new ShopCouponRecord(); |
| | | insertRecord.setCreateBy(AppConstance.SYSTEM_USER); |
| | | insertRecord.setUpdateBy(AppConstance.SYSTEM_USER); |
| | | insertRecord.setCId(couponId); |
| | | insertRecord.setUserId(userId); |
| | | insertRecord.setIsUsing(2); |
| | | int i = shopCouponRecordDao.insert(insertRecord); |
| | | // 如果插入领取记录表失败 |
| | | if (i < 0) { |
| | | return new AjaxResult(AjaxResult.STATUS_FAIL, "优惠券领取失败!"); |
| | | } |
| | | shopCoupon.setQuantityReceive(shopCoupon.getQuantityReceive() + 1); |
| | | shopCouponDao.updateByModel(shopCoupon); |
| | | } |
| | | activitySignReceiveRecordDao.insert(activitySignReceiveRecord); |
| | | //累计奖励积分,对应用户积分加减 |
| | | if(ActivitySignAwardSet.AWARDTYPE_SCORE == activitySignAwardSetCumulativeDay.getAwardType()) { |
| | | int awardType = activitySignAwardSetCumulativeDay.getAwardType(); |
| | | if(ActivitySignAwardSet.AWARDTYPE_SCORE == awardType){ |
| | | int scoreCnt = activitySignAwardSetCumulativeDay.getScoreCnt(); |
| | | if(scoreCnt > 0){ |
| | | scoreVipDetailService.addScore(userId,null,null,scoreCnt, |
| | | activitySignReceiveRecord.getId(), ScoreVipDetail.SCORE_VIP_TYPE_JOIN_ACTIVE,"积分"); |
| | | } |
| | | } |
| | | } |
| | | //生成核销记录 |
| | | if(ActivitySignAwardSet.AWARDTYPE_CUSTOMIZE == activitySignAwardSetCumulativeDay.getAwardType()) { |
| | | ActivitySignWriteoff activitySignWriteoff = new ActivitySignWriteoff(); |
| | | //线下兑换和客服兑换 |
| | | if(ActivitySignAwardSet.AWARDWAY_ONE == activitySignAwardSetCumulativeDay.getAwardWay() |
| | | || ActivitySignAwardSet.AWARDWAY_THREE == activitySignAwardSetCumulativeDay.getAwardWay()) { |
| | | activitySignWriteoff.setWriteoffCode(activitySignReceiveRecord.getWriteOffCode()); |
| | | } |
| | | activitySignWriteoff.setActId(actId); |
| | | activitySignWriteoff.setAwardId(activitySignAwardSetCumulativeDay.getId()); |
| | | activitySignWriteoff.setWinTime(DateUtil.date()); |
| | | if(ActivitySignAwardSet.AWARDWAY_TWO == activitySignAwardSetCumulativeDay.getAwardWay()) { |
| | | activitySignWriteoff.setState(ActivitySignWriteoff.STATE_TWO); |
| | | }else { |
| | | activitySignWriteoff.setState(ActivitySignWriteoff.STATE_ONE); |
| | | } |
| | | activitySignWriteoff.setUserId(userId); |
| | | activitySignWriteoff.setCompanyId(companyId); |
| | | activitySignWriteoff.setReceiveId(activitySignReceiveRecord.getId()); |
| | | activitySignWriteoff.setCreateBy(user.getVipName()); |
| | | activitySignWriteoff.setCreateTime(new Date()); |
| | | activitySignWriteoff.setUpdateBy(user.getVipName()); |
| | | activitySignWriteoff.setUpdateTime(new Date()); |
| | | activitySignWriteoffDao.insert(activitySignWriteoff); |
| | | } |
| | | luckyDrawSuccessVos.add(luckyDrawSuccessVo); |
| | | }else{ |
| | | //生成领取记录 |
| | | ActivitySignReceiveRecord activitySignReceiveRecord = new ActivitySignReceiveRecord(); |
| | | activitySignReceiveRecord.setUserId(userId); |
| | | activitySignReceiveRecord.setReceiveTime(DateUtil.date()); |
| | | activitySignReceiveRecord.setAwardId(activitySignAwardSetNormal.getId()); |
| | | activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_DONE); |
| | | activitySignReceiveRecord.setActivityId(actId); |
| | | activitySignReceiveRecord.setCompanyId(companyId); |
| | | activitySignReceiveRecord.setCreateBy(user.getVipName()); |
| | | activitySignReceiveRecord.setCreateTime(new Date()); |
| | | activitySignReceiveRecord.setUpdateBy(user.getVipName()); |
| | | activitySignReceiveRecord.setUpdateTime(new Date()); |
| | | activitySignReceiveRecordDao.insert(activitySignReceiveRecord); |
| | | |
| | | LuckyDrawSuccessVo luckyDrawSuccessVo = new LuckyDrawSuccessVo(); |
| | | luckyDrawSuccessVo.setType(1); |
| | | luckyDrawSuccessVo.setAwardName(activitySignAwardSetNormal.getAwardName()); |
| | | luckyDrawSuccessVo.setAwardImg(activitySignAwardSetNormal.getIntroduceImg()); |
| | | luckyDrawSuccessVos.add(luckyDrawSuccessVo); |
| | | |
| | | AjaxResult ajaxResult = AjaxResult.buildSuccessInstance(""); |
| | | ajaxResult.setData(luckyDrawSuccessVos); |
| | | return ajaxResult; |
| | | } |
| | | } |
| | | AjaxResult ajaxResult = AjaxResult.buildSuccessInstance(""); |
| | | ajaxResult.setData(luckyDrawSuccessVos); |
| | | return ajaxResult; |
| | | } |
| | | |
| | | //获取奖品并索引+1 已领取+1 |
| | | public synchronized ActivitySignAwardSet updateShopActivityAndAwardSet(Long actId){ |
| | | //通过活动ID获取对应的活动 |
| | | ShopActivities shopActivities = shopActivitiesDao.selectById(actId); |
| | | String actContent = shopActivities.getActContent(); |
| | | LuckyDrawBasicInfoJsonVo luckyDrawBasicInfoJsonVo = JSON.parseObject(actContent, LuckyDrawBasicInfoJsonVo.class); |
| | | |
| | | //中奖索引 |
| | | Integer awrdLineIndex = luckyDrawBasicInfoJsonVo.getAwrdLineIndex(); |
| | | //中奖序列 |
| | | String awardLine = luckyDrawBasicInfoJsonVo.getAwardLine(); |
| | | ActivitySignAwardSet activitySignAwardSet = null; |
| | | if(awardLine.length() > 0) { |
| | | String substring = awardLine.substring(1, awardLine.length() - 1); |
| | | List<String> awardList = StrUtil.splitTrim(substring, ","); |
| | | if(awrdLineIndex < awardList.size()){ |
| | | //中奖 |
| | | Long awardId = Long.parseLong(awardList.get(awrdLineIndex + 1)); |
| | | ActivitySignAwardSet activitySignAwardSetGet = activitySignAwardSetDao.selectById(awardId); |
| | | //奖项库存数量 |
| | | int awardInventoryCnt = activitySignAwardSetGet.getAwardInventoryCnt(); |
| | | //已派发数量 |
| | | int awardDistributeCnt = activitySignAwardSetGet.getAwardDistributeCnt(); |
| | | if(awardDistributeCnt < awardInventoryCnt){ |
| | | activitySignAwardSet = activitySignAwardSetGet; |
| | | activitySignAwardSetGet.setAwardDistributeCnt(awardDistributeCnt +1); |
| | | activitySignAwardSetDao.updateById(activitySignAwardSetGet); |
| | | |
| | | //将基本信息转换成JSON字符串存储到活动主表的act_content字段 |
| | | luckyDrawBasicInfoJsonVo.setAwrdLineIndex(awrdLineIndex + 1); |
| | | String json= JSON.toJSONString(luckyDrawBasicInfoJsonVo); |
| | | shopActivities.setActContent(json); |
| | | shopActivitiesDao.updateByModel(shopActivities); |
| | | } |
| | | } |
| | | } |
| | | return activitySignAwardSet; |
| | | } |
| | | |
| | | /** |
| | | * 是否可以积分兑换 |
| | | * |
| | | * @param |
| | | * @return |
| | | */ |
| | | @ApiOperation(value = "是否可以积分兑换", notes = "") |
| | | @GetMapping(value = "scoreLuckyDraw/{actId}") |
| | | @ResponseBody |
| | | public AjaxResult logisticsInsureById(@PathVariable("actId") Long actId) { |
| | | SysVipInfo loginUser = userCacheManager.getLoginUser(); |
| | | Long userId = loginUser.getId(); |
| | | Long companyId = loginUser.getCompanyId(); |
| | | //获取用户总积分 |
| | | int scoreAll = scoreVipDetailDao.selectUserTotalScore(userId); |
| | | //获取活动的积分换取 |
| | | ShopActivities shopActivities = shopActivitiesDao.selectById(actId); |
| | | String actContent = shopActivities.getActContent(); |
| | | LuckyDrawBasicInfoJsonVo luckyDrawBasicInfoJsonVo = JSON.parseObject(actContent, LuckyDrawBasicInfoJsonVo.class); |
| | | Integer dhycjfs = luckyDrawBasicInfoJsonVo.getDhycjfs(); |
| | | if(dhycjfs == 0){ |
| | | return new AjaxResult(AjaxResult.STATUS_FAIL, "积分兑换不能兑换抽奖次数"); |
| | | } |
| | | if(scoreAll < dhycjfs){ |
| | | return new AjaxResult(AjaxResult.STATUS_FAIL, "积分不足"); |
| | | } |
| | | //获取今日抽奖总次数 |
| | | List<ActivitySignRecord> activityRecords = activitySignRecordDao.selectListByActIdAndUserIdLikesignTime(actId,userId, DateUtil.date()); |
| | | if(CollUtil.isNotEmpty(activityRecords)){ |
| | | Integer wmkcjjh = luckyDrawBasicInfoJsonVo.getWmkcjjh(); |
| | | Integer jfdhcs = luckyDrawBasicInfoJsonVo.getJfdhcs(); |
| | | if(activityRecords.size() >= (wmkcjjh+jfdhcs)){ |
| | | return AjaxResult.buildFailInstance("明天再来抽奖吧"); |
| | | } |
| | | } |
| | | //换取次数,减去积分 |
| | | scoreVipDetailService.deductionScore(userId,null,null,dhycjfs, |
| | | null, ScoreVipDetail.SCORE_VIP_TYPE_JOIN_ACTIVE,"兑换抽奖机会"); |
| | | return new AjaxResult(AjaxResult.STATUS_SUCCESS, "兑换成功!"); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |