| ¶Ô±ÈÐÂÎļþ |
| | |
| | | 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 io.swagger.models.auth.In; |
| | | 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()); |
| | | } |
| | | 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()); |
| | | MPJLambdaWrapper<InviteRecord> queryWrapper = new MPJLambdaWrapper<>(); |
| | | Utils.MP.blankToNull(pageWrap.getModel()); |
| | | queryWrapper.selectAll(InviteRecord.class ) |
| | | .select("t1.name",InviteRecord::getRecName) |
| | | .select("t1.nickname",InviteRecord::getRecNickname) |
| | | .select("t1.phone",InviteRecord::getRecPhone) |
| | | .select("t2.name",InviteRecord::getMemberName) |
| | | .select("t2.nickname",InviteRecord::getMemberNickname) |
| | | .select("t2.open_id",InviteRecord::getOpenid) |
| | | .select("t2.phone",InviteRecord::getMemberPhone) |
| | | .leftJoin(Member.class,Member::getId,InviteRecord::getInviteId) |
| | | .leftJoin(Member.class,Member::getId,InviteRecord::getMemberId) ; |
| | | pageWrap.getModel().setIsdeleted(Constants.ZERO); |
| | | queryWrapper.eq(pageWrap.getModel().getId() != null,InviteRecord::getId, pageWrap.getModel().getId()); |
| | | queryWrapper.eq(pageWrap.getModel().getCreator() != null,InviteRecord::getCreator, pageWrap.getModel().getCreator()); |
| | | if (pageWrap.getModel().getId() != null) { |
| | | queryWrapper.ge(InviteRecord::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())); |
| | | queryWrapper.le(InviteRecord::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())); |
| | | } |
| | | queryWrapper.eq(pageWrap.getModel().getEditor() != null,InviteRecord::getEditor, pageWrap.getModel().getEditor()); |
| | | if (pageWrap.getModel().getId() != null) { |
| | | queryWrapper.ge(InviteRecord::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())); |
| | | queryWrapper.le(InviteRecord::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())); |
| | | } |
| | | queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getRecName()),w->{ |
| | | w.like("t1.name",pageWrap.getModel().getRecName()).or() |
| | | .like("t1.phone",pageWrap.getModel().getRecName()).or() |
| | | .like("t1.nickname",pageWrap.getModel().getRecName()); |
| | | }); |
| | | queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getMemberName()),w->{ |
| | | w.like("t2.name",pageWrap.getModel().getMemberName()).or() |
| | | .like("t2.phone",pageWrap.getModel().getMemberName()).or() |
| | | .like("t2.nickname",pageWrap.getModel().getMemberName()); |
| | | }); |
| | | queryWrapper.eq(pageWrap.getModel().getIsdeleted() != null,InviteRecord::getIsdeleted, pageWrap.getModel().getIsdeleted()); |
| | | queryWrapper.eq(pageWrap.getModel().getRemark() != null,InviteRecord::getRemark, pageWrap.getModel().getRemark()); |
| | | queryWrapper.eq(pageWrap.getModel().getInviteId() != null,InviteRecord::getInviteId, pageWrap.getModel().getInviteId()); |
| | | queryWrapper.eq(pageWrap.getModel().getMemberId() != null,InviteRecord::getMemberId, pageWrap.getModel().getMemberId()); |
| | | queryWrapper.eq(pageWrap.getModel().getPhone() != null,InviteRecord::getPhone, pageWrap.getModel().getPhone()); |
| | | queryWrapper.eq(pageWrap.getModel().getFirstOrderStatus() != null,InviteRecord::getFirstOrderStatus, pageWrap.getModel().getFirstOrderStatus()); |
| | | if (pageWrap.getModel().getId() != null) { |
| | | queryWrapper.ge(InviteRecord::getFirstFinishDate, Utils.Date.getStart(pageWrap.getModel().getFirstFinishDate())); |
| | | queryWrapper.le(InviteRecord::getFirstFinishDate, Utils.Date.getEnd(pageWrap.getModel().getFirstFinishDate())); |
| | | } |
| | | queryWrapper.eq(pageWrap.getModel().getRewardIntegral() != null,InviteRecord::getRewardIntegral, pageWrap.getModel().getRewardIntegral()); |
| | | |
| | | queryWrapper.orderByDesc(InviteRecord::getCreateDate); |
| | | IPage<InviteRecord> result =inviteRecordMapper.selectPage(page, queryWrapper); |
| | | if(result!=null && result.getRecords()!=null){ |
| | | for(InviteRecord model : result.getRecords()){ |
| | | model.setMemberName(StringUtils.defaultString(model.getMemberNickname(),"")+" / " |
| | | +StringUtils.defaultString(model.getMemberName(),"-")+" / " |
| | | +StringUtils.defaultString(model.getMemberPhone(),"-")); |
| | | model.setRecName(StringUtils.defaultString(model.getRecNickname(),"")+" / " |
| | | +StringUtils.defaultString(model.getRecName(),"-")+" / " |
| | | +StringUtils.defaultString(model.getRecPhone(),"-")); |
| | | } |
| | | } |
| | | return PageData.from(result); |
| | | } |
| | | |
| | | @Override |
| | | public long count(InviteRecord inviteRecord) { |
| | | QueryWrapper<InviteRecord> wrapper = new QueryWrapper<>(inviteRecord); |
| | | return inviteRecordMapper.selectCount(wrapper); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } |