package com.matrix.system.activity.service;
|
|
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.matrix.core.constance.MatrixConstance;
|
import com.matrix.core.pojo.AjaxResult;
|
import com.matrix.core.tools.WebUtil;
|
import com.matrix.system.activity.dao.ActivitySignAwardSetDao;
|
import com.matrix.system.activity.dao.ActivitySignReceiveRecordDao;
|
import com.matrix.system.activity.dao.ActivitySignWriteoffDao;
|
import com.matrix.system.activity.dto.LogisticsSubmitDto;
|
import com.matrix.system.activity.dto.SignWriteoffDto;
|
import com.matrix.system.activity.dto.SignWriteoffListDto;
|
import com.matrix.system.activity.dto.WriteoffCodeSubmitDto;
|
import com.matrix.system.activity.entity.ActivitySignAwardSet;
|
import com.matrix.system.activity.entity.ActivitySignReceiveRecord;
|
import com.matrix.system.activity.entity.ActivitySignWriteoff;
|
import com.matrix.system.activity.vo.LogisticsVo;
|
import com.matrix.system.activity.vo.SignWriteoffListVo;
|
import com.matrix.system.activity.vo.SignWriteoffVo;
|
import com.matrix.system.activity.vo.ZjrVo;
|
import com.matrix.system.common.bean.SysUsers;
|
import com.matrix.system.common.bean.SystemDictionary;
|
import com.matrix.system.common.constance.AppConstance;
|
import com.matrix.system.common.dao.SystemDictionaryDao;
|
import com.matrix.system.hive.action.util.QueryUtil;
|
import com.matrix.system.hive.dao.SysVipInfoDao;
|
import com.matrix.system.shopXcx.api.service.WxShopLogisticsQueryService;
|
import com.matrix.system.shopXcx.bean.ShopActivities;
|
import com.matrix.system.shopXcx.bean.ShopDeliveryInfo;
|
import com.matrix.system.shopXcx.bean.ShopLogisticsInfo;
|
import com.matrix.system.shopXcx.dao.ShopActivitiesDao;
|
import com.matrix.system.shopXcx.dao.ShopDeliveryInfoDao;
|
import com.matrix.system.shopXcx.dao.ShopLogisticsInfoDao;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* @description 核销记录
|
* @author yourName
|
* @date 2021-04-08 14:25
|
*/
|
@Service
|
public class ActivitySignWriteoffService extends ServiceImpl<ActivitySignWriteoffDao, ActivitySignWriteoff>{
|
|
@Autowired
|
ActivitySignWriteoffDao activitySignWriteoffDao;
|
@Autowired
|
ShopActivitiesDao shopActivitiesDao;
|
@Autowired
|
ActivitySignAwardSetDao activitySignAwardSetDao;
|
@Autowired
|
ActivitySignReceiveRecordDao activitySignReceiveRecordDao;
|
@Autowired
|
SysVipInfoDao sysVipInfoDao;
|
@Autowired
|
SystemDictionaryDao systemDictionaryDao;
|
@Autowired
|
ShopDeliveryInfoDao shopDeliveryInfoDao;
|
@Autowired
|
ShopLogisticsInfoDao shopLogisticsInfoDao;
|
@Autowired
|
private WxShopLogisticsQueryService wxShopLogisticsQueryService;
|
|
public IPage<SignWriteoffListVo> findSignWriteoffList(Page<SignWriteoffListVo> page,
|
SignWriteoffListDto signWriteoffListDto) {
|
return activitySignWriteoffDao.findSignWriteoffList(page,signWriteoffListDto);
|
}
|
|
public AjaxResult findSignWriteoff(SignWriteoffDto signWriteoffDto) {
|
//设置用户公司ID
|
QueryUtil.setQueryLimitCom(signWriteoffDto);
|
Long writeoffId = signWriteoffDto.getWriteoffId();
|
AjaxResult result= AjaxResult.buildSuccessInstance("成功");
|
//获取核销信息
|
SignWriteoffVo signWriteoffVo = new SignWriteoffVo();
|
ActivitySignWriteoff activitySignWriteoff = activitySignWriteoffDao.selectById(writeoffId);
|
if(ObjectUtil.isNotEmpty(activitySignWriteoff)) {
|
//获取奖品信息
|
ActivitySignAwardSet activitySignAwardSet = activitySignAwardSetDao.selectById(activitySignWriteoff.getAwardId());
|
signWriteoffVo.setJpmc(activitySignAwardSet.getAwardName());
|
signWriteoffVo.setJptp(activitySignAwardSet.getIntroduceImg());
|
signWriteoffVo.setSl(1);
|
signWriteoffVo.setDjfs(activitySignAwardSet.getAwardWay());
|
//获取中奖人信息
|
ZjrVo zjrVo = activitySignWriteoffDao.selectUsernameByUserId(activitySignWriteoff.getUserId(),activitySignAwardSet.getId());
|
signWriteoffVo.setZjr(zjrVo.getZjr());
|
signWriteoffVo.setZjsj(zjrVo.getZjsj());
|
signWriteoffVo.setDjsj(activitySignWriteoff.getWriteoffTime());
|
signWriteoffVo.setState(activitySignWriteoff.getState());
|
//获取活动主表信息
|
ShopActivities shopActivities = shopActivitiesDao.selectById(activitySignWriteoff.getActId());
|
signWriteoffVo.setHdmc(shopActivities.getActName());
|
signWriteoffVo.setHdbh(shopActivities.getActCode());
|
//获取收货地址信息
|
int awardWay = activitySignAwardSet.getAwardWay();
|
if(ActivitySignAwardSet.AWARDWAY_TWO == awardWay) {
|
ActivitySignWriteoff activitySignWriteoffLogistics = activitySignWriteoffDao.selectById(writeoffId);
|
Long receiveId = activitySignWriteoffLogistics.getReceiveId();
|
ActivitySignReceiveRecord activitySignReceiveRecordLogistic = activitySignReceiveRecordDao.selectById(receiveId);
|
signWriteoffVo.setConsignee(activitySignReceiveRecordLogistic.getConsignee());
|
signWriteoffVo.setConsigneePhone(activitySignReceiveRecordLogistic.getConsigneePhone());
|
signWriteoffVo.setConsigneeAddress(activitySignReceiveRecordLogistic.getConsigneeAddress());
|
|
//物流跟踪
|
Integer logisticsId = activitySignWriteoffLogistics.getLogisticsId();
|
ShopDeliveryInfo shopDeliveryInfo = shopDeliveryInfoDao.selectById(logisticsId);
|
if(ObjectUtil.isNotEmpty(shopDeliveryInfo)){
|
signWriteoffVo.setLogisticsNum(shopDeliveryInfo.getWaybillNo());
|
signWriteoffVo.setLogisticsCompany(shopDeliveryInfo.getLogisticsCompany());
|
//查看物流信息
|
wxShopLogisticsQueryService.selectLogisticsInfo(shopDeliveryInfo);
|
List<ShopLogisticsInfo> shopLogisticsInfos = shopLogisticsInfoDao.selectByDelieryId(shopDeliveryInfo.getId());
|
if(CollUtil.isNotEmpty(shopLogisticsInfos)) {
|
ArrayList<LogisticsVo> logisticsVos = new ArrayList<>();
|
for(ShopLogisticsInfo shopLogistics : shopLogisticsInfos) {
|
LogisticsVo logisticsVo = new LogisticsVo();
|
logisticsVo.setContent(shopLogistics.getDescribe());
|
logisticsVo.setTimestamp(shopLogistics.getLogisticsTime());
|
logisticsVos.add(logisticsVo);
|
}
|
signWriteoffVo.setActivities(logisticsVos);
|
}
|
}
|
}
|
}
|
result.putInMap("signWriteoffVo", signWriteoffVo);
|
return result;
|
}
|
|
@Transactional
|
public AjaxResult writeoffCodeSubmit(WriteoffCodeSubmitDto writeoffCodeSubmitDto) {
|
//设置用户公司ID
|
QueryUtil.setQueryLimitCom(writeoffCodeSubmitDto);
|
SysUsers sysUsers = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
|
Long writeoffId = writeoffCodeSubmitDto.getWriteoffId();
|
String writeOffCode = writeoffCodeSubmitDto.getWriteOffCode();
|
/**
|
* 验证核销码是不是匹配
|
* 只能核销一次
|
* 更新核销记录
|
* 更新领取记录
|
*/
|
//验证核销码是不是匹配
|
ActivitySignWriteoff activitySignWriteoff = activitySignWriteoffDao.selectById(writeoffId);
|
if(ActivitySignWriteoff.STATE_ONE != activitySignWriteoff.getState()){
|
return new AjaxResult(AjaxResult.STATUS_FAIL, "兑奖码已失效");
|
}
|
if(ObjectUtil.isNotEmpty(activitySignWriteoff)) {
|
String writeoffCodeReal = activitySignWriteoff.getWriteoffCode();
|
if(!writeoffCodeReal.equals(writeOffCode)) {
|
return new AjaxResult(AjaxResult.STATUS_FAIL, "兑奖码无效");
|
}
|
}
|
//线下兑换失效
|
Long awardId = activitySignWriteoff.getAwardId();
|
ActivitySignAwardSet activitySignAwardSet = activitySignAwardSetDao.selectById(awardId);
|
if(ActivitySignAwardSet.AWARDWAY_ONE == activitySignAwardSet.getAwardWay()
|
|| ActivitySignAwardSet.AWARDWAY_THREE == activitySignAwardSet.getAwardWay()){
|
Date prizeStartTime = activitySignAwardSet.getPrizeStartTime();
|
if(DateUtil.date().getTime() < prizeStartTime.getTime()){
|
return new AjaxResult(AjaxResult.STATUS_FAIL, "兑奖还没开始呢!");
|
}
|
Date prizeEndTime = activitySignAwardSet.getPrizeEndTime();
|
if(DateUtil.date().getTime() > prizeEndTime.getTime()){
|
Long receiveId = activitySignWriteoff.getReceiveId();
|
ActivitySignReceiveRecord activitySignReceiveRecord = activitySignReceiveRecordDao.selectById(receiveId);
|
if(ObjectUtil.isNotEmpty(activitySignReceiveRecord)){
|
activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_FIVE);
|
}
|
activitySignReceiveRecordDao.updateById(activitySignReceiveRecord);
|
|
activitySignWriteoff.setState(ActivitySignWriteoff.STATE_FOUR);
|
activitySignWriteoffDao.updateById(activitySignWriteoff);
|
return new AjaxResult(AjaxResult.STATUS_FAIL, "已超出兑奖结束时间!");
|
}
|
}
|
//更新核销记录
|
activitySignWriteoff.setState(ActivitySignWriteoff.STATE_THREE);
|
activitySignWriteoff.setWriteoffTime(new Date());
|
activitySignWriteoff.setWriteoffUser(sysUsers.getSuName());
|
activitySignWriteoff.setWriteoffUserid(sysUsers.getSuId());
|
activitySignWriteoffDao.updateById(activitySignWriteoff);
|
//更新领取记录
|
ActivitySignReceiveRecord activitySignReceiveRecord = activitySignReceiveRecordDao.selectById(activitySignWriteoff.getReceiveId());
|
activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_DONE);
|
activitySignReceiveRecordDao.updateById(activitySignReceiveRecord);
|
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, "核销成功");
|
}
|
|
@Transactional
|
public AjaxResult logisticsSubmit(LogisticsSubmitDto logisticsSubmitDto) {
|
//设置用户公司ID
|
QueryUtil.setQueryLimitCom(logisticsSubmitDto);
|
SysUsers sysUsers = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
|
Long writeoffId = logisticsSubmitDto.getWriteoffId();
|
/**
|
* 更新领取记录表的收货信息和状态
|
* 更新核销记录表的状态和物流ID
|
*/
|
ActivitySignWriteoff activitySignWriteoff = activitySignWriteoffDao.selectById(writeoffId);
|
//新增一条物流信息
|
ShopDeliveryInfo shopDeliveryInfo = new ShopDeliveryInfo();
|
Long receiveId = activitySignWriteoff.getReceiveId();
|
SystemDictionary systemDictionary = systemDictionaryDao.selectByCode(logisticsSubmitDto.getKdgs());
|
if (ObjectUtil.isEmpty(systemDictionary)) {
|
return new AjaxResult(AjaxResult.STATUS_FAIL, "没有找到物流公司信息!");
|
}
|
shopDeliveryInfo.setUserId(activitySignWriteoff.getUserId());
|
shopDeliveryInfo.setReceiveId(receiveId);
|
shopDeliveryInfo.setReceiveAddress(logisticsSubmitDto.getShdz());
|
|
shopDeliveryInfo.setLogisticsCompany(systemDictionary.getName());
|
shopDeliveryInfo.setLogisticsCompanyCode(systemDictionary.getCode());
|
shopDeliveryInfo.setDeliveryWay("物流配送");
|
shopDeliveryInfo.setLogisticsStatus(AppConstance.LOGISTICS_STATUS_OF_RECEIVE);
|
|
shopDeliveryInfo.setWaybillNo(logisticsSubmitDto.getKddh());
|
shopDeliveryInfo.setUpdateBy(sysUsers.getSuName());
|
shopDeliveryInfo.setCreateBy(sysUsers.getSuName());
|
|
shopDeliveryInfo.setDeliveryTime(new Date());
|
shopDeliveryInfoDao.insert(shopDeliveryInfo);
|
//更新核销记录
|
activitySignWriteoff.setState(ActivitySignWriteoff.STATE_THREE);
|
activitySignWriteoff.setWriteoffTime(new Date());
|
activitySignWriteoff.setWriteoffUser(sysUsers.getSuName());
|
activitySignWriteoff.setWriteoffUserid(sysUsers.getSuId());
|
activitySignWriteoff.setLogisticsId(shopDeliveryInfo.getId());
|
activitySignWriteoffDao.updateById(activitySignWriteoff);
|
//更新领取记录
|
ActivitySignReceiveRecord activitySignReceiveRecord = activitySignReceiveRecordDao.selectById(receiveId);
|
activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_FOUR);
|
activitySignReceiveRecord.setConsignee(logisticsSubmitDto.getShr());
|
activitySignReceiveRecord.setConsigneeAddress(logisticsSubmitDto.getShdz());
|
activitySignReceiveRecord.setConsigneePhone(logisticsSubmitDto.getLxdh());
|
activitySignReceiveRecordDao.updateById(activitySignReceiveRecord);
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, "发货成功");
|
}
|
|
|
|
|
|
}
|