package com.doumee.service.business.impl; import com.doumee.biz.system.SystemDictDataBiz; 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.Utils; import com.doumee.dao.business.MultifileMapper; import com.doumee.dao.business.OrderCommentJoinMapper; import com.doumee.dao.business.OrderCommentMapper; import com.doumee.dao.business.model.*; import com.doumee.dao.web.response.OrderCommentResponse; import com.doumee.service.business.OrderCommentService; 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.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.Date; import java.util.List; /** * 订单评价管理信息表Service实现 * @author 江蹄蹄 * @date 2023/03/21 15:48 */ @Service public class OrderCommentServiceImpl implements OrderCommentService { @Autowired private OrderCommentMapper orderCommentMapper; @Autowired private OrderCommentJoinMapper orderCommentJoinMapper; @Autowired private SystemDictDataBiz systemDictDataBiz; @Autowired private MultifileMapper multifileMapper; @Override public Integer create(OrderComment orderComment) { orderCommentMapper.insert(orderComment); return orderComment.getId(); } @Override public void deleteById(Integer id) { orderCommentMapper.deleteById(id); } @Override public void delete(OrderComment orderComment) { UpdateWrapper deleteWrapper = new UpdateWrapper<>(orderComment); orderCommentMapper.delete(deleteWrapper); } @Override public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } orderCommentMapper.deleteBatchIds(ids); } @Override public void updateById(OrderComment orderComment) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); orderComment.setEditor(user.getId()); orderComment.setEditDate(new Date()); orderCommentMapper.updateById(orderComment); } @Override public void updateByIdInBatch(List orderComments) { if (CollectionUtils.isEmpty(orderComments)) { return; } for (OrderComment orderComment: orderComments) { this.updateById(orderComment); } } @Override public OrderComment findById(Integer id) { return orderCommentMapper.selectById(id); } @Override public OrderComment findOne(OrderComment orderComment) { QueryWrapper wrapper = new QueryWrapper<>(orderComment); return orderCommentMapper.selectOne(wrapper); } @Override public List findList(OrderComment orderComment) { QueryWrapper wrapper = new QueryWrapper<>(orderComment); return orderCommentMapper.selectList(wrapper); } @Override public PageData findPage(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); queryWrapper.selectAll(OrderComment.class); queryWrapper.selectAs(Member::getNickname,OrderComment::getNikeName); queryWrapper.selectAs(Goods::getName,OrderComment::getGoodsName); queryWrapper.leftJoin(Member.class,Member::getId,OrderComment::getMemberId); queryWrapper.leftJoin(Goods.class,Goods::getId,OrderComment::getGoodsId); queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getNikeName()),Member::getNickname,pageWrap.getModel().getNikeName()); queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getContent()),OrderComment::getContent,pageWrap.getModel().getContent()); queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getGoodsName()),Goods::getName,pageWrap.getModel().getGoodsName()); queryWrapper.orderByDesc(OrderComment::getCreateDate); IPage result = orderCommentJoinMapper.selectJoinPage(page, OrderComment.class, queryWrapper); String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.ACTIVITY_FILE).getCode(); for (OrderComment model : result.getRecords()) { Multifile queryfile = new Multifile(); queryfile.setObjId(model.getId()); queryfile.setObjType(Constants.MultiFile.SHOP_APPRAISE.getKey()); List filelist = multifileMapper.selectList(new QueryWrapper<>(queryfile) .orderByAsc("SORTNUM") ); filelist.stream().forEach(s->{ if(StringUtils.isNotBlank(s.getFileurl())){ s.setFileFullUrl(path+s.getFileurl()); } }); model.setFileList(filelist); } return PageData.from(result); } @Override public long count(OrderComment orderComment) { QueryWrapper wrapper = new QueryWrapper<>(orderComment); return orderCommentMapper.selectCount(wrapper); } /****************************************移动端接口开始********************************************************************/ /** * 订单评价 分页列表 * @param pages * @param goodsId * @return */ @Override public IPage pageList(IPage pages, Integer goodsId) { QueryWrapper query = new QueryWrapper(); query.eq("o.GOODS_ID",goodsId); query.eq("o.STATUS",Constants.ZERO); query.eq("o.ISDELETED",Constants.ZERO); query.orderByDesc("o.STATUS_DATE"); IPage page = orderCommentMapper.queryPage(pages,query); //TODO 文件前缀 与 头像前缀 String imgPath = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.ACTIVITY_FILE).getCode(); page.getRecords().forEach(i->{ List fileList = multifileMapper.selectList(new QueryWrapper() .eq("OBJ_ID",i.getId()) .eq("OBJ_TYPE",Constants.MultiFile.ORDER_APPRAISE.getKey()) .orderByAsc("SORTNUM") ); for (Multifile m : fileList) { //TODO 拼接url } i.setFileList(fileList); }); return page; } }