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