111
k94314517
2025-02-18 15ec9481bb9768378a512530a8facb4dccdd62f6
111
已添加3个文件
已修改12个文件
424 ■■■■■ 文件已修改
server/platform/src/main/java/com/doumee/api/business/DiscountMemberController.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/platform/src/main/java/com/doumee/api/business/GoodsorderController.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/core/utils/DateUtil.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/business/DiscountLogMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/business/model/DiscountLog.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/business/model/Goodsorder.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/business/vo/DiscountGoodsorderExportVO.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/business/web/request/DiscountMemberDTO.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/business/web/response/GoodsorderDetailVO.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/DiscountMemberService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/GoodsorderService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/impl/DiscountMemberServiceImpl.java 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/web/src/main/java/com/doumee/api/web/HomeApi.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/platform/src/main/java/com/doumee/api/business/DiscountMemberController.java
@@ -7,6 +7,7 @@
import com.doumee.core.model.PageWrap;
import com.doumee.core.model.PageData;
import com.doumee.dao.business.model.DiscountMember;
import com.doumee.dao.business.web.request.DiscountMemberDTO;
import com.doumee.service.business.DiscountMemberService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -85,6 +86,24 @@
    @GetMapping("/{id}")
    @RequiresPermissions("business:discountmember:query")
    public ApiResponse findById(@PathVariable String id) {
        return ApiResponse.success(discountMemberService.findById(id));
        return ApiResponse.success(discountMemberService.getDetail(id));
    }
    @ApiOperation("套餐卡报废")
    @PostMapping("/cancel")
    @RequiresPermissions("business:discountmember:update")
    public ApiResponse cancel(@RequestBody DiscountMemberDTO model) {
        discountMemberService.cancel(model);
        return ApiResponse.success(null);
    }
    @ApiOperation("套餐卡调整")
    @PostMapping("/adjust")
    @RequiresPermissions("business:discountmember:update")
    public ApiResponse adjust(@RequestBody DiscountMemberDTO model) {
        discountMemberService.adjust(model);
        return ApiResponse.success(null);
    }
}
server/platform/src/main/java/com/doumee/api/business/GoodsorderController.java
@@ -10,11 +10,13 @@
import com.doumee.core.utils.DateUtil;
import com.doumee.dao.business.model.Goodsorder;
import com.doumee.dao.business.model.WxBillDetail;
import com.doumee.dao.business.vo.DiscountGoodsorderExportVO;
import com.doumee.dao.business.vo.GoodsorderExportVO;
import com.doumee.dao.business.vo.GoodsorderTotalDataVO;
import com.doumee.dao.business.web.request.GoodsorderBackDTO;
import com.doumee.dao.business.web.request.GoodsorderCanBanlanceDTO;
import com.doumee.dao.business.web.response.GoodsorderDetailDTO;
import com.doumee.dao.business.web.response.GoodsorderDetailVO;
import com.doumee.service.business.GoodsorderService;
import com.doumee.service.business.GoodsorderService;
import com.doumee.service.business.RefundService;
@@ -22,6 +24,7 @@
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.checkerframework.checker.units.qual.C;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -103,8 +106,26 @@
    @RequiresPermissions("business:goodsorder:exportExcel")
    public void exportExcel (@RequestBody PageWrap<Goodsorder> pageWrap, HttpServletResponse response) {
        ExcelExporter.build(Goodsorder.class).exportWithFirstAndEnd(goodsorderService.findPage(pageWrap).getRecords(), "订单列表_"+System.currentTimeMillis(),"订单列表_"+ DateUtil.getPlusTime2(DateUtil.getCurrentDate()),null, response);
    }
    @ApiOperation("套餐卡订单列表-导出Excel")
    @PostMapping("/discountExportExcel")
    @RequiresPermissions("business:goodsorder:exportExcel")
    public void discountExportExcel (@RequestBody PageWrap<Goodsorder> pageWrap, HttpServletResponse response) {
        List<Goodsorder> goodsorders = goodsorderService.findPage(pageWrap).getRecords();
        List<DiscountGoodsorderExportVO> discountGoodsorderExportVOList = new ArrayList<>();
        for (Goodsorder goodsorder:goodsorders) {
            DiscountGoodsorderExportVO discountGoodsorderExportVO = new DiscountGoodsorderExportVO();
            BeanUtils.copyProperties(goodsorder,discountGoodsorderExportVO);
            discountGoodsorderExportVO.setPayMoney(discountGoodsorderExportVO.getPayMoney());
            discountGoodsorderExportVOList.add(discountGoodsorderExportVO);
        }
        ExcelExporter.build(DiscountGoodsorderExportVO.class).exportWithFirstAndEnd(discountGoodsorderExportVOList, "订单列表_"+System.currentTimeMillis(),"订单列表_"+ DateUtil.getPlusTime2(DateUtil.getCurrentDate()),null, response);
    }
    @ApiOperation("收款明细(微信对账明细)_分页查询")
    @PostMapping("/pageAccountDetail")
    @RequiresPermissions("business:goodsorder:query")
@@ -124,6 +145,12 @@
        return ApiResponse.success(goodsorderService.getGoodsorderDetailDTO(id));
    }
    @ApiOperation("订单详情-套餐卡")
    @GetMapping("/discountOrderDetail")
    @RequiresPermissions("business:goodsorder:query")
    public ApiResponse<GoodsorderDetailVO> discountOrderDetail(@RequestParam String id) {
        return ApiResponse.success(goodsorderService.getGoodsorderDetailForDisCount(id));
    }
    /**
     * å¼ºåˆ¶ç»“算订单
server/services/src/main/java/com/doumee/core/utils/DateUtil.java
@@ -68,6 +68,15 @@
        return dt1;
    }
    public static String getXDaysAfter(Date date, Integer days){
        Timestamp currentTimestamp = new Timestamp(date.getTime());
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(currentTimestamp);
        calendar.add(Calendar.DAY_OF_YEAR, days-1); // åœ¨å½“前时间基础上添加指定的天数
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        return formatter.format(calendar.getTime());
    }
    /**
     * @author Pablo Descrption:ȡ�õ�ǰ����getgetg get Date format
     *         Example:2008-05-15
server/services/src/main/java/com/doumee/dao/business/DiscountLogMapper.java
@@ -2,11 +2,12 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.DiscountLog;
import com.github.yulichang.base.mapper.MPJJoinMapper;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2025/02/17 09:43
 */
public interface DiscountLogMapper extends BaseMapper<DiscountLog> {
public interface DiscountLogMapper extends MPJJoinMapper<DiscountLog> {
}
server/services/src/main/java/com/doumee/dao/business/model/DiscountLog.java
@@ -1,5 +1,6 @@
package com.doumee.dao.business.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -79,4 +80,8 @@
    @ExcelColumn(name="关联订单编码(关联goodsorder)")
    private String goodsorderId;
    @ApiModelProperty(value = "创建人名称")
    @TableField(exist = false)
    private String creatorName;
}
server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java
@@ -11,6 +11,7 @@
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import java.math.BigDecimal;
import java.util.List;
/**
 * ç”¨æˆ·éª‘行套餐卡关联表
@@ -144,4 +145,13 @@
    @ExcelColumn(name="使用次数",index = 4,width = 20)
    @TableField(exist = false)
    private Integer useTimes;
    @ApiModelProperty(value = "骑行记录")
    @TableField(exist = false)
    private List<DiscountLog> discountLogList;
    @ApiModelProperty(value = "操作记录")
    @TableField(exist = false)
    private List<DiscountLog> optLogList;
}
server/services/src/main/java/com/doumee/dao/business/model/Goodsorder.java
@@ -136,6 +136,10 @@
    @TableField(exist = false)
    private Integer closeStatus;
    @ApiModelProperty(value = "操作人")
    @ExcelColumn(name="操作人",index = 9,width = 10,align = HorizontalAlignment.CENTER)
    @TableField(exist = false)
    private String refundUserName;
    @ApiModelProperty(value = "套餐名称", example = "2023-10-01 15:12:01")
    @TableField(exist = false)
server/services/src/main/java/com/doumee/dao/business/vo/DiscountGoodsorderExportVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,66 @@
package com.doumee.dao.business.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import java.math.BigDecimal;
import java.util.Date;
/**
 * è®¢å•信息表
 * @author æ±Ÿè¹„蹄
 * @date 2023/09/27 18:06
 */
@Data
@ApiModel("套餐订单导出对象")
public class DiscountGoodsorderExportVO {
    @ApiModelProperty(value = "订单编码")
    @ExcelColumn(name="订单编号",width = 10,index = 1,align = HorizontalAlignment.CENTER)
    private String code;
    @ApiModelProperty(value = "套餐卡名称")
    @ExcelColumn(name="套餐卡",width = 10,index = 2,align = HorizontalAlignment.CENTER)
    private String discountName;
    @ApiModelProperty(value = "合计(元)")
    @ExcelColumn(name="合计(元)",width = 10,index = 3,align = HorizontalAlignment.CENTER)
    private BigDecimal money;
    @ApiModelProperty(value = "实付(元)")
    @ExcelColumn(name="实付(元)",width = 10,index = 4,align = HorizontalAlignment.CENTER)
    private BigDecimal payMoney;
    @ApiModelProperty(value = "已退金额(元)")
    @ExcelColumn(name="已退金额(元)",width = 10,index = 5,align = HorizontalAlignment.CENTER)
    private BigDecimal refundMoney;
    @ApiModelProperty(value = "用户openid" )
    @TableField(exist = false)
    @ExcelColumn(name="用户信息",index = 6 ,width = 10,align = HorizontalAlignment.CENTER)
    private String openid;
    @ApiModelProperty(value = "支付方式 0微信 1支付宝")
    @ExcelColumn(name="支付方式",index = 7 ,width = 10,valueMapping = "0=微信;1=支付宝;",align = HorizontalAlignment.CENTER)
    private Integer payWay;
    @ApiModelProperty(value = "订单来源")
    @ExcelColumn(name="订单来源",index = 8 ,width = 10,valueMapping = "0=小程序端;",align = HorizontalAlignment.CENTER)
    private Integer origin;
    @ApiModelProperty(value = "操作人")
    @ExcelColumn(name="操作人",index = 9,width = 10,align = HorizontalAlignment.CENTER)
    private String refundUserName;
    @ApiModelProperty(value = "创建时间")
    @ExcelColumn(name="创建时间",index = 10,width = 16,dateFormat = "yyyy-MM-dd HH:mm:ss",align = HorizontalAlignment.CENTER)
    private Date createDate;
}
server/services/src/main/java/com/doumee/dao/business/web/request/DiscountMemberDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
package com.doumee.dao.business.web.request;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
 * ç”¨æˆ·éª‘行套餐卡关联表
 * @author æ±Ÿè¹„蹄
 * @date 2025/02/17 09:43
 */
@Data
public class DiscountMemberDTO {
    @ApiModelProperty(value = "编码")
    private String id;
    @ApiModelProperty(value = "备注")
    private String info;
    @ApiModelProperty(value = "票号")
    private String code;
    @ApiModelProperty(value = "名称")
    private String name;
    @ApiModelProperty(value = "用户opneid")
    private String openid;
    @ApiModelProperty(value = "状态 0正常 1作废 2过期或用完", example = "1")
    private Integer status;
    @ApiModelProperty(value = "增加天数")
    private Integer addDays;
    @ApiModelProperty(value = "选中数据")
    private List<String> choseIdList;
}
server/services/src/main/java/com/doumee/dao/business/web/response/GoodsorderDetailVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
package com.doumee.dao.business.web.response;
import com.doumee.dao.business.model.DiscountMember;
import com.doumee.dao.business.model.Goodsorder;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.Refund;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @author T14
 */
@Data
@ApiModel("订单详情")
public class GoodsorderDetailVO {
    @ApiModelProperty(value = "订单信息")
    private Goodsorder goodsOrder;
    @ApiModelProperty(value = "买家信息")
    private Member member;
    @ApiModelProperty(value = "套餐信息")
    private DiscountMember discountMember;
    @ApiModelProperty(value = "退款记录")
    private List<Refund> refundList;
}
server/services/src/main/java/com/doumee/service/business/DiscountMemberService.java
@@ -3,6 +3,8 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.DiscountMember;
import com.doumee.dao.business.web.request.DiscountMemberDTO;
import java.util.List;
/**
@@ -63,6 +65,7 @@
     */
    DiscountMember findById(String id);
    DiscountMember getDetail(String id);
    /**
     * æ¡ä»¶æŸ¥è¯¢å•条记录
     *
@@ -94,4 +97,8 @@
     * @return long
     */
    long count(DiscountMember discountMember);
    void cancel(DiscountMemberDTO model);
    void adjust(DiscountMemberDTO model);
}
server/services/src/main/java/com/doumee/service/business/GoodsorderService.java
@@ -12,6 +12,7 @@
import com.doumee.dao.business.web.request.BackElecBikeRequest;
import com.doumee.dao.business.web.request.GoodsorderBackDTO;
import com.doumee.dao.business.web.request.GoodsorderCanBanlanceDTO;
import com.doumee.dao.business.web.response.GoodsorderDetailVO;
import com.doumee.dao.business.web.response.HomeResponse;
import com.doumee.dao.business.web.response.GoodsorderDetailDTO;
import com.doumee.dao.business.web.response.RidesDetailResponse;
@@ -143,7 +144,12 @@
     */
    GoodsorderDetailDTO getGoodsorderDetailDTO(String id);
    /**
     * å¥—餐卡订单详情
     * @param id
     * @return
     */
    GoodsorderDetailVO getGoodsorderDetailForDisCount(String id);
    /**
     * å¼ºåˆ¶ç»“算订单
     * @param id
server/services/src/main/java/com/doumee/service/business/impl/DiscountMemberServiceImpl.java
@@ -1,13 +1,22 @@
package com.doumee.service.business.impl;
import com.doumee.core.constants.Constants;
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.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.DiscountLogMapper;
import com.doumee.dao.business.DiscountMemberMapper;
import com.doumee.dao.business.join.DiscountMemberJoinMapper;
import com.doumee.dao.business.model.Discount;
import com.doumee.dao.business.model.DiscountLog;
import com.doumee.dao.business.model.DiscountMember;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.web.request.DiscountMemberDTO;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.service.business.DiscountMemberService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -15,13 +24,16 @@
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.checkerframework.checker.units.qual.A;
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;
import java.util.Objects;
import java.util.stream.Collectors;
/**
 * ç”¨æˆ·éª‘行套餐卡关联表Service实现
@@ -36,6 +48,10 @@
    @Autowired
    private DiscountMemberJoinMapper discountMemberJoinMapper;
    @Autowired
    private DiscountLogMapper discountLogMapper;
    @Override
    public String create(DiscountMember discountMember) {
@@ -83,6 +99,27 @@
    }
    @Override
    public DiscountMember getDetail(String id) {
        DiscountMember discountMember = discountMemberMapper.selectById(id);
        if(Objects.isNull(discountMember)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        List<DiscountLog> discountLogList = discountLogMapper.selectJoinList(DiscountLog.class,new MPJLambdaWrapper<DiscountLog>()
                .selectAll(DiscountLog.class)
                .selectAs(SystemUser::getRealname,DiscountLog::getCreatorName)
                .eq(DiscountLog::getDiscountMemberId,discountMember.getId())
                .eq(DiscountLog::getIsdeleted,Constants.ZERO)
                .orderByDesc(DiscountLog::getId)
        );
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(discountLogList)){
            discountMember.setDiscountLogList(discountLogList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ZERO)).collect(Collectors.toList()));
            discountMember.setOptLogList(discountLogList.stream().filter(i->!Constants.equalsInteger(i.getType(),Constants.ZERO)).collect(Collectors.toList()));
            discountMember.setUseTimes(discountMember.getDiscountLogList().size());
        }
        return discountMember;
    }
    @Override
    public DiscountMember findOne(DiscountMember discountMember) {
        QueryWrapper<DiscountMember> wrapper = new QueryWrapper<>(discountMember);
        return discountMemberMapper.selectOne(wrapper);
@@ -110,6 +147,94 @@
        return PageData.from(discountMemberJoinMapper.selectJoinPage(page, DiscountMember.class,queryWrapper));
    }
    @Override
    public void cancel(DiscountMemberDTO model){
        LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        MPJLambdaWrapper<DiscountMember> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.selectAll(DiscountMember.class)
                .leftJoin(Member.class,Member::getId,DiscountMember::getMemberId)
                .eq(DiscountMember::getStatus,Constants.ZERO)
                .like(StringUtils.isNotBlank(model.getCode()),DiscountMember::getCode,model.getCode())
                .like(StringUtils.isNotBlank(model.getName()),DiscountMember::getName,model.getName())
                .like(StringUtils.isNotBlank(model.getOpenid()),Member::getOpenid,model.getOpenid())
                .eq(Objects.nonNull(model.getId()),DiscountMember::getId,model.getId())
                .in(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(model.getChoseIdList())
                        ,DiscountMember::getId,model.getChoseIdList())
                .orderByDesc(DiscountMember::getId);
        List<DiscountMember> list = discountMemberJoinMapper.selectJoinList(DiscountMember.class,queryWrapper);
        if(CollectionUtils.isEmpty(list)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到可报废的套餐卡信息");
        }
        for (DiscountMember discountMember:list) {
            discountMemberMapper.update(null,new UpdateWrapper<DiscountMember>().lambda()
                    .set(DiscountMember::getStatus,Constants.ONE)
                    .eq(DiscountMember::getId,discountMember.getId())
            );
            //操作日志
            DiscountLog discountLog = new DiscountLog();
            discountLog.setIsdeleted(Constants.ZERO);
            discountLog.setCreator(principal.getId());
            discountLog.setCreateDate(new Date());
            discountLog.setDiscountMemberId(discountMember.getId());
            discountLog.setType(Constants.ONE);
            discountLog.setInfo(model.getInfo());
            discountLog.setEditInfo("退货退卡");
            discountLog.setGoodsorderId(discountMember.getGoodsorderId());
            discountLogMapper.insert(discountLog);
        }
    }
    @Override
    public void adjust(DiscountMemberDTO model){
        if(Objects.isNull(model)
        || Objects.isNull(model.getAddDays())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        MPJLambdaWrapper<DiscountMember> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.selectAll(DiscountMember.class)
                .leftJoin(Member.class,Member::getId,DiscountMember::getMemberId)
                .eq(DiscountMember::getStatus,Constants.ZERO)
                .like(StringUtils.isNotBlank(model.getCode()),DiscountMember::getCode,model.getCode())
                .like(StringUtils.isNotBlank(model.getName()),DiscountMember::getName,model.getName())
                .like(StringUtils.isNotBlank(model.getOpenid()),Member::getOpenid,model.getOpenid())
                .eq(Objects.nonNull(model.getId()),DiscountMember::getId,model.getId())
                .in(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(model.getChoseIdList())
                        ,DiscountMember::getId,model.getChoseIdList())
                .orderByDesc(DiscountMember::getId);
        List<DiscountMember> list = discountMemberJoinMapper.selectJoinList(DiscountMember.class,queryWrapper);
        if(CollectionUtils.isEmpty(list)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到可调整的套餐卡信息");
        }
        for (DiscountMember discountMember:list) {
            if(!Constants.equalsInteger(discountMember.getStatus(),Constants.ZERO)){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【"+discountMember.getCode()+"】套餐卡已作废,无法进行该操作");
            }
            String useEndDate = DateUtil.getXDaysAfter(discountMember.getUseEndDate(),model.getAddDays());
            discountMemberMapper.update(null,new UpdateWrapper<DiscountMember>().lambda()
                            //.setSql(" use_end_date =  use_end_date::date +   " + model.getAddDays() )
                            .set(DiscountMember::getUseEndDate,useEndDate)
                    .eq(DiscountMember::getId,discountMember.getId())
            );
            //操作日志
            DiscountLog discountLog = new DiscountLog();
            discountLog.setIsdeleted(Constants.ZERO);
            discountLog.setCreator(principal.getId());
            discountLog.setCreateDate(new Date());
            discountLog.setDiscountMemberId(discountMember.getId());
            discountLog.setType(Constants.TWO);
            discountLog.setGoodsorderId(discountMember.getGoodsorderId());
            discountLog.setEditInfo(model.getInfo());
            discountLog.setEditDays(model.getAddDays());
            discountLog.setInfo("将有效期增加"+model.getAddDays()+"天, è°ƒæ•´åŽæœ‰æ•ˆæœŸè‡³"+useEndDate);
            discountLogMapper.insert(discountLog);
        }
    }
    @Override
    public long count(DiscountMember discountMember) {
        QueryWrapper<DiscountMember> wrapper = new QueryWrapper<>(discountMember);
server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -34,6 +34,7 @@
import com.doumee.dao.business.web.response.*;
import com.doumee.dao.business.join.MemberRidesJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.service.business.GoodsorderService;
import com.doumee.service.business.MemberRidesService;
import com.doumee.service.business.PricingRuleService;
@@ -200,13 +201,6 @@
            if (Objects.nonNull(model.getEndDate())){
                queryWrapper.le( Goodsorder::getPayDate, Utils.Date.getEnd(model.getEndDate()));
            }
//            queryWrapper.eq(model.getPayStatus() !=null,Goodsorder::getPayStatus,model.getPayStatus());
//            queryWrapper.like(model.getCode() !=null,Goodsorder::getCode,model.getCode());
//            queryWrapper.like(model.getId() !=null,Goodsorder::getId,model.getId());
//            queryWrapper.eq(model.getStatus() !=null,Goodsorder::getStatus,model.getStatus());
//            queryWrapper.like(model.getOnlineOrderid() !=null,Goodsorder::getOnlineOrderid,model.getOnlineOrderid());
//            queryWrapper.like(model.getOpenid() !=null,Member::getOpenid,model.getOpenid());
            queryWrapper.eq(Goodsorder::getIsdeleted,Constants.ZERO);
            queryWrapper.eq(Goodsorder::getPayStatus,Constants.ONE);
            queryWrapper.orderByAsc(Goodsorder::getPayDate);
@@ -328,6 +322,7 @@
        queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getType()),Goodsorder::getType,pageWrap.getModel().getType());
        queryWrapper.select("(select  sum(er.discount_price) from member_rides  er  where er.ordre_id=t.id and er.isdeleted=0) as discountMoney," +
                "(select  er.status from member_rides  er  where er.ordre_id=t.id order by er.create_date desc limit 1) as memberRidesStatus");
        queryWrapper.select("( select s.realname from refund r left join system_user s on r.creator = s.id where r.obj_id = t.id order by r.id desc  limit 1  ) ",Goodsorder::getRefundUserName);
        if(Objects.nonNull(pageWrap.getModel().getCloseStatus()) && pageWrap.getModel().getCloseStatus().equals(Constants.ZERO)){
            queryWrapper.ne(Goodsorder::getStatus,Constants.GOODSORDER_STATUS.CLOSE.getKey());
        }
@@ -446,7 +441,6 @@
    @Override
    public GoodsorderDetailDTO getGoodsorderDetailDTO(String id) {
        List<PayOrderDTO> payOrderDTOList = new ArrayList<>();
        Goodsorder goodsorder = goodsorderMapper.selectById(id);
        if(goodsorder == null){
@@ -495,6 +489,45 @@
        goodsorderDetailDTO.setModel(goodsorder);//订单对象
        return goodsorderDetailDTO;
    }
    @Override
    public GoodsorderDetailVO getGoodsorderDetailForDisCount(String id){
        GoodsorderDetailVO goodsorderDetailVO = new GoodsorderDetailVO();
        Goodsorder goodsorder = goodsorderMapper.selectById(id);
        if(goodsorder == null){
            throw  new BusinessException(ResponseStatus.DATA_EMPTY );
        }
        if(Constants.equalsInteger(goodsorder.getType(),Constants.ZERO)){
            throw  new BusinessException(ResponseStatus.NOT_ALLOWED);
        }
        goodsorderDetailVO.setGoodsOrder(goodsorder);
        Member member = memberMapper.selectById(goodsorder.getMemberId());
        if(Objects.nonNull(member)){
            goodsorderDetailVO.setMember(member);
        }
        //查询商品信息
        DiscountMember discountMember = discountMemberMapper.selectById(goodsorder.getObjId());
        if(Objects.nonNull(discountMember)){
            goodsorderDetailVO.setDiscountMember(discountMember);
        }
        //查询所有有退款记录
        List<Refund> refunds = refundJoinMapper.selectJoinList(Refund.class,
                new MPJLambdaWrapper<Refund>()
                        .selectAll(Refund.class)
                        .selectAs(SystemUser::getRealname,Refund::getCreatorName)
                        .leftJoin(SystemUser.class,SystemUser::getId,Refund::getCreator)
                        .eq(Refund::getObjId,goodsorder.getId())
                        .orderByDesc(Refund::getId)
        );
        goodsorderDetailVO.setRefundList(refunds);
        return goodsorderDetailVO;
    }
    @Override
    public void forceCloseGoodsorder(String orderId) {
        //查询订单 ä¿¡æ¯
server/web/src/main/java/com/doumee/api/web/HomeApi.java
@@ -49,6 +49,10 @@
        HomeResponse homeResponse = goodsorderService.getHome(getMemberId());
        return  ApiResponse.success("查询成功",homeResponse);
    }
    @ApiOperation(value = "测试电池控制", notes = "测试电池控制")
    @PostMapping("/testControl")
    public ApiResponse<APIResult<T0201_0500>> testControl(@RequestBody  T8500 param) {