From c253b555c7905c5136d47cd615ef545fa50cc6ad Mon Sep 17 00:00:00 2001
From: 935090232@qq.com <ak473600000>
Date: Sun, 20 Feb 2022 21:24:16 +0800
Subject: [PATCH] Merge branch 'api_score_meger'
---
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopActivitiesLuckydrawAction.java | 542 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 542 insertions(+), 0 deletions(-)
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopActivitiesLuckydrawAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopActivitiesLuckydrawAction.java
new file mode 100644
index 0000000..6cc7a00
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopActivitiesLuckydrawAction.java
@@ -0,0 +1,542 @@
+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, "兑换成功!");
+ }
+
+
+
+
+
+}
+
--
Gitblit v1.9.1