935090232@qq.com
2022-02-20 c253b555c7905c5136d47cd615ef545fa50cc6ad
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopActivitiesLuckydrawAction.java
New file
@@ -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, "兑换成功!");
    }
}