bug
jiangqs
2023-08-15 bb95ec391d10f04702822705ecb82c027e849b98
bug
45个文件已修改
2个文件已添加
754 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MerVerifyMemberCouponDto.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MerMemberCouponVo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteCouponFallbackFactory.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteCouponService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtActivityRecordPageVo.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsPageVo.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/CouponController.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MemberSelectCouponDto.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerGoodsCouponListDto.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberBrowsePageVo.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberIntegralPageVo.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberPageVo.java 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberSuggestPageVo.java 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberCouponMapper.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberCouponService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberCouponMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppPanicBuyVo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppSureOrderGoodsVo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtActivityOrderPageVo.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberOrderPageVo.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberServiceRecordPageVo.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtShopAllOrderPageVo.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtShopOrderPageVo.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/config/WxPayConfiguration.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtEditShopDto.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/AppNearbyShopVo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopCertificatePageVo.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopInfoVo.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopPageVo.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopSuggestPageVo.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/WechatPayUtils.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopCertificateMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/AgencyTaskRecordMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskRecordMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/ShopTaskRecordMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/staff/SysStaff.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtStaffSuggestPageVo.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java
@@ -96,6 +96,8 @@
    String BIRTHDAY_BEYOND = "不能选择未来的日期作为生日";
    String BIRTHDAY_CARD_ERROR = "生日活动已关闭";
    String COUPON_GET_ERROR = "该优惠券不可领取";
    String COUPON_GET_ALL = "该优惠券已领取完";
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MerVerifyMemberCouponDto.java
New file
@@ -0,0 +1,22 @@
package com.ruoyi.system.api.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @ClassName MerVerifyMemberCouponDto
 * @Description TODO
 * @Author jqs
 * @Date 2023/8/15 11:18
 * @Version 1.0
 */
@Data
public class MerVerifyMemberCouponDto {
    @ApiModelProperty(value = "优惠券id")
    private String couponId;
    @ApiModelProperty(value = "商户id")
    private Long shopId;
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MerMemberCouponVo.java
@@ -1,5 +1,6 @@
package com.ruoyi.system.api.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -38,9 +39,11 @@
    private BigDecimal discountPercent;
    @ApiModelProperty(value="有效开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date validStartTime;
    @ApiModelProperty(value="使用有效期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date deadlineTime;
    @ApiModelProperty(value="使用范围1.全场2.指定商品")
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteCouponFallbackFactory.java
@@ -3,6 +3,7 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.domain.dto.BirthdayGiftSendDto;
import com.ruoyi.system.api.domain.dto.MerBaseDto;
import com.ruoyi.system.api.domain.dto.MerVerifyMemberCouponDto;
import com.ruoyi.system.api.domain.vo.AppMemberCouponVo;
import com.ruoyi.system.api.domain.vo.MerVerifyCouponGetVo;
import com.ruoyi.system.api.service.RemoteCouponService;
@@ -61,7 +62,10 @@
                return R.fail("回退优惠券失败" + throwable.getMessage());
            }
            @Override
            public R sureMemberCoupon(MerVerifyMemberCouponDto merVerifyMemberCouponDto) {
                return R.fail("确认核销优惠券失败" + throwable.getMessage());
            }
        };
    }
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteCouponService.java
@@ -4,6 +4,7 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.domain.dto.BirthdayGiftSendDto;
import com.ruoyi.system.api.domain.dto.MerBaseDto;
import com.ruoyi.system.api.domain.dto.MerVerifyMemberCouponDto;
import com.ruoyi.system.api.domain.vo.AppMemberCouponVo;
import com.ruoyi.system.api.domain.vo.MerVerifyCouponGetVo;
import com.ruoyi.system.api.factory.RemoteCouponFallbackFactory;
@@ -25,7 +26,7 @@
    /**
     * 通过userid获取用户优惠
     * @param userId
     * @param merBaseDto
     * @return
     */
    @PostMapping("/coupon/listVoMemberCouponByUserId")
@@ -80,4 +81,15 @@
     */
    @PostMapping("/coupon/backMemberCoupon")
    public R backMemberCoupon(@RequestBody String memberCouponIds);
    /**
     * @description  确认核销优惠券
     * @author  jqs
     * @date    2023/8/15 11:37
     * @param merVerifyMemberCouponDto
     * @return  R
     */
    @PostMapping("/coupon/verifyMemberCoupon")
    public R sureMemberCoupon(@RequestBody MerVerifyMemberCouponDto merVerifyMemberCouponDto);
}
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java
@@ -10,7 +10,7 @@
    /**
     * 缓存有效期,默认720(分钟)
     */
    public final static long EXPIRATION = 720;
    public final static long EXPIRATION = 1440;
    /**
     * 缓存刷新时间,默认120(分钟)
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtActivityRecordPageVo.java
@@ -20,17 +20,17 @@
    @ApiModelProperty(value = "用户id")
    private Long userId;
    @Excel(name = "用户名称", width = 30)
    @Excel(name = "用户名称", width = 30, sort = 1)
    @ApiModelProperty(value = "用户名称")
    private String nickName;
    @Excel(name = "用户电话", width = 30)
    @Excel(name = "用户电话", width = 30, sort = 2)
    @ApiModelProperty(value = "用户电话")
    private String mobile;
    @Excel(name = "浏览时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "浏览时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", sort = 3)
    @ApiModelProperty(value = "浏览时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    @Excel(name = "是否下单", width = 30)
    @Excel(name = "是否下单", width = 30, sort = 4)
    @ApiModelProperty(value = "是否下单")
    private String orderFlag;
}
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsPageVo.java
@@ -24,19 +24,19 @@
    @ApiModelProperty(value = "商品id")
    private String goodsId;
    @Excel(name = "商品名称", width = 30)
    @Excel(name = "商品名称", width = 30, sort = 1)
    @ApiModelProperty(value = "商品名称")
    private String goodsName;
    @Excel(name = "商品简介", width = 30)
    @Excel(name = "商品简介", width = 30, sort = 2)
    @ApiModelProperty(value = "商品简介")
    private String goodsIntroduction;
    @Excel(name = "商品分类", width = 30)
    @Excel(name = "商品分类", width = 30, sort = 3)
    @ApiModelProperty(value = "商品分类")
    private String goodsClass;
    @Excel(name = "商品标签", width = 30)
    @Excel(name = "商品标签", width = 30, sort = 5)
    @ApiModelProperty(value = "商品标签")
    private String goodsTags;
@@ -44,38 +44,38 @@
    @ApiModelProperty(value = "商品图片")
    private String goodsPicture;
    @Excel(name = "商品类型", width = 30)
    @Excel(name = "商品类型", width = 30, sort = 4)
    @ApiModelProperty(value = "商品类型1周期2服务3体验4单品")
    private String goodsType;
    @Excel(name = "商品建议售价", width = 30)
    @Excel(name = "商品建议售价", width = 30, sort = 6)
    @ApiModelProperty(value = "商品建议售价")
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal suggestSalesPrice;;
    @Excel(name = "最低售价", width = 30)
    @Excel(name = "最低售价", width = 30, sort = 7)
    @ApiModelProperty(value = "最低售价")
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal mininumPrice;;
    @Excel(name = "销量", width = 30)
    @Excel(name = "销量", width = 30, sort = 8)
    @ApiModelProperty(value = "销量")
    private Integer buyNumCount;
    @Excel(name = "销售额", width = 30)
    @Excel(name = "销售额", width = 30, sort = 9)
    @ApiModelProperty(value = "销售额")
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal buyMoneyTotal;
    @Excel(name = "是否推荐", width = 30)
    @Excel(name = "是否推荐", width = 30, sort = 10)
    @ApiModelProperty(value = "是否推荐")
    private String recommendFlag;
    @Excel(name = "商品状态", width = 30)
    @Excel(name = "商品状态", width = 30, sort = 11)
    @ApiModelProperty(value = "商品状态")
    private String goodsStatus;
    @Excel(name = "创建时间", width = 30, dateFormat  = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "创建时间", width = 30, dateFormat  = "yyyy-MM-dd HH:mm:ss", sort = 12)
    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java
@@ -420,7 +420,7 @@
            goodsDetail = new String(decodedBytes, StandardCharsets.UTF_8);
            goods.setGoodsDetail(goodsDetail);
        }
        goods.setRecommendFlag(mgtGoodsEditDto.getRecommendFlag());
        goods.setRecommendFlag(0);
        goods.setGoodsNurses(mgtGoodsEditDto.getGoodsNurses());
        goods.setGoodsTags(mgtGoodsEditDto.getGoodsTags());
        this.saveOrUpdate(goods);
@@ -636,6 +636,9 @@
        MgtGoodsEditInfoVo mgtGoodsEditInfoVo = new MgtGoodsEditInfoVo();
        Goods goods = this.getById(mgtBaseGetDto.getId());
        BeanUtils.copyProperties(goods,mgtGoodsEditInfoVo);
        if(goods.getSubscriptionFlag()==0){
            mgtGoodsEditInfoVo.setSubscription(null);
        }
        List<GoodsFile> goodsFileList = goodsFileService.listByGoodsId(goods.getGoodsId());
        if(goodsFileList!=null&&!goodsFileList.isEmpty()){
            StringJoiner goodsBannersSj = new StringJoiner(",");
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/CouponController.java
@@ -6,6 +6,7 @@
import com.ruoyi.member.service.member.MemberCouponService;
import com.ruoyi.system.api.domain.dto.BirthdayGiftSendDto;
import com.ruoyi.system.api.domain.dto.MerBaseDto;
import com.ruoyi.system.api.domain.dto.MerVerifyMemberCouponDto;
import com.ruoyi.system.api.domain.vo.AppMemberCouponVo;
import com.ruoyi.system.api.domain.vo.MerVerifyCouponGetVo;
import org.springframework.web.bind.annotation.PostMapping;
@@ -113,8 +114,22 @@
        return R.ok();
    }
    /**
     * @description  使用优惠券
     * @description  确认核销优惠券
     * @author  jqs
     * @date    2023/8/15 11:37
     * @param merVerifyMemberCouponDto
     * @return  R
     */
    @PostMapping("/verifyMemberCoupon")
    public R sureMemberCoupon(@RequestBody MerVerifyMemberCouponDto merVerifyMemberCouponDto){
        memberCouponService.sureMemberCoupon(merVerifyMemberCouponDto.getCouponId(),merVerifyMemberCouponDto.getShopId());
        return R.ok();
    }
    /**
     * @description  回退优惠券
     * @author  jqs
     * @date    2023/7/13 19:38
     * @param memberCouponIds
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MemberSelectCouponDto.java
New file
@@ -0,0 +1,22 @@
package com.ruoyi.member.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @ClassName MemberSelectCouponDto
 * @Description TODO
 * @Author jqs
 * @Date 2023/8/14 11:53
 * @Version 1.0
 */
@Data
public class MemberSelectCouponDto {
    @ApiModelProperty(value = "商品id")
    private String goodsId;
    @ApiModelProperty(value = "会员选择优惠券id")
    private String memberCouponId;
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerGoodsCouponListDto.java
@@ -4,6 +4,9 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
 * @ClassName MerGoodsCouponListDto
 * @Description TODO
@@ -17,6 +20,15 @@
    @ApiModelProperty(value = "会员用户id")
    private Long memberUserId;
    @ApiModelProperty(value = "会员用户id")
    @ApiModelProperty(value = "商品id")
    private String goodsId;
    @ApiModelProperty(value = "购买数量")
    private Integer buyNum;
    @ApiModelProperty(value = "商品售价")
    private BigDecimal salesPrice;
    @ApiModelProperty(value = "已选优惠券表")
    private List<MemberSelectCouponDto> goodsCpuponList;
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberBrowsePageVo.java
@@ -17,20 +17,20 @@
@Data
public class MgtMemberBrowsePageVo {
    @Excel(name = "浏览类型", width = 30)
    @Excel(name = "浏览类型", width = 30, sort = 1)
    @ApiModelProperty(value = "浏览类型1鸿瑞学堂2营销活动3商城商品4关于鸿瑞堂5申请加盟")
    private String browseType;
    @Excel(name = "浏览名称", width = 30)
    @Excel(name = "浏览名称", width = 30, sort = 2)
    @ApiModelProperty(value = "浏览名称")
    private String browseName;
    @Excel(name = "浏览时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "浏览时间")
    @Excel(name = "停留时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", sort = 3)
    @ApiModelProperty(value = "停留时间")
    private String browseTime;
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "创建时间")
    @Excel(name = "浏览时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", sort = 4)
    @ApiModelProperty(value = "浏览时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberIntegralPageVo.java
@@ -21,20 +21,20 @@
    @ApiModelProperty(value = "记录id")
    private Long recordId;
    @Excel(name = "变动时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "变动时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", sort = 1)
    @ApiModelProperty(value = "变动时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    @Excel(name = "变动积分", width = 30)
    @Excel(name = "变动积分", width = 30, sort = 3)
    @ApiModelProperty(value = "变动积分")
    private Integer changeIntegral;
    @Excel(name = "剩余积分", width = 30)
    @Excel(name = "剩余积分", width = 30, sort = 4)
    @ApiModelProperty(value = "剩余积分")
    private Integer surpIntegral;
    @Excel(name = "变动理由", width = 30)
    @Excel(name = "变动理由", width = 30, sort = 2)
    @ApiModelProperty(value = "变动理由")
    private String changeReason;
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberPageVo.java
@@ -19,11 +19,10 @@
public class MgtMemberPageVo {
    @ApiModelProperty(value = "会员id")
    @Excel(name = "会员id", width = 30)
    private String memberId;
    @ApiModelProperty(value = "用户id")
    @Excel(name = "用户id", width = 30)
    @Excel(name = "用户id", width = 30, sort = 1)
    private Long userId;
    @ApiModelProperty(value = "会员编号")
@@ -31,77 +30,77 @@
    private String memberNo;
    @ApiModelProperty(value = "用户姓名")
    @Excel(name = "用户姓名", width = 30)
    @Excel(name = "用户姓名", width = 30, sort = 3)
    private String realName;
    @ApiModelProperty(value = "用户昵称")
    @Excel(name = "用户昵称", width = 30)
    @Excel(name = "用户昵称", width = 30, sort = 2)
    private String nickName;
    @ApiModelProperty(value = "用户手机")
    @Excel(name = "用户手机", width = 30)
    @Excel(name = "用户手机", width = 30, sort = 4)
    private String mobile;
    @ApiModelProperty(value = "用户性别")
    @Excel(name = "用户性别", width = 30)
    @Excel(name = "用户性别", width = 30, sort = 5)
    private String gender;
    @ApiModelProperty(value = "用户年龄")
    @Excel(name = "用户年龄", width = 30)
    @Excel(name = "用户年龄", width = 30, sort = 6)
    private Integer age;
    @ApiModelProperty(value = "活跃度")
    @Excel(name = "活跃度", width = 30)
    @Excel(name = "活跃度", width = 30, sort = 7)
    private String activeness;
    @ApiModelProperty(value = "用户标签 多个,隔开")
    @Excel(name = "用户标签", width = 30)
    @Excel(name = "用户标签", width = 30, sort = 8)
    private String memberTags;
    @ApiModelProperty(value = "所属地区")
    @Excel(name = "所属地区", width = 30)
    @Excel(name = "所属地区", width = 30, sort = 9)
    private String belongDistrict;
    @ApiModelProperty(value = "是否成为会员")
    @Excel(name = "是否成为会员", width = 30)
    @Excel(name = "是否成为会员", width = 30, sort = 10)
    private String memberFlag;
    @ApiModelProperty(value = "注册时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "注册时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "注册时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", sort = 11)
    private Date createTime;
    @ApiModelProperty(value = "最近消费时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "最近消费时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "最近消费时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", sort = 12)
    private Date lastPayTime;
    @ApiModelProperty(value = "客户类型")
    @Excel(name = "客户类型", width = 30)
    @Excel(name = "客户类型", width = 30, sort = 13)
    private String goodsType;
    @ApiModelProperty(value = "关联商户名称")
    @Excel(name = "关联商户名称", width = 30)
    @Excel(name = "关联商户名称", width = 30, sort = 14)
    private String relationShopName;
    @ApiModelProperty(value = "积分")
    @Excel(name = "积分", width = 30)
    @Excel(name = "积分", width = 30, sort = 15)
    private Integer integral;
    @ApiModelProperty(value = "推荐人")
    @Excel(name = "推荐人", width = 30)
    @Excel(name = "推荐人", width = 30, sort = 16)
    private String referrer;
    @ApiModelProperty(value = "会员来源")
    @Excel(name = "会员来源", width = 30)
    @Excel(name = "会员来源", width = 30, sort = 17)
    private String memberFrom;
    @ApiModelProperty(value = "消费总金额")
    @Excel(name = "消费总金额", width = 30)
    @Excel(name = "消费总金额", width = 30, sort = 18)
    private BigDecimal totalPayMoney;
    @ApiModelProperty(value = "活动参与次数")
    @Excel(name = "活动参与次数", width = 30)
    @Excel(name = "活动参与次数", width = 30, sort = 19)
    private Integer activityTotal;
    @ApiModelProperty(value = "头像")
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberSuggestPageVo.java
@@ -20,45 +20,45 @@
    @ApiModelProperty(value = "建议id")
    private Long suggestId;
    @Excel(name = "用户姓名", width = 30)
    @Excel(name = "用户姓名", width = 30, sort = 2)
    @ApiModelProperty(value = "用户姓名")
    private String userRealName;
    @Excel(name = "用户昵称", width = 30)
    @Excel(name = "用户昵称", width = 30, sort = 1)
    @ApiModelProperty(value = "用户昵称")
    private String userNickName;
    @Excel(name = "用户性别", width = 30)
    @Excel(name = "用户性别", width = 30, sort = 3)
    @ApiModelProperty(value = "用户性别")
    private String gender;
    @Excel(name = "用户手机", width = 30)
    @Excel(name = "用户手机", width = 30, sort = 4)
    @ApiModelProperty(value = "用户手机")
    private String userMobile;
    @Excel(name = "建议类型", width = 30)
    @Excel(name = "建议类型", width = 30, sort = 5)
    @ApiModelProperty(value = "建议类型1.平台2.门店")
    private String suggestType;
    @Excel(name = "建议内容", width = 30)
    @Excel(name = "建议内容", width = 30, sort = 6)
    @ApiModelProperty(value = "建议内容")
    private String suggestContent;
    @Excel(name = "平台回复内容", width = 30)
    @Excel(name = "平台回复内容", width = 30, sort = 8)
    @ApiModelProperty(value = "平台回复内容")
    private String replayContent;
    @Excel(name = "商户回复内容", width = 30)
    @Excel(name = "商户回复内容", width = 30, sort = 7)
    @ApiModelProperty(value = "商户回复内容")
    private String shopReplayContent;
    @Excel(name = "建议状态", width = 30)
    @Excel(name = "建议状态", width = 30, sort = 9)
    @ApiModelProperty(value = "建议状态")
    private String suggestStatus;
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", sort = 10)
    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    @Excel(name = "回复人姓名", width = 30)
    @Excel(name = "平台回复人", width = 30, sort = 11)
    @ApiModelProperty(value = "回复人姓名")
    private String replayUserName;
    @Excel(name = "回复时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "平台回复时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", sort = 13)
    @ApiModelProperty(value = "回复时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date replayTime;
    @Excel(name = "平台响应时间", width = 30)
    @Excel(name = "平台响应时间", width = 30, sort = 15)
    @ApiModelProperty(value = "平台响应时间")
    private String responseTime;
    @ApiModelProperty(value = "商户id")
@@ -66,17 +66,17 @@
    @Excel(name = "商户名", width = 30)
    @ApiModelProperty(value = "商户名")
    private String shopName;
    @Excel(name = "商户回复人姓名", width = 30)
    @Excel(name = "商户回复人", width = 30, sort = 12)
    @ApiModelProperty(value = "商户回复人姓名")
    private String shopReplayUserName;
    @Excel(name = "商户回复时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "商户回复时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", sort = 14)
    @ApiModelProperty(value = "商户回复时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date shopReplayTime;
    @Excel(name = "商户响应时间", width = 30)
    @Excel(name = "商户响应时间", width = 30, sort = 16)
    @ApiModelProperty(value = "商户响应时间")
    private String shopResponseTime;
    @Excel(name = "建议标签", width = 30)
    @Excel(name = "建议标签", width = 30, sort = 17)
    @ApiModelProperty(value = "建议标签")
    private String suggestTags;
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberCouponMapper.java
@@ -77,4 +77,14 @@
     * @return  List<MerMemberCouponVo>
     */
    List<MerMemberCouponVo> listMerShopGoodsMemberCoupon(@Param("param") MerGoodsCouponListDto merGoodsCouponListDto);
    /**
     * @description  确认核销优惠券
     * @author  jqs
     * @date    2023/8/15 11:21
     * @param memberCouponId
     * @param shopId
     * @return  void
     */
    void sureMemberCoupon(@Param("memberCouponId")String memberCouponId,@Param("shopId")Long shopId);
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java
@@ -439,7 +439,7 @@
                    memberCoupon.setDelFlag(0);
                    memberCoupon.setCouponId(coupon.getCouponId());
                    memberCoupon.setUserId(userId);
                    memberCoupon.setShopId(coupon.getShopId());
                    //memberCoupon.setShopId(coupon.getShopId());
                    memberCoupon.setCouponType(coupon.getCouponType());
                    memberCoupon.setCouponStatus(coupon.getCouponStatus());
                    memberCoupon.setCouponName(coupon.getCouponName());
@@ -526,7 +526,9 @@
                memberCoupon.setDelFlag(0);
                memberCoupon.setCouponId(coupon.getCouponId());
                memberCoupon.setUserId(userId);
                if(coupon.getCouponFrom()==2){
                memberCoupon.setShopId(coupon.getShopId());
                }
                memberCoupon.setCouponType(coupon.getCouponType());
                memberCoupon.setCouponStatus(coupon.getCouponStatus());
                memberCoupon.setCouponName(coupon.getCouponName());
@@ -1187,7 +1189,9 @@
        memberCoupon.setDelFlag(0);
        memberCoupon.setCouponId(couponId);
        memberCoupon.setUserId(userId);
        if(coupon.getCouponFrom()==2){
        memberCoupon.setShopId(shopId);
        }
        memberCoupon.setCouponType(coupon.getCouponType());
        memberCoupon.setCouponStatus(coupon.getCouponStatus());
        memberCoupon.setCouponName(coupon.getCouponName());
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java
@@ -6,6 +6,7 @@
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.member.domain.dto.AppMemberCouponPageDto;
import com.ruoyi.member.domain.dto.MemberSelectCouponDto;
import com.ruoyi.member.domain.dto.MerGoodsCouponListDto;
import com.ruoyi.member.domain.vo.AppMemberCouponPageVo;
import com.ruoyi.member.mapper.member.MemberCouponMapper;
@@ -24,6 +25,7 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -270,6 +272,56 @@
     */
    @Override
    public List<MerMemberCouponVo> listMerShopGoodsMemberCoupon(MerGoodsCouponListDto merGoodsCouponListDto){
        return memberCouponMapper.listMerShopGoodsMemberCoupon(merGoodsCouponListDto);
        List<MerMemberCouponVo> merMemberCouponVoList = memberCouponMapper.listMerShopGoodsMemberCoupon(merGoodsCouponListDto);
        if(merMemberCouponVoList!=null&&merMemberCouponVoList.size()>0){
            List<MemberSelectCouponDto> goodsCpuponList = merGoodsCouponListDto.getGoodsCpuponList();
            List<String> selectCouponList =  new ArrayList<>();
            Map<String, String>  selectCouponMap = new HashMap<>();
            Boolean checkSelect = false;
            if(merGoodsCouponListDto.getGoodsCpuponList()!=null&&merGoodsCouponListDto.getGoodsCpuponList().size()>0) {
                for (MemberSelectCouponDto couponDto : goodsCpuponList) {
                    selectCouponList.add(couponDto.getMemberCouponId());
                    selectCouponMap.put(couponDto.getMemberCouponId(), couponDto.getGoodsId());
                }
                checkSelect = true;
            }
            Iterator<MerMemberCouponVo> iterator = merMemberCouponVoList.iterator();
            while (iterator.hasNext()) {
                MerMemberCouponVo couponVo = iterator.next();
                log.debug("couponVo"+couponVo.toString());
                if(checkSelect){
                    if (selectCouponList.contains(couponVo.getMemberCouponId()) && selectCouponMap.containsKey(couponVo.getMemberCouponId())) {
                        String goodsId = selectCouponMap.get(couponVo.getMemberCouponId());
                        if (!merGoodsCouponListDto.getGoodsId().equals(goodsId)) {
                            iterator.remove();
                            continue;
                        }
                    }
                }
                if(merGoodsCouponListDto.getBuyNum()!=null&&merGoodsCouponListDto.getSalesPrice()!=null){
                    if(couponVo.getCouponType()==1){
                        BigDecimal goodsMoney = merGoodsCouponListDto.getSalesPrice().multiply(new BigDecimal(merGoodsCouponListDto.getBuyNum().toString()));
                        if(goodsMoney.compareTo(couponVo.getMoneyThreshold())<0){
                            iterator.remove();
                        }
                    }
                }
            }
        }
        return merMemberCouponVoList;
    }
    /**
     * @description  确认核销优惠券
     * @author  jqs
     * @date    2023/8/15 11:21
     * @param memberCouponId
     * @param shopId
     * @return  void
     */
    @Override
    public void sureMemberCoupon(String memberCouponId,Long shopId){
        memberCouponMapper.sureMemberCoupon(memberCouponId, shopId);
    }
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberCouponService.java
@@ -88,6 +88,7 @@
     */
    void useMemberCoupon(String memberCouponIds);
    /**
     * @description  使用优惠券
     * @author  jqs
@@ -105,4 +106,14 @@
     * @return  List<MerMemberCouponVo>
     */
    List<MerMemberCouponVo> listMerShopGoodsMemberCoupon(MerGoodsCouponListDto merGoodsCouponListDto);
    /**
     * @description  确认核销优惠券
     * @author  jqs
     * @date    2023/8/15 11:21
     * @param memberCouponId
     * @param shopId
     * @return  void
     */
    void sureMemberCoupon(String memberCouponId,Long shopId);
}
ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberCouponMapper.xml
@@ -223,4 +223,9 @@
          </if>
        ORDER BY tuc.receive_time DESC
    </select>
    <update id="sureMemberCoupon">
        UPDATE t_member_coupon SET coupon_status = 2,shop_id = #{shopId}
        WHERE del_flag = 0 AND coupon_status = 1 AND id = #{memberCouponId}
    </update>
</mapper>
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppPanicBuyVo.java
@@ -44,6 +44,9 @@
    @ApiModelProperty(value = "商品类型1周期2服务3体验4单品")
    private Integer goodsType;
    @ApiModelProperty(value = "商品标签")
    private String goodsTag;
    @ApiModelProperty(value = "商品图片")
    private String goodsPicture;
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppSureOrderGoodsVo.java
@@ -28,6 +28,9 @@
    @ApiModelProperty(value = "商品简介")
    private String goodsIntroduction;
    @ApiModelProperty(value = "商品标签")
    private String goodsTag;
    @ApiModelProperty(value = "商品类型1周期2服务3体验4单品")
    private Integer goodsType;
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtActivityOrderPageVo.java
@@ -24,43 +24,43 @@
    @ApiModelProperty(value="订单id")
    private String orderId;
    @Excel(name = "订单编号", width = 30)
    @Excel(name = "订单号", width = 30, sort = 1)
    @ApiModelProperty(value="订单编号")
    private String orderNo;
    @Excel(name = "秒杀活动", width = 30)
    @Excel(name = "所属秒杀活动", width = 30, sort = 2)
    @ApiModelProperty(value="秒杀活动")
    private String activityName;
    @ApiModelProperty(value = "用户id")
    private Long userId;
    @Excel(name = "用户昵称", width = 30)
    @Excel(name = "用户昵称", width = 30, sort = 3)
    @ApiModelProperty(value = "用户昵称")
    private String nickName;
    @Excel(name = "用户姓名", width = 30)
    @Excel(name = "用户姓名", width = 30, sort = 4)
    @ApiModelProperty(value = "用户姓名")
    private String userName;
    @Excel(name = "用户电话", width = 30)
    @Excel(name = "手机号", width = 30, sort = 5)
    @ApiModelProperty(value = "用户电话")
    private String userMobile;
    @Excel(name = "商品名称", width = 30)
    @Excel(name = "商品信息", width = 30, sort = 6)
    @ApiModelProperty(value="商品名称")
    private String goodsName;
    @Excel(name = "秒杀价格", width = 30)
    @Excel(name = "秒杀价格", width = 30, sort = 7)
    @ApiModelProperty(value = "秒杀价格")
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal activityPrice;
    @Excel(name = "购买数量", width = 30)
    @Excel(name = "购买数量", width = 30, sort = 8)
    @ApiModelProperty(value="购买数量")
    private Integer buyNum;
    @Excel(name = "订单金额", width = 30)
    @Excel(name = "订单金额", width = 30, sort = 9)
    @ApiModelProperty(value="订单金额")
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal orderMoney;
@@ -70,17 +70,17 @@
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal receivableMoney;
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "订单提交时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", sort = 10)
    @ApiModelProperty(value="创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    @Excel(name = "订单实际支付金额", width = 30)
    @Excel(name = "已支付金额", width = 30, sort = 11)
    @ApiModelProperty(value="订单实际支付金额")
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal payMoney;
    @Excel(name = "订单未支付金额", width = 30)
    @Excel(name = "剩余未付", width = 30, sort = 12)
    @ApiModelProperty(value="订单未支付金额")
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal unPaidMoney;
@@ -88,11 +88,11 @@
    @ApiModelProperty(value="核销店铺id")
    private Long shopId;
    @Excel(name = "核销店铺", width = 30)
    @Excel(name = "核销店铺", width = 30, sort = 13)
    @ApiModelProperty(value="核销店铺")
    private String shopName;
    @Excel(name = "核销时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "核销时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", sort = 14)
    @ApiModelProperty(value="核销时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date verifyTime;
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberOrderPageVo.java
@@ -24,33 +24,33 @@
    @ApiModelProperty(value = "订单id")
    private String orderId;
    @Excel(name = "订单编号", width = 30)
    @Excel(name = "订单编号", width = 30, sort = 1)
    @ApiModelProperty(value="订单编号")
    private String orderNo;
    @Excel(name = "核销门店", width = 30)
    @Excel(name = "核销门店", width = 30, sort = 3)
    @ApiModelProperty(value="核销门店")
    private String shopName;
    @Excel(name = "商品信息", width = 30)
    @Excel(name = "商品信息", width = 30, sort = 4)
    @ApiModelProperty(value="商品信息")
    private String goodsInfo;
    @Excel(name = "订单状态", width = 30)
    @Excel(name = "订单状态", width = 30, sort = 10)
    @ApiModelProperty(value = "订单状态0.已取消1.待支付2.待核销3.已完成")
    private String orderStatus;
    @Excel(name = "订单总价", width = 30)
    @Excel(name = "订单总价", width = 30, sort = 5)
    @ApiModelProperty(value = "订单总价")
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal orderMoney;
    @Excel(name = "优惠券抵扣", width = 30)
    @Excel(name = "优惠券抵扣", width = 30, sort = 7)
    @ApiModelProperty(value = "优惠券抵扣")
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal discountMoney;
    @Excel(name = "应收金额", width = 30)
    @Excel(name = "应收金额", width = 30, sort = 6)
    @ApiModelProperty(value="应收金额")
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal receivableMoney;
@@ -59,7 +59,7 @@
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal payMoney;
    @Excel(name = "订单实收金额", width = 30)
    @Excel(name = "订单实收金额", width = 30, sort = 8)
    @ApiModelProperty(value = "实收金额")
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal receiveMoney;
@@ -69,12 +69,12 @@
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal unPaidMoney;
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "订单时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", sort = 9)
    @ApiModelProperty(value="创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    @Excel(name = "订单来源", width = 30)
    @Excel(name = "订单来源", width = 30, sort = 2)
    @ApiModelProperty(value="订单来源")
    private String orderFromDesc;
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberServiceRecordPageVo.java
@@ -22,28 +22,27 @@
    @ApiModelProperty(value="服务类型1.周期2.服务3.体验")
    private Integer serviceType;
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "服务时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", sort = 1)
    @ApiModelProperty(value="创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    @Excel(name = "服务商户id", width = 30)
    @ApiModelProperty(value="服务商户id")
    private Long shopId;
    @Excel(name = "服务商户", width = 30)
    @Excel(name = "服务商户", width = 30, sort = 2)
    @ApiModelProperty(value="服务商户")
    private String shopName;
    @Excel(name = "服务商品名称", width = 30)
    @Excel(name = "服务商品名称", width = 30, sort = 3)
    @ApiModelProperty(value="服务商品名称")
    private String consumerGoodsName;
    @Excel(name = "服务次数", width = 30)
    @Excel(name = "服务次数", width = 30, sort = 4)
    @ApiModelProperty(value="服务次数")
    private Integer serviceNum;
    @Excel(name = "剩余次数", width = 30)
    @Excel(name = "剩余次数", width = 30, sort = 5)
    @ApiModelProperty(value="剩余次数")
    private Integer surpNum;
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtShopAllOrderPageVo.java
@@ -22,45 +22,45 @@
    @ApiModelProperty(value="订单id")
    private String orderId;
    @Excel(name = "订单编号", width = 30)
    @Excel(name = "订单号", width = 30, sort = 1)
    @ApiModelProperty(value="订单编号")
    private String orderNo;
    @ApiModelProperty(value = "用户id")
    private Long userId;
    @Excel(name = "客户信息", width = 30)
    @Excel(name = "客户信息", width = 30, sort = 2)
    @ApiModelProperty(value = "客户信息")
    private String userInfo;
    @ApiModelProperty(value="订单商品列表")
    private List<MgtOrderGoodsPageVo> mgtOrderGoodsPageVoList;
    @Excel(name = "商品信息", width = 30)
    @Excel(name = "商品信息", width = 30, sort = 3)
    @ApiModelProperty(value="商品信息")
    private String goodsInfo;
    @Excel(name = "订单金额", width = 30)
    @Excel(name = "订单金额", width = 30, sort = 4)
    @ApiModelProperty(value="订单金额")
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal orderMoney;
    @Excel(name = "优惠金额", width = 30)
    @Excel(name = "优惠金额", width = 30, sort = 5)
    @ApiModelProperty(value="优惠金额")
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal discountMoney;
    @Excel(name = "应付金额", width = 30)
    @Excel(name = "应收金额", width = 30, sort = 6)
    @ApiModelProperty(value="应付金额")
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal receivableMoney;
    @Excel(name = "订单实际支付金额", width = 30)
    @Excel(name = "订单实收金额", width = 30, sort = 7)
    @ApiModelProperty(value="订单实际支付金额")
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal payMoney;
    @Excel(name = "订单来源", width = 30)
    @Excel(name = "订单来源", width = 30, sort = 8)
    @ApiModelProperty(value="订单来源")
    private String orderFrom;
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtShopOrderPageVo.java
@@ -24,18 +24,18 @@
    @ApiModelProperty(value="订单id")
    private String orderId;
    @Excel(name = "订单编号", width = 30)
    @Excel(name = "订单号", width = 30, sort = 1)
    @ApiModelProperty(value="订单编号")
    private String orderNo;
    @ApiModelProperty(value = "用户id")
    private Long userId;
    @Excel(name = "用户昵称", width = 30)
    @Excel(name = "用户昵称", width = 30, sort = 2)
    @ApiModelProperty(value = "用户昵称")
    private String nickName;
    @Excel(name = "用户姓名", width = 30)
    @Excel(name = "用户姓名", width = 30, sort = 3)
    @ApiModelProperty(value = "用户姓名")
    private String userName;
@@ -46,52 +46,52 @@
    @ApiModelProperty(value="订单商品列表")
    private List<MgtOrderGoodsPageVo> mgtOrderGoodsPageVoList;
    @Excel(name = "商品信息", width = 30)
    @Excel(name = "商品信息", width = 30, sort = 4)
    @ApiModelProperty(value="商品信息")
    private String goodsInfo;
    @Excel(name = "订单金额", width = 30)
    @Excel(name = "订单金额", width = 30, sort = 5)
    @ApiModelProperty(value="订单金额")
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal orderMoney;
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "订单提交时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", sort = 8)
    @ApiModelProperty(value="创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    @Excel(name = "优惠金额", width = 30)
    @Excel(name = "优惠金额", width = 30, sort = 6)
    @ApiModelProperty(value="优惠金额")
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal discountMoney;
    @Excel(name = "应付金额", width = 30)
    @Excel(name = "应付金额", width = 30, sort = 7)
    @ApiModelProperty(value="应付金额")
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal receivableMoney;
    @Excel(name = "订单实际支付金额", width = 30)
    @Excel(name = "订单已付金额", width = 30, sort = 9)
    @ApiModelProperty(value="订单实际支付金额")
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal payMoney;
    @Excel(name = "订单未支付金额", width = 30)
    @Excel(name = "剩余金额", width = 30, sort = 10)
    @ApiModelProperty(value="订单未支付金额")
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal unPaidMoney;
    @Excel(name = "订单来源", width = 30)
    @Excel(name = "订单来源", width = 30, sort = 11)
    @ApiModelProperty(value="订单来源")
    private String orderFrom;
    @ApiModelProperty(value="核销店铺id")
    private Long shopId;
    @Excel(name = "核销店铺", width = 30)
    @Excel(name = "核销店铺", width = 30, sort = 12)
    @ApiModelProperty(value="核销店铺")
    private String shopName;
    @Excel(name = "核销时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "核销时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", sort = 13)
    @ApiModelProperty(value="核销时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date verifyTime;
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -164,7 +164,7 @@
                .collect(Collectors.toMap(Goods::getGoodsId, Function.identity()));
        Boolean haveDeposit = false;
        for (Goods goods : goodsList) {
            if (goods.getSubscription() != null && goods.getSubscription().compareTo(BigDecimal.ZERO) > 0) {
            if (goods.getSubscriptionFlag()==1&&goods.getSubscription() != null && goods.getSubscription().compareTo(BigDecimal.ZERO) > 0) {
                haveDeposit = true;
            }
        }
@@ -219,6 +219,7 @@
            appSureOrderGoodsVo.setGoodsName(goods.getGoodsName());
            appSureOrderGoodsVo.setGoodsIntroduction(goods.getGoodsIntroduction());
            appSureOrderGoodsVo.setGoodsType(goods.getGoodsType());
            appSureOrderGoodsVo.setGoodsTag(goods.getGoodsTags());
            // 获取商品图片
            goodsFile = remoteGoodsService.getGoodsFile(goodsId).getData();
            appSureOrderGoodsVo.setGoodsPicture(goodsFile.getFileUrl());
@@ -275,9 +276,9 @@
            appSureOrderGoodsVo.setGoodsTotalPrice(goodsTotalPrice);
            appSureOrderGoodsVo.setCouponDiscount(discountMoney);
            appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice);
            // 获取商品押金
            // 获取商品订金
            goodsDeposit = goods.getSubscription();
            if (goodsDeposit != null && goodsDeposit.compareTo(BigDecimal.ZERO) > 0) {
            if (goods.getSubscriptionFlag()==1 && goodsDeposit != null && goodsDeposit.compareTo(BigDecimal.ZERO) > 0) {
                goodsDeposit = goodsDeposit.multiply(buyNumBig);
            } else {
                if (haveDeposit) {
@@ -448,6 +449,7 @@
        appPanicBuyVo.setGoodsName(goods.getGoodsName());
        appPanicBuyVo.setGoodsIntroduction(goods.getGoodsIntroduction());
        appPanicBuyVo.setGoodsType(goods.getGoodsType());
        appPanicBuyVo.setGoodsTag(goods.getGoodsTags());
        //商品图片
        goodsFile = remoteGoodsService.getGoodsFile(goodsId).getData();
        appPanicBuyVo.setGoodsPicture(goodsFile.getFileUrl());
@@ -1301,6 +1303,9 @@
    public MerVerifyOrderVo verifyOrder(String orderId, Long shopId) {
        // 创建返回对象
        MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo();
        if(orderId.contains("+")){
            orderId = orderId.substring(0, orderId.indexOf("+"));
        }
        // 根据订单ID获取订单信息
        Order order = this.getById(orderId);
        if (order.getOrderStatus() != 2) {
@@ -1602,22 +1607,41 @@
    @Transactional
    public MerVerifyCouponVo sureVerifyCoupon(MerVerifyCouponDto merVerifyCouponDto) {
        MerVerifyCouponGetVo verifyCouponGetVo = remoteCouponService.getVerifyCoupon(merVerifyCouponDto.getMemberCouponId()).getData();
        MemberCoupon memberCoupon = verifyCouponGetVo.getMemberCoupon();
        ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyCouponDto.getUserId()).getData();
        if (!shopRelUserVo.getShopId().equals(verifyCouponGetVo.getMemberCoupon().getShopId())) {
        Long userId = verifyCouponGetVo.getUserId();
        Long shopId = shopRelUserVo.getShopId();
        Shop shop = remoteShopService.getShop(shopId).getData();
        // 调用remoteMemberService的getMember方法获取Member对象
        Member member = remoteMemberService.getMember(userId).getData();
        //如果是商户优惠券,验证商户一致
        if (memberCoupon.getCouponFrom() == 2 && !memberCoupon.getShopId().equals(shopId)) {
            if(!memberCoupon.getShopId().equals(member.getRelationShopId())){
            throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
        }
            if(memberCoupon.getShopId().equals(shopId)){
                throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
            }
        }
        //如果是平台优惠券,当用户绑定商户时验证商户一致
        if (memberCoupon.getCouponFrom() == 1 && member.getBindingFlag() == 1) {
            if(!memberCoupon.getShopId().equals(member.getRelationShopId())){
                throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
            }
            if(memberCoupon.getShopId().equals(shopId)){
                throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
            }
        }
        memberCoupon.setShopId(shopId);
        // 创建MerVerifyCouponVo对象
        MerVerifyCouponVo merVerifyCouponVo = new MerVerifyCouponVo();
        // 调用remoteCouponService的getVerifyCoupon方法获取MerVerifyCouponGetVo对象
        List<Goods> goodsList = verifyCouponGetVo.getGoodsList();
        Long userId = verifyCouponGetVo.getUserId();
        // 调用remoteMemberService的getMember方法获取Member对象
        Member member = remoteMemberService.getMember(userId).getData();
        merVerifyCouponVo.setUserName(member.getRealName());
        merVerifyCouponVo.setUserMobile(member.getMobile());
        merVerifyCouponVo.setCouponFrom(verifyCouponGetVo.getCouponFrom());
        merVerifyCouponVo.setCouponName(verifyCouponGetVo.getMemberCoupon().getCouponName());
        merVerifyCouponVo.setCreateTime(verifyCouponGetVo.getMemberCoupon().getReceiveTime());
        merVerifyCouponVo.setCouponName(memberCoupon.getCouponName());
        merVerifyCouponVo.setCreateTime(memberCoupon.getReceiveTime());
        // 将goodsList转换为MerCouponGoodsListVo列表,并设置相应属性
        List<MerCouponGoodsListVo> merCouponGoodsList = goodsList.stream()
                .map(goods -> {
@@ -1639,7 +1663,6 @@
                .collect(Collectors.toList());
        // 设置merVerifyCouponVo的goodsList属性为merCouponGoodsList
        merVerifyCouponVo.setGoodsList(merCouponGoodsList);
        MemberCoupon memberCoupon = verifyCouponGetVo.getMemberCoupon();
        //生成服务
        ConsumerGoods consumerGoods;
        String consumerGoodsId;
@@ -1680,8 +1703,19 @@
            consumerGoods.setSourceFrom(1);
            consumerGoodsList.add(consumerGoods);
        }
        remoteCouponService.useMemberCoupon(memberCoupon.getId());
        MerVerifyMemberCouponDto merVerifyMemberCouponDto = new MerVerifyMemberCouponDto();
        merVerifyMemberCouponDto.setCouponId(memberCoupon.getId());
        merVerifyMemberCouponDto.setShopId(shopId);
        remoteCouponService.sureMemberCoupon(merVerifyMemberCouponDto);
        consumerGoodsService.saveBatchConsumerGoods(consumerGoodsList);
        if (member.getBindingFlag() != 1) {
            AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto();
            appMemberBindingDto.setBindingFlag(1);
            appMemberBindingDto.setShopId(shop.getShopId());
            appMemberBindingDto.setShopName(shop.getShopName());
            appMemberBindingDto.setUserId(memberCoupon.getUserId());
            remoteMemberService.updateMemberBinding(appMemberBindingDto);
        }
        merVerifyCouponVo.setVerifyStatus(2);
        return merVerifyCouponVo;
    }
@@ -1703,38 +1737,32 @@
            throw new ServiceException(AppErrorConstant.COUPON_USED);
        }
        ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyPrizeDto.getUserId()).getData();
        Shop shop = remoteShopService.getShop(shopRelUserVo.getShopId()).getData();
        Long shopId = shopRelUserVo.getShopId();
        Shop shop = remoteShopService.getShop(shopId).getData();
        //平台奖品判断
        if (memberGiftRecord.getGiftFrom() == 1) {
            BirthdayCard birthdayCard = remoteMemberService.getBirthdayCard().getData();
            if(birthdayCard!=null){
            //判断生日活动状态
            if(birthdayCard!=null&&birthdayCard.getCardStatus()==1){
                shop = remoteShopService.getShop(shopId).getData();
                //判断指定区域全部店铺
                if(birthdayCard.getAreaFlag()==2&&birthdayCard.getShopFlag()==1&&!StringUtils.checkString(birthdayCard.getDesignatedArea(),shop.getShopCityCode())){
                    throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
                }
                //判断指定店铺
                if(birthdayCard.getShopFlag()==2&&!StringUtils.checkString(birthdayCard.getApplicableShop(),shop.getShopId().toString())){
                if(birthdayCard.getShopFlag()==2&&!StringUtils.checkString(birthdayCard.getApplicableShop(),shopId.toString())){
                    throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
                }
            }else{
                throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
                throw new ServiceException(AppErrorConstant.BIRTHDAY_CARD_ERROR);
            }
        }
        if (memberGiftRecord.getGiftFrom() == 2 && !memberGiftRecord.getShopId().equals(shop.getShopId())) {
        //商户奖品判断
        if (memberGiftRecord.getGiftFrom() == 2 && !memberGiftRecord.getShopId().equals(shopId)) {
            throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
        }
        Member member = remoteMemberService.getMember(memberGiftRecord.getUserId()).getData();
        if(member.getBindingFlag()==0){
            //绑定用户
            if(shop==null){
                shop = remoteShopService.getShop(shop.getShopId()).getData();
            }
            AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto();
            appMemberBindingDto.setBindingFlag(1);
            appMemberBindingDto.setShopId(shop.getShopId());
            appMemberBindingDto.setShopName(shop.getShopName());
            appMemberBindingDto.setUserId(memberGiftRecord.getUserId());
            remoteMemberService.updateMemberBinding(appMemberBindingDto);
        }
        merVerifyAwardVo.setUserName(member.getRealName());
        merVerifyAwardVo.setUserMobile(member.getMobile());
        if (memberGiftRecord.getGiftFrom() == 1) {
@@ -1799,9 +1827,9 @@
        if (member.getBindingFlag() != 1) {
            AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto();
            appMemberBindingDto.setBindingFlag(1);
            appMemberBindingDto.setShopId(merVerifyPrizeDto.getShopId());
            appMemberBindingDto.setShopId(shop.getShopId());
            appMemberBindingDto.setShopName(shop.getShopName());
            appMemberBindingDto.setUserId(merVerifyPrizeDto.getUserId());
            appMemberBindingDto.setUserId(memberGiftRecord.getUserId());
            remoteMemberService.updateMemberBinding(appMemberBindingDto);
        }
        merVerifyAwardVo.setPrizeId(merVerifyPrizeDto.getPrizeId());
@@ -3192,17 +3220,28 @@
        } else if (couponStatus != 1) {
            throw new ServiceException(AppErrorConstant.COUPON_NO_FIND);
        }
        Long userId = verifyCouponGetVo.getUserId();
        Member member = remoteMemberService.getMember(userId).getData();
        //如果是商户优惠券,验证商户一致
        if (memberCoupon.getCouponFrom() == 2 && !memberCoupon.getShopId().equals(shopId)) {
            if(!memberCoupon.getShopId().equals(member.getRelationShopId())){
            throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
        }
        //如果是平台优惠券
        if (memberCoupon.getCouponFrom() == 1 && memberCoupon.getShopId() == null) {
            memberCoupon.setShopId(shopId);
            if(memberCoupon.getShopId().equals(shopId)){
                throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
            }
        }
        //如果是平台优惠券,当用户绑定商户时验证商户一致
        if (memberCoupon.getCouponFrom() == 1 && member.getBindingFlag() == 1) {
            if(!memberCoupon.getShopId().equals(member.getRelationShopId())){
                throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
            }
            if(memberCoupon.getShopId().equals(shopId)){
                throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
            }
        }
        List<Goods> goodsList = verifyCouponGetVo.getGoodsList();
        Long userId = verifyCouponGetVo.getUserId();
        // 调用remoteMemberService的getMember方法获取Member对象
        Member member = remoteMemberService.getMember(userId).getData();
        merVerifyCouponVo.setUserName(member.getRealName());
        merVerifyCouponVo.setUserMobile(member.getMobile());
        merVerifyCouponVo.setCouponFrom(verifyCouponGetVo.getCouponFrom());
@@ -3252,9 +3291,17 @@
        }
        Shop shop = null;
        Member member = remoteMemberService.getMember(memberGiftRecord.getUserId()).getData();
        //判断是否在绑定店铺核销
        if(member.getBindingFlag()==1){
            if(!member.getRelationShopId().equals(shopId)){
                throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
            }
        }
        //平台奖品判断
        if (memberGiftRecord.getGiftFrom() == 1) {
            BirthdayCard birthdayCard = remoteMemberService.getBirthdayCard().getData();
            if(birthdayCard!=null){
            //判断生日活动状态
            if(birthdayCard!=null&&birthdayCard.getCardStatus()==1){
                shop = remoteShopService.getShop(shopId).getData();
                //判断指定区域全部店铺
                if(birthdayCard.getAreaFlag()==2&&birthdayCard.getShopFlag()==1&&!StringUtils.checkString(birthdayCard.getDesignatedArea(),shop.getShopCityCode())){
@@ -3265,13 +3312,13 @@
                    throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
                }
            }else{
                throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
                throw new ServiceException(AppErrorConstant.BIRTHDAY_CARD_ERROR);
            }
        }
        //商户奖品判断
        if (memberGiftRecord.getGiftFrom() == 2 && !memberGiftRecord.getShopId().equals(shopId)) {
            throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
        }
        merVerifyAwardVo.setUserName(member.getRealName());
        merVerifyAwardVo.setUserMobile(member.getMobile());
ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -36,7 +36,11 @@
        <result column="shopId" property="shopId" />
        <result column="orderFrom" property="orderFrom" />
        <result column="createTime" property="createTime" />
        <collection property="appUserOrderGoodsPageVoList" ofType="com.ruoyi.order.domain.vo.AppUserOrderGoodsPageVo">
        <collection property="appUserOrderGoodsPageVoList" ofType="com.ruoyi.order.domain.vo.AppUserOrderGoodsPageVo" select="listOrderGoodsByOrderId" column="orderId">
        </collection>
    </resultMap>
    <resultMap id="com.ruoyi.order.domain.vo.AppUserOrderGoodsPageVo" type="orderGoodsResultMap">
            <result column="orderGoodsId" property="orderGoodsId"/>
            <result column="goodsId" property="goodsId"/>
            <result column="goodsName" property="goodsName"/>
@@ -48,8 +52,9 @@
            <result column="goodsRealPrice" property="goodsRealPrice" />
            <result column="cycleNumFlag" property="cycleNumFlag" />
            <result column="serviceNum" property="serviceNum" />
        </collection>
    </resultMap>
    <resultMap id="merOrderResultMap" type="com.ruoyi.order.domain.vo.MerOrderPageVo">
        <result column="userId" property="userId"/>
@@ -263,17 +268,6 @@
        toc.receivable_money receivableMoney,
        toc.goods_num goodsNum,
        toc.shop_id shopId,
        tog.goods_id goodsId,
        tog.goods_name goodsName,
        tog.goods_introduction goodsIntroduction,
        tog.goods_picture goodsPicture,
        tog.order_goods_id orderGoodsId,
        tog.goods_type goodsType,
        tog.buy_num buyNum,
        tog.goods_price goodsPrice,
        tog.goods_total_money goodsRealPrice,
        tog.cycle_num_flag cycleNumFlag,
        tog.service_num serviceNum,
        toc.create_time createTime
        FROM t_order toc
        INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id
@@ -290,6 +284,23 @@
        ORDER BY toc.create_time DESC
    </select>
    <select id="listOrderGoodsByOrderId" resultMap="orderGoodsResultMap">
        SELECT
            tog.goods_id goodsId,
            tog.goods_name goodsName,
            tog.goods_introduction goodsIntroduction,
            tog.goods_picture goodsPicture,
            tog.order_goods_id orderGoodsId,
            tog.goods_type goodsType,
            tog.buy_num buyNum,
            tog.goods_price goodsPrice,
            tog.goods_total_money goodsRealPrice,
            tog.cycle_num_flag cycleNumFlag,
            tog.service_num serviceNum
        FROM t_order_goods tog
        WHERE tog.order_id = #{orderId}
    </select>
    <select id="pageMerMemberNoClearOrder" resultType="com.ruoyi.order.domain.vo.MerMemberNoClearOrderVo">
        SELECT
        toc.order_id orderId,
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/config/WxPayConfiguration.java
@@ -31,7 +31,9 @@
    payConfig.setSubAppId(StringUtils.trimToNull(this.properties.getSubAppId()));
    payConfig.setSubMchId(StringUtils.trimToNull(this.properties.getSubMchId()));
    payConfig.setKeyPath(StringUtils.trimToNull(this.properties.getKeyPath()));
    payConfig.setApiV3Key("J8v9JDHKJYDHW9bdk30o2bdjy6z9mn1A");
    payConfig.setPrivateKeyPath("/home/cert/apiclient_key.pem");
    payConfig.setPrivateCertPath("/home/cert/apiclient_cert.pem");
    // 可以指定是否使用沙箱环境
    payConfig.setUseSandboxEnv(false);
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java
@@ -1,8 +1,11 @@
package com.ruoyi.shop.controller.console;
import com.ruoyi.common.core.constant.CacheConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.bean.BeanUtils;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.shop.domain.pojo.shop.ShopAuthentication;
import com.ruoyi.shop.domain.pojo.shop.ShopProportion;
import com.ruoyi.shop.domain.pojo.shop.ShopRelUser;
@@ -69,6 +72,8 @@
    @Resource
    private ShopProportionService shopProportionService;
    @Resource
    private RedisService redisService;
    /**
     * 企业微信H5登录
     * @param qwUserDetail
@@ -85,6 +90,12 @@
        Long userId = shopStaff.getUserId();
        SysUser sysUser = remoteUserService.getSysUser(userId).getData();
        Optional.ofNullable(sysUser).orElseThrow(() -> new ServiceException("登录失败,未查询到用户"));
        Shop shop = shopService.getByShopId(shopStaff.getShopId());
        if(shop.getFrozenFlag()==1){
            String userKey = SecurityUtils.getUserKey();
            redisService.deleteObject(CacheConstants.LOGIN_TOKEN_KEY+userKey);
            throw new ServiceException("商户已被冻结",401);
        }
        // 构造登录返回信息
        QwH5LoginVo qwH5LoginVo = new QwH5LoginVo();
        qwH5LoginVo.setUserid(qwUserDetail.getUserid());
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtEditShopDto.java
@@ -129,9 +129,11 @@
    @ApiModelProperty(value="商户标签id 多个用,隔开")
    private String shopTagIds;
    @ApiModelProperty(value="关联用户id 多个用,隔开")
    private String relUserIds;
    @ApiModelProperty(value="商户封面")
    private String shopPicture;
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/AppNearbyShopVo.java
@@ -20,6 +20,9 @@
    @ApiModelProperty(value = "商户名称")
    private String shopName;
    @ApiModelProperty(value = "商户封面")
    private String shopPicture;
    @ApiModelProperty(value = "商户地址")
    private String shopAddress;
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopCertificatePageVo.java
@@ -1,5 +1,6 @@
package com.ruoyi.shop.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -31,6 +32,7 @@
    private Integer cerStatus;
    @ApiModelProperty(value = "提交时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    @ApiModelProperty(value = "商户名称")
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopInfoVo.java
@@ -133,6 +133,7 @@
    @ApiModelProperty(value="商户标签")
    private String shopTags;
    @ApiModelProperty(value="关联用户id 多个用,隔开")
    private String relUserIds;
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopPageVo.java
@@ -19,77 +19,81 @@
    @ApiModelProperty(value = "商户id")
    private Long shopId;
    @Excel(name = "签约时间", width = 30)
    @Excel(name = "签约时间", width = 30, sort = 1)
    @ApiModelProperty(value="签约时间")
    private String signTime;
    @Excel(name = "商户名称", width = 30)
    @Excel(name = "商户名称", width = 30, sort = 9)
    @ApiModelProperty(value="商户名称")
    private String shopName;
    @Excel(name = "商户编号", width = 30)
    @Excel(name = "商户编号", width = 30, sort = 2)
    @ApiModelProperty(value="商户编号")
    private String shopNumber;
    @Excel(name = "商户标签", width = 30)
    @Excel(name = "商户标签", width = 30, sort = 3)
    @ApiModelProperty(value="商户标签")
    private String shopTags;
    @ApiModelProperty(value="签约人id")
    private Long signUserId;
    @Excel(name = "签约员工", width = 30)
    @Excel(name = "签约员工", width = 30, sort = 4)
    @ApiModelProperty(value="签约员工")
    private String signUser;
    @Excel(name = "首提金额", width = 30)
    @Excel(name = "首提金额", width = 30, sort = 5)
    @ApiModelProperty(value="首提金额")
    private BigDecimal firstWithdraw;
    @ApiModelProperty(value="关联员工id")
    private Long belongUserId;
    @Excel(name = "关联员工", width = 30)
    @Excel(name = "关联员工", width = 30, sort = 6)
    @ApiModelProperty(value="关联员工")
    private String belongUser;
    @Excel(name = "关联部门", width = 30)
    @Excel(name = "关联部门", width = 30, sort = 7)
    @ApiModelProperty(value="关联部门")
    private String belongDept;
    @Excel(name = "来源渠道", width = 30)
    @Excel(name = "来源渠道", width = 30, sort = 8)
    @ApiModelProperty(value="来源渠道")
    private String shopSource;
    @Excel(name = "签约区域", width = 30)
    @Excel(name = "签约区域", width = 30, sort = 10)
    @ApiModelProperty(value="签约区域")
    private String signAreaName;
    @Excel(name = "合作期限", width = 30)
    @Excel(name = "合作期限", width = 30, sort = 11)
    @ApiModelProperty(value="合作期限")
    private String cooperationTime;
    @Excel(name = "店铺地址", width = 30)
    @Excel(name = "是否到期", width = 30, sort = 12)
    @ApiModelProperty(value="是否到期")
    private String deadlineFlag;
    @Excel(name = "店铺地址", width = 30, sort = 13)
    @ApiModelProperty(value="店铺地址")
    private String shopAddress;
    @Excel(name = "店主姓名", width = 30)
    @Excel(name = "店主姓名", width = 30, sort = 14)
    @ApiModelProperty(value="店主姓名")
    private String shopownerName;
    @Excel(name = "店主联系方式", width = 30)
    @Excel(name = "店主联系方式", width = 30, sort = 15)
    @ApiModelProperty(value="店主联系方式")
    private String shopownerPhone;
    @Excel(name = "商户状态", width = 30)
    @Excel(name = "商户状态", width = 30, sort = 18)
    @ApiModelProperty(value="商户状态-1删除0冻结1正常2终止合作")
    private String shopStatus;
    @Excel(name = "商户活动次数", width = 30)
    @Excel(name = "商户活动次数", width = 30, sort = 17)
    @ApiModelProperty(value="商户活动次数")
    private Integer shopActivityCount;
    @Excel(name = "店铺设置状态", width = 30)
    @Excel(name = "店铺设置状态", width = 30, sort = 16)
    @ApiModelProperty(value="店铺设置状态")
    private String shopCustomStatus;
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopSuggestPageVo.java
@@ -20,53 +20,53 @@
    @ApiModelProperty(value = "建议id")
    private Long suggestId;
    @Excel(name = "店铺名称", width = 30)
    @Excel(name = "店铺名称", width = 30, sort = 1)
    @ApiModelProperty(value = "店铺名称")
    private String shopName;
    @Excel(name = "商户类型", width = 30)
    @Excel(name = "商户类型", width = 30, sort = 2)
    @ApiModelProperty(value = "商户类型1.经销商2.代理商")
    private String shopType;
    @Excel(name = "店主姓名", width = 30)
    @Excel(name = "店长姓名", width = 30, sort = 3)
    @ApiModelProperty(value="店主姓名")
    private String shopownerName;
    @Excel(name = "店主联系方式", width = 30)
    @Excel(name = "手机号", width = 30, sort = 4)
    @ApiModelProperty(value="店主联系方式")
    private String shopownerPhone;
    @Excel(name = "建议内容", width = 30)
    @Excel(name = "建议内容", width = 30, sort = 5)
    @ApiModelProperty(value = "建议内容")
    private String suggestContent;
    @Excel(name = "回复内容", width = 30)
    @Excel(name = "回复内容", width = 30, sort = 6)
    @ApiModelProperty(value = "回复内容")
    private String replayContent;
    @Excel(name = "建议状态", width = 30)
    @Excel(name = "状态", width = 30, sort = 8)
    @ApiModelProperty(value = "建议状态")
    private String suggestStatus;
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "提交时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", sort = 7)
    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    @Excel(name = "回复人姓名", width = 30)
    @Excel(name = "回复人", width = 30, sort = 9)
    @ApiModelProperty(value = "回复人姓名")
    private String replayUserName;
    @Excel(name = "回复时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "回复时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", sort = 10)
    @ApiModelProperty(value = "回复时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date replayTime;
    @Excel(name = "平台响应时间", width = 30)
    @Excel(name = "响应时间", width = 30, sort = 11)
    @ApiModelProperty(value = "平台响应时间")
    private String responseTime;
    @Excel(name = "建议标签", width = 30)
    @Excel(name = "建议标签", width = 30, sort = 12)
    @ApiModelProperty(value = "建议标签")
    private String suggestTags;
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
@@ -170,6 +170,9 @@
        //验证关联账号唯一
        String relUserIds = mgtEditShopDto.getRelUserIds();
        if(StringUtils.isNotBlank(relUserIds)) {
            if(relUserIds.startsWith(",")){
                relUserIds = relUserIds.substring(1);
            }
            String[] relUserIdArray = relUserIds.split(",");
            ShopRelUser shopRelUser;
            Long userId;
@@ -727,6 +730,20 @@
            appMemberBindingDto.setBindingFlag(0);
            remoteMemberService.updateMemberBinding(appMemberBindingDto);
        }
        //商品图片
        List<ShopFile> shopFileList = shopFileService.listShopFileByShopId(shop.getShopId());
        String shopPicture = null;
        StringJoiner shopBanners = new StringJoiner(",");
        if(shopFileList!=null&&!shopFileList.isEmpty()){
            for(ShopFile shopFile : shopFileList){
                if(shopFile.getFileType()==1){
                    shopPicture = shopFile.getFileUrl();
                }else{
                    shopBanners.add(shopFile.getFileUrl());
                }
            }
        }
        appNearbyShopVo.setShopPicture(shopPicture);
        appNearbyShopVo.setShopId(shop.getShopId());
        appNearbyShopVo.setShopName(shop.getShopName());
        appNearbyShopVo.setShopAddress(shop.getShopAreaName()+shop.getShopAddress());
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/WechatPayUtils.java
@@ -48,29 +48,30 @@
        }
        //营业执照
        ApplymentsRequest.BusinessLicenseInfo business_license_info = new ApplymentsRequest.BusinessLicenseInfo();
        InputStream blImageIO = OBSUploadUtils.getOSSInputStream(shopAuthentication.getBlImage());
        ImageUploadResult blImageIR = merchantMediaService.imageUploadV3(blImageIO,applyNumber+"blimage");
        InputStream blImageIO = OBSUploadUtils.getOSSInputStream(shopAuthentication.getBlImage().replace("https://hongruitang.oss-cn-beijing.aliyuncs.com/",""));
        ImageUploadResult blImageIR = merchantMediaService.imageUploadV3(blImageIO,applyNumber+"blimage.jpg");
        business_license_info.setBusinessLicenseCopy(blImageIR.getMediaId());
        blImageIO.close();
        business_license_info.setBusinessLicenseNumber(shopAuthentication.getBlNumber());
        business_license_info.setMerchantName(shopAuthentication.getBlShopName());
        business_license_info.setLegalPerson(shopAuthentication.getBlCorporateName());
        business_license_info.setCompanyAddress(shopAuthentication.getBlRegisteredAddress());
        business_license_info.setBusinessTime(shopAuthentication.getBlBusinessDeanline());
        business_license_info.setBusinessTime("[\"2023-05-08\",\"长期\"]");
        request.setBusinessLicenseInfo(business_license_info);
        //法人证件
        request.setIdDocType("IDENTIFICATION_TYPE_MAINLAND_IDCARD");
        ApplymentsRequest.IdCardInfo id_card_info = new ApplymentsRequest.IdCardInfo();
        InputStream lpIcFrontIO = OBSUploadUtils.getOSSInputStream(shopAuthentication.getLpIcFront());
        ImageUploadResult lpIcFrontIR = merchantMediaService.imageUploadV3(lpIcFrontIO,applyNumber+"lpIcFront");
        InputStream lpIcFrontIO = OBSUploadUtils.getOSSInputStream(shopAuthentication.getLpIcFront().replace("https://hongruitang.oss-cn-beijing.aliyuncs.com/",""));
        ImageUploadResult lpIcFrontIR = merchantMediaService.imageUploadV3(lpIcFrontIO,applyNumber+"lpIcFront.jpg");
        id_card_info.setIdCardCopy(lpIcFrontIR.getMediaId());
        lpIcFrontIO.close();
        InputStream lpIcBackIO = OBSUploadUtils.getOSSInputStream(shopAuthentication.getLpIcBack());
        ImageUploadResult lpIcBackIR = merchantMediaService.imageUploadV3(lpIcBackIO,applyNumber+"lpIcBack");
        InputStream lpIcBackIO = OBSUploadUtils.getOSSInputStream(shopAuthentication.getLpIcBack().replace("https://hongruitang.oss-cn-beijing.aliyuncs.com/",""));
        ImageUploadResult lpIcBackIR = merchantMediaService.imageUploadV3(lpIcBackIO,applyNumber+"lpIcBack.jpg");
        id_card_info.setIdCardNational(lpIcBackIR.getMediaId());
        lpIcBackIO.close();
        id_card_info.setIdCardName(shopAuthentication.getLpCorporateName());
        id_card_info.setIdCardNumber(shopAuthentication.getLpIdCard());
        id_card_info.setIdCardAddress("四川省泸州市江阳区桃园路1号2号楼4单元1号");
        id_card_info.setIdCardValidTimeBegin(shopAuthentication.getLpIcStartDate());
        id_card_info.setIdCardValidTime(shopAuthentication.getLpIcEndDate());
        request.setIdCardInfo(id_card_info);
@@ -84,12 +85,12 @@
                List<ApplymentsRequest.UboInfo> ubo_info_list = new ArrayList<>();
                ApplymentsRequest.UboInfo uboInfo = new ApplymentsRequest.UboInfo();
                uboInfo.setUboIdDocType("IDENTIFICATION_TYPE_MAINLAND_IDCARD");
                InputStream uboIcFrontIO = OBSUploadUtils.getOSSInputStream(shopAuthentication.getUboIcFront());
                ImageUploadResult uboIcFrontIR = merchantMediaService.imageUploadV3(uboIcFrontIO,applyNumber+"uboIcFront");
                InputStream uboIcFrontIO = OBSUploadUtils.getOSSInputStream(shopAuthentication.getUboIcFront().replace("https://hongruitang.oss-cn-beijing.aliyuncs.com/",""));
                ImageUploadResult uboIcFrontIR = merchantMediaService.imageUploadV3(uboIcFrontIO,applyNumber+"uboIcFront.jpg");
                uboInfo.setUboIdDocCopy(uboIcFrontIR.getMediaId());
                uboIcFrontIO.close();
                InputStream uboIcBackIO = OBSUploadUtils.getOSSInputStream(shopAuthentication.getUboIcBack());
                ImageUploadResult uboIcBackIR = merchantMediaService.imageUploadV3(uboIcBackIO,applyNumber+"uboIcBack");
                InputStream uboIcBackIO = OBSUploadUtils.getOSSInputStream(shopAuthentication.getUboIcBack().replace("https://hongruitang.oss-cn-beijing.aliyuncs.com/",""));
                ImageUploadResult uboIcBackIR = merchantMediaService.imageUploadV3(uboIcBackIO,applyNumber+"uboIcBack.jpg");
                uboInfo.setUboIdDocCopyBack(uboIcBackIR.getMediaId());
                uboIcBackIO.close();
                uboInfo.setUboIdDocName(shopAuthentication.getUboName());
@@ -117,14 +118,15 @@
        contactInfo.setContactType("65");
        contactInfo.setContactName(shopAuthentication.getLpCorporateName());
        contactInfo.setContactIdCardNumber(shopAuthentication.getLpIdCard());
        contactInfo.setMobilePhone(shopAuthentication.getLpMobilePhone());
        contactInfo.setContactEmail(shopAuthentication.getLpContactEmail());
        contactInfo.setMobilePhone("13882237106");
        contactInfo.setContactEmail("343695869@qq.com");
        request.setContactInfo(contactInfo);
        //店铺信息
        ApplymentsRequest.SalesSceneInfo salesSceneInfo = new ApplymentsRequest.SalesSceneInfo();
        salesSceneInfo.setStoreName(shop.getShopName());
        salesSceneInfo.setStoreQrCode("https://wxapp.hhhrt.cn/mini/shop?id="+shop.getShopId());
        salesSceneInfo.setMiniProgramSubAppid("wxb7f0ea286fc4e535");
        InputStream storeQrCodeIO = OBSUploadUtils.getOSSInputStream(shop.getShopCode().replace("https://hongruitang.oss-cn-beijing.aliyuncs.com/",""));
        ImageUploadResult storeQrCodeIR = merchantMediaService.imageUploadV3(storeQrCodeIO,applyNumber+"storeQrCode.jpg");
        salesSceneInfo.setStoreQrCode(storeQrCodeIR.getMediaId());
        request.setSalesSceneInfo(salesSceneInfo);
        request.setMerchantShortname(shop.getShopName());
        request.setBusinessAdditionPics(shopAuthentication.getBaPics());
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopCertificateMapper.xml
@@ -107,6 +107,7 @@
        ts.shopowner_phone shopownerPhone
        FROM t_shop_certificate tsc
        INNER JOIN t_shop ts ON tsc.shop_id = ts.shop_id
        WHERE tsc.del_flag = 0 AND ts.del_flag = 0
        <if test="param.cerStatus != null">
            AND tsc.cer_status = #{param.cerStatus}
        </if>
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml
@@ -308,7 +308,8 @@
        tsm.shop_marketing_total shopActivityCount,
        ts.shop_custom_status shopCustomStatus,
        ts.frozen_flag frozenFlag,
        ts.cooperative_flag cooperativeFlag
        ts.cooperative_flag cooperativeFlag,
        CASE ts.cooperative_flag WHEN 0 THEN "否" WHEN 1 THEN "是" END deadlineFlag
        FROM t_shop ts
        LEFT JOIN t_shop_marketing tsm ON tsm.shop_id = ts.shop_id
        WHERE ts.del_flag = 0
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/AgencyTaskRecordMapper.xml
@@ -26,7 +26,7 @@
        tmtr.call_phone callPhone
        FROM t_agency_task tmt
        INNER JOIN t_agency_task_record tmtr ON tmtr.task_id = tmt.task_id
        WHERE tmt.del_flag = 0 AND tmt.shop_id = #{param.shopId} AND tmt.agency_id = #{param.agencyId}
        WHERE tmt.del_flag = 0 AND tmtr.del_flag = 0 AND tmt.shop_id = #{param.shopId} AND tmt.agency_id = #{param.agencyId}
        ORDER BY tmtr.create_time DESC
    </select>
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskRecordMapper.xml
@@ -89,7 +89,7 @@
        tmtr.call_phone callPhone
        FROM t_member_task tmt
        INNER JOIN t_member_task_record tmtr ON tmtr.task_id = tmt.task_id
        WHERE tmt.del_flag = 0 AND tmt.shop_id = #{param.shopId} AND tmt.user_id = #{param.memberUserId}
        WHERE tmt.del_flag = 0 AND tmtr.del_flag = 0 AND tmt.shop_id = #{param.shopId} AND tmt.user_id = #{param.memberUserId}
        ORDER BY tmtr.create_time DESC
    </select>
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/ShopTaskRecordMapper.xml
@@ -32,7 +32,7 @@
            tmtr.call_phone callPhone
        FROM t_shop_task tmt
                 INNER JOIN t_shop_task_record tmtr ON tmtr.task_id = tmt.task_id
        WHERE tmt.del_flag = 0 AND tmt.shop_id = #{param.shopId} AND tmtr.user_id = #{param.userId}
        WHERE tmt.del_flag = 0 AND tmtr.del_flag = 0 AND tmt.shop_id = #{param.shopId} AND tmtr.user_id = #{param.userId}
        ORDER BY tmtr.create_time DESC
    </select>
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/staff/SysStaff.java
@@ -72,6 +72,9 @@
    @TableField("head_flag")
    private String headFlag;
    @TableField("wx_user_id")
    private String wxUserId;
    @Override
    protected Serializable pkVal() {
        return this.staffId;
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtStaffSuggestPageVo.java
@@ -19,39 +19,39 @@
    @ApiModelProperty(value = "建议id")
    private Long suggestId;
    @Excel(name = "员工姓名", width = 30)
    @Excel(name = "员工姓名", width = 30, sort = 1)
    @ApiModelProperty(value = "员工姓名")
    private String staffName;
    @Excel(name = "部门名称", width = 30)
    @Excel(name = "部门名称", width = 30, sort = 2)
    @ApiModelProperty(value = "部门名称")
    private String deptName;
    @Excel(name = "手机号", width = 30)
    @Excel(name = "员工手机号", width = 30, sort = 3)
    @ApiModelProperty(value="手机号")
    private String mobile;
    @Excel(name = "建议内容", width = 30)
    @Excel(name = "建议内容", width = 30, sort = 4)
    @ApiModelProperty(value = "建议内容")
    private String suggestContent;
    @Excel(name = "回复内容", width = 30)
    @Excel(name = "回复内容", width = 30, sort = 5)
    @ApiModelProperty(value = "回复内容")
    private String replayContent;
    @Excel(name = "建议状态", width = 30)
    @Excel(name = "状态", width = 30, sort = 6)
    @ApiModelProperty(value = "建议状态")
    private String suggestStatus;
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "提交时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", sort = 7)
    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    @Excel(name = "回复人姓名", width = 30)
    @Excel(name = "回复人", width = 30, sort = 8)
    @ApiModelProperty(value = "回复人姓名")
    private String replayUserName;
    @Excel(name = "回复时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "回复时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", sort = 9)
    @ApiModelProperty(value = "回复时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date replayTime;
    @Excel(name = "平台响应时间", width = 30)
    @Excel(name = "响应时间", width = 30, sort = 10)
    @ApiModelProperty(value = "平台响应时间")
    private String responseTime;
    @Excel(name = "建议标签", width = 30)
    @Excel(name = "标签", width = 30, sort = 11)
    @ApiModelProperty(value = "建议标签")
    private String suggestTags;
}