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;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|