package com.doumee.service.business.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.doumee.biz.system.SystemDictDataBiz;
|
import com.doumee.core.constants.ResponseStatus;
|
import com.doumee.core.exception.BusinessException;
|
import com.doumee.core.model.LoginUserInfo;
|
import com.doumee.core.model.PageData;
|
import com.doumee.core.model.PageWrap;
|
import com.doumee.core.utils.Constants;
|
import com.doumee.core.utils.DateUtil;
|
import com.doumee.core.utils.GeneratePicUtil;
|
import com.doumee.core.utils.Utils;
|
import com.doumee.core.utils.aliyun.ALiYunUtil;
|
import com.doumee.core.wx.WxMiniConfig;
|
import com.doumee.dao.business.IntegralMapper;
|
import com.doumee.dao.business.InviteRecordMapper;
|
import com.doumee.dao.business.MemberMapper;
|
import com.doumee.dao.business.ShopMapper;
|
import com.doumee.dao.business.join.IntegralJoinMapper;
|
import com.doumee.dao.business.model.Integral;
|
import com.doumee.dao.business.model.InviteRecord;
|
import com.doumee.dao.business.model.Member;
|
import com.doumee.dao.business.model.Shop;
|
import com.doumee.dao.web.dto.IntegralDTO;
|
import com.doumee.dao.web.dto.IntegralRecordDTO;
|
import com.doumee.dao.web.request.DealIntegralRequest;
|
import com.doumee.dao.web.response.IntegralDataResponse;
|
import com.doumee.dao.web.response.InviteInfoResponse;
|
import com.doumee.service.business.IntegralService;
|
import com.doumee.service.business.InviteRecordService;
|
import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
import org.apache.commons.lang3.StringUtils;
|
import org.apache.http.util.TextUtils;
|
import org.apache.shiro.SecurityUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.awt.image.BufferedImage;
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.math.BigDecimal;
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
/**
|
* 用户邀请记录
|
* @author 江蹄蹄
|
* @date 2026年1月20日09:32:12
|
*/
|
@Service
|
public class InviteRecordServiceImpl implements InviteRecordService {
|
|
@Autowired
|
private InviteRecordMapper inviteRecordMapper;
|
|
@Autowired
|
private SystemDictDataBiz systemDictDataBiz;
|
|
@Override
|
public InviteInfoResponse getInviteInfo(Integer memberId){
|
InviteInfoResponse inviteInfoResponse = new InviteInfoResponse();
|
inviteInfoResponse.setInviteNum(Constants.ZERO);
|
inviteInfoResponse.setNum(0l);
|
inviteInfoResponse.setInviteRule(systemDictDataBiz.queryByCode(Constants.ORDER_SET,Constants.INVITE_RULE).getCode());
|
|
List<InviteRecord> inviteRecordList = inviteRecordMapper.selectJoinList(InviteRecord.class,
|
new MPJLambdaWrapper<InviteRecord>()
|
.selectAll(InviteRecord.class)
|
.selectAs(Member::getNickname,InviteRecord::getMemberName)
|
.selectAs(Member::getImgurl,InviteRecord::getImgUrl)
|
.leftJoin(Member.class,Member::getId,InviteRecord::getMemberId)
|
.eq(InviteRecord::getIsdeleted,Constants.ZERO)
|
.eq(InviteRecord::getMemberId,memberId)
|
.orderByDesc(InviteRecord::getId)
|
);
|
|
if (CollectionUtils.isNotEmpty(inviteRecordList)) {
|
inviteInfoResponse.setInviteRecordList(inviteRecordList);
|
inviteInfoResponse.setInviteNum(inviteRecordList.size());
|
BigDecimal num = BigDecimal.ZERO;
|
String path = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
|
systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode();
|
for (InviteRecord inviteRecord:inviteRecordList) {
|
if(StringUtils.isNotBlank(inviteRecord.getImgUrl())){
|
inviteRecord.setImgUrl(path + inviteRecord.getImgUrl());
|
}
|
num = num.add(inviteRecord.getRewardIntegral()).add(inviteRecord.getFirstRewardIntegral());
|
}
|
inviteInfoResponse.setNum(num.longValue());
|
}
|
|
return inviteInfoResponse;
|
}
|
|
|
@Override
|
public String createShareImg(Integer memberId) throws Exception {
|
String imgUrl = systemDictDataBiz.queryByCode(Constants.ORDER_SET,Constants.INVITE_IMG_URL).getCode();
|
BufferedImage img1 = GeneratePicUtil.transfromToImage(imgUrl,imgUrl.substring(imgUrl.lastIndexOf(".") + 1));
|
if (img1 == null) {
|
return imgUrl;
|
}
|
String url = null;
|
String scene = "m_" + memberId;
|
//内容分享海报图片
|
InputStream mpCode = Constants.generateWxMiniImgStream(
|
scene,
|
"",
|
false);//小程序
|
InputStream inputStream = GeneratePicUtil.generateShareWithUserImg(
|
img1
|
, mpCode);
|
ALiYunUtil obs = new ALiYunUtil(
|
systemDictDataBiz.queryByCode(Constants.OSS,Constants.ENDPOINT).getCode()
|
,systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_ID).getCode(), systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_KEY).getCode());
|
String shareFolder = systemDictDataBiz.queryByCode(Constants.RESOURCE_PATH, Constants.SHARES_FILE).getCode();
|
String key = DateUtil.getNowShortDate() + "/" + UUID.randomUUID().toString() + ".jpg";
|
String fileName = shareFolder + key;
|
if (obs.uploadOnlineObject(inputStream,systemDictDataBiz.queryByCode(Constants.OSS, Constants.BUCKETNAME).getCode(), key,null)) {
|
url = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode() + fileName;
|
}
|
return url;
|
|
|
}
|
|
@Override
|
public Integer create(InviteRecord inviteRecord) {
|
inviteRecordMapper.insert(inviteRecord);
|
return inviteRecord.getId();
|
}
|
|
@Override
|
public void deleteById(Integer id) {
|
inviteRecordMapper.deleteById(id);
|
}
|
|
@Override
|
public void delete(InviteRecord inviteRecord) {
|
UpdateWrapper<InviteRecord> deleteWrapper = new UpdateWrapper<>(inviteRecord);
|
inviteRecordMapper.delete(deleteWrapper);
|
}
|
|
@Override
|
public void deleteByIdInBatch(List<Integer> ids) {
|
if (CollectionUtils.isEmpty(ids)) {
|
return;
|
}
|
inviteRecordMapper.deleteBatchIds(ids);
|
}
|
|
@Override
|
public void updateById(InviteRecord inviteRecord) {
|
inviteRecordMapper.updateById(inviteRecord);
|
}
|
|
@Override
|
public void updateByIdInBatch(List<InviteRecord> inviteRecords) {
|
if (CollectionUtils.isEmpty(inviteRecords)) {
|
return;
|
}
|
for (InviteRecord inviteRecord: inviteRecords) {
|
this.updateById(inviteRecord);
|
}
|
}
|
|
@Override
|
public InviteRecord findById(Integer id) {
|
return inviteRecordMapper.selectById(id);
|
}
|
|
@Override
|
public InviteRecord findOne(InviteRecord inviteRecord) {
|
QueryWrapper<InviteRecord> wrapper = new QueryWrapper<>(inviteRecord).last("limit 1");
|
return inviteRecordMapper.selectOne(wrapper);
|
}
|
|
@Override
|
public List<InviteRecord> findList(InviteRecord inviteRecord) {
|
QueryWrapper<InviteRecord> wrapper = new QueryWrapper<>(inviteRecord);
|
return inviteRecordMapper.selectList(wrapper);
|
}
|
|
@Override
|
public PageData<InviteRecord> findPage(PageWrap<InviteRecord> pageWrap) {
|
IPage<InviteRecord> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
|
QueryWrapper<InviteRecord> queryWrapper = new QueryWrapper<>();
|
Utils.MP.blankToNull(pageWrap.getModel());
|
queryWrapper.lambda().eq(pageWrap.getModel().getId() != null,InviteRecord::getId, pageWrap.getModel().getId());
|
queryWrapper.lambda().eq(pageWrap.getModel().getCreator() != null,InviteRecord::getCreator, pageWrap.getModel().getCreator());
|
if (pageWrap.getModel().getId() != null) {
|
queryWrapper.lambda().ge(InviteRecord::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
|
queryWrapper.lambda().le(InviteRecord::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
|
}
|
queryWrapper.lambda().eq(pageWrap.getModel().getEditor() != null,InviteRecord::getEditor, pageWrap.getModel().getEditor());
|
if (pageWrap.getModel().getId() != null) {
|
queryWrapper.lambda().ge(InviteRecord::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
|
queryWrapper.lambda().le(InviteRecord::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
|
}
|
queryWrapper.lambda().eq(pageWrap.getModel().getIsdeleted() != null,InviteRecord::getIsdeleted, pageWrap.getModel().getIsdeleted());
|
queryWrapper.lambda().eq(pageWrap.getModel().getRemark() != null,InviteRecord::getRemark, pageWrap.getModel().getRemark());
|
queryWrapper.lambda().eq(pageWrap.getModel().getInviteId() != null,InviteRecord::getInviteId, pageWrap.getModel().getInviteId());
|
queryWrapper.lambda().eq(pageWrap.getModel().getMemberId() != null,InviteRecord::getMemberId, pageWrap.getModel().getMemberId());
|
queryWrapper.lambda().eq(pageWrap.getModel().getPhone() != null,InviteRecord::getPhone, pageWrap.getModel().getPhone());
|
queryWrapper.lambda().eq(pageWrap.getModel().getFirstOrderStatus() != null,InviteRecord::getFirstOrderStatus, pageWrap.getModel().getFirstOrderStatus());
|
if (pageWrap.getModel().getId() != null) {
|
queryWrapper.lambda().ge(InviteRecord::getFirstFinishDate, Utils.Date.getStart(pageWrap.getModel().getFirstFinishDate()));
|
queryWrapper.lambda().le(InviteRecord::getFirstFinishDate, Utils.Date.getEnd(pageWrap.getModel().getFirstFinishDate()));
|
}
|
queryWrapper.lambda().eq(pageWrap.getModel().getRewardIntegral() != null,InviteRecord::getRewardIntegral, pageWrap.getModel().getRewardIntegral());
|
for(PageWrap.SortData sortData: pageWrap.getSorts()) {
|
if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
|
queryWrapper.orderByDesc(sortData.getProperty());
|
} else {
|
queryWrapper.orderByAsc(sortData.getProperty());
|
}
|
}
|
return PageData.from(inviteRecordMapper.selectPage(page, queryWrapper));
|
}
|
|
@Override
|
public long count(InviteRecord inviteRecord) {
|
QueryWrapper<InviteRecord> wrapper = new QueryWrapper<>(inviteRecord);
|
return inviteRecordMapper.selectCount(wrapper);
|
}
|
|
|
|
|
|
|
|
}
|