From 4eac422e52a4d28fb651b75d0f054697c7a2c0fa Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期一, 09 二月 2026 15:14:13 +0800
Subject: [PATCH] 优化

---
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/InviteRecordServiceImpl.java |  265 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 265 insertions(+), 0 deletions(-)

diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/InviteRecordServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/InviteRecordServiceImpl.java
new file mode 100644
index 0000000..83a47a4
--- /dev/null
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/InviteRecordServiceImpl.java
@@ -0,0 +1,265 @@
+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);
+    }
+
+
+
+
+}

--
Gitblit v1.9.3