bug
jiangqs
2023-08-16 2e9c442b4961dc30423e8b8fa1361c45e63ef620
bug
17个文件已修改
1个文件已添加
311 ■■■■ 已修改文件
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtCouponEditDto.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayConfiguration.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayProperties.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberNoClearOrderVo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/config/WxPayConfiguration.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/config/WxPayProperties.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtShopAuthDto.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopAuthGetVo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/resources/bootstrap.yml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/pom.xml 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/QYWXCallBackController.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java
@@ -80,6 +80,8 @@
    String VERIFY_SHOP_ERROR = "该核销码不适用于本店铺";
    String BLINDING_VERIFY_SHOP_ERROR = "绑定的店铺和优惠券所属店铺不一致";
    String ACTIVITY_NO_START = "活动还未开始";
    String ACTIVITY_END = "活动已经结束";
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtCouponEditDto.java
@@ -84,4 +84,7 @@
    @ApiModelProperty(value = "关联用户id集合")
    private List<Long> relUserIdList;
    @ApiModelProperty(value = "宣传海报")
    private String propagandaPoster;
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java
@@ -300,6 +300,7 @@
        coupon.setRelationType(mgtCouponEditDto.getRelationType());
        coupon.setRelationActivityType(mgtCouponEditDto.getRelationActivityType());
        coupon.setRelationActivityId(mgtCouponEditDto.getRelationActivityId());
        coupon.setPropagandaPoster(mgtCouponEditDto.getPropagandaPoster());
        //判断是否指定商品
        if(coupon.getUseScope()==2&&!mgtCouponEditDto.getRelGoodsIdList().isEmpty()){
            List<String> relGoodsIdList = mgtCouponEditDto.getRelGoodsIdList();
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayConfiguration.java
@@ -1,9 +1,14 @@
package com.ruoyi.order.config;
import com.github.binarywang.wxpay.config.WxPayConfig;
import com.github.binarywang.wxpay.service.WxPayService;
import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl;
import com.ruoyi.common.core.utils.StringUtils;
import lombok.AllArgsConstructor;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
@@ -24,16 +29,19 @@
    return PLATFORM_TY_MAC_ID;
  }
  /*@Bean
  @Bean
  @ConditionalOnMissingBean
  public WxPayService wxService() {
    *//*WxPayConfig payConfig = new WxPayConfig();
    WxPayConfig payConfig = new WxPayConfig();
    payConfig.setAppId(StringUtils.trimToNull(this.properties.getAppId()));
    payConfig.setMchId(StringUtils.trimToNull(this.properties.getMchId()));
    payConfig.setMchKey(StringUtils.trimToNull(this.properties.getMchKey()));
    payConfig.setSubAppId(StringUtils.trimToNull(this.properties.getSubAppId()));
    payConfig.setSubMchId(StringUtils.trimToNull(this.properties.getSubMchId()));
    payConfig.setKeyPath(StringUtils.trimToNull(this.properties.getKeyPath()));
    payConfig.setApiV3Key(StringUtils.trimToNull(this.properties.getApiV3Key()));
    payConfig.setPrivateKeyPath(StringUtils.trimToNull(this.properties.getPrivateKeyPath()));
    payConfig.setPrivateCertPath(StringUtils.trimToNull(this.properties.getPrivateCertPath()));
    // 平台特约商户号
    PLATFORM_TY_MAC_ID = this.properties.getPlatformTyMacId();
@@ -43,7 +51,7 @@
    WxPayService wxPayService = new WxPayServiceImpl();
    wxPayService.setConfig(payConfig);
    return wxPayService;*//*
  }*/
    return wxPayService;
  }
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayProperties.java
@@ -46,4 +46,9 @@
   */
  private String keyPath;
  private String apiV3Key;
  private String privateKeyPath;
  private String privateCertPath;
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java
@@ -1,9 +1,34 @@
package com.ruoyi.order.controller.miniapp;
import com.github.binarywang.wxpay.bean.ecommerce.*;
import com.github.binarywang.wxpay.bean.notify.WxPayNotifyV3Response;
import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingNotifyData;
import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingNotifyResult;
import com.github.binarywang.wxpay.exception.WxPayException;
import com.github.binarywang.wxpay.service.ProfitSharingV3Service;
import com.github.binarywang.wxpay.service.WxPayService;
import com.github.binarywang.wxpay.v3.auth.Verifier;
import com.github.binarywang.wxpay.v3.util.AesUtils;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.order.domain.vo.ProfitSharingNotifyNewResult;
import com.ruoyi.order.enums.WxPayNotifyEventTypeEnum;
import com.ruoyi.order.service.account.BackMessageService;
import com.ruoyi.order.service.order.OrderService;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.security.GeneralSecurityException;
import java.util.Map;
import java.util.Objects;
/**
 * @program: ruoyi
@@ -16,7 +41,7 @@
@RequestMapping("/app/notify")
public class NotifyController extends BaseController {
    /*public static final String WECHAT_PAY_SERIAL = "Wechatpay-Serial";
    public static final String WECHAT_PAY_SERIAL = "Wechatpay-Serial";
    public static final String WECHAT_PAY_SIGNATURE = "Wechatpay-Signature";
    public static final String WECHAT_PAY_TIMESTAMP = "Wechatpay-Timestamp";
    public static final String WECHAT_PAY_NONCE = "Wechatpay-Nonce";
@@ -144,5 +169,5 @@
        signatureHeader.setNonce(response.getHeader(WECHAT_PAY_NONCE));
        signatureHeader.setTimeStamp(response.getHeader(WECHAT_PAY_TIMESTAMP));
        return signatureHeader;
    }*/
    }
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberNoClearOrderVo.java
@@ -32,6 +32,9 @@
    @ApiModelProperty(value = "优惠券抵扣")
    private BigDecimal couponDiscount;
    @ApiModelProperty(value = "支付方式1.全款2.订金")
    private Integer payType;
    @ApiModelProperty(value="应收金额")
    private BigDecimal receivableMoney;
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -1506,6 +1506,7 @@
        }
        //创建支付记录
        if(merVerifyOrderDto.getRelPayMoney().compareTo(BigDecimal.ZERO)>0){
        PayRecord payRecord = new PayRecord();
        payRecord.setDelFlag(0);
        payRecord.setOrderId(order.getOrderId());
@@ -1513,7 +1514,7 @@
        payRecord.setPayTime(new Date());
        payRecord.setPayType(merVerifyOrderDto.getPayType());
        payRecordService.save(payRecord);
        }
        //submitProfitSharing(orderId, order.getOrderNo(), order.getShopId(), order.getOrderMoney());
        return merVerifyOrderVo;
@@ -1626,7 +1627,7 @@
        //如果是平台优惠券,当用户绑定商户时验证商户一致
        if (memberCoupon.getCouponFrom() == 1 && member.getBindingFlag() == 1) {
            if(!memberCoupon.getShopId().equals(member.getRelationShopId())){
                throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
                throw new ServiceException(AppErrorConstant.BLINDING_VERIFY_SHOP_ERROR);
            }
            if(memberCoupon.getShopId().equals(shopId)){
                throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
@@ -1848,15 +1849,17 @@
    @Override
    public List<MerMemberNoClearOrderVo> pageMerMemberNoClearOrder(Page page, MerMemberNoClearOrderDto merMemberNoClearOrderDto) {
        List<MerMemberNoClearOrderVo> merMemberNoClearOrderVoList = orderMapper.pageMerMemberNoClearOrder(page, merMemberNoClearOrderDto.getMemberUserId());
        /*if (merMemberNoClearOrderVoList != null && !merMemberNoClearOrderVoList.isEmpty()) {
        if (merMemberNoClearOrderVoList != null && !merMemberNoClearOrderVoList.isEmpty()) {
            BigDecimal zeroBig = new BigDecimal("0.00");
            for (MerMemberNoClearOrderVo merMemberNoClearOrderVo : merMemberNoClearOrderVoList) {
                merMemberNoClearOrderVo.setUnPaidMoney(merMemberNoClearOrderVo.getReceivableMoney().subtract(merMemberNoClearOrderVo.getPayMoney()));
                if (merMemberNoClearOrderVo.getUnPaidMoney() == null) {
                    merMemberNoClearOrderVo.setUnPaidMoney(zeroBig);
                }
                if(merMemberNoClearOrderVo.getUnPaidMoney().compareTo(zeroBig)<0){
                    merMemberNoClearOrderVo.setUnPaidMoney(zeroBig);
            }
        }*/
            }
        }
        return merMemberNoClearOrderVoList;
    }
@@ -1975,6 +1978,8 @@
        ConsumerGoods consumerGoods;
        String consumerGoodsId;
        List<ConsumerGoods> consumerGoodsList = new ArrayList<>();
        //使用优惠券
        StringJoiner memberCouponSJ = new StringJoiner(",");
        for (AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList) {
            goodsId = appBuyGoodsDto.getGoodsId();
            memberCouponId = appBuyGoodsDto.getMemberCouponId();
@@ -2009,7 +2014,7 @@
                    } else if (couponType == 2 && appMemberCouponVo.getDiscountPercent() != null) {
                        discountPercent = appMemberCouponVo.getDiscountPercent();
                        goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN, 2, BigDecimal.ROUND_HALF_UP);
                        discountMoney = goodsRealPrice.subtract(goodsTotalPrice);
                        discountMoney = goodsTotalPrice.subtract(goodsRealPrice);
                    } else if (couponType == 3 && appMemberCouponVo.getDiscountMoney() != null) {
                        discountMoney = appMemberCouponVo.getDiscountMoney();
                        goodsRealPrice = goodsTotalPrice.subtract(discountMoney);
@@ -2018,6 +2023,7 @@
                        goodsRealPrice = BigDecimal.ZERO;
                        discountMoney = goodsTotalPrice.subtract(goodsRealPrice);
                    }
                    memberCouponSJ.add(memberCouponId);
                }
            }
            goodsDeposit = goods.getSubscription();
@@ -2169,6 +2175,10 @@
        this.save(order);
        orderGoodsService.saveBatch(orderGoodsList);
        consumerGoodsService.saveBatchConsumerGoods(consumerGoodsList);
        //减去优惠券
        if (StringUtils.isNotBlank(memberCouponSJ.toString())) {
            remoteCouponService.useMemberCoupon(memberCouponSJ.toString());
        }
        //用户未绑定则绑定商户
        Member member = remoteMemberService.getMember(userId).getData();
        if (member != null && member.getBindingFlag() != 1) {
@@ -2245,6 +2255,9 @@
                if (merOrderPageVo.getUnPaidMoney() == null) {
                    merOrderPageVo.setUnPaidMoney(zeroBig);
                }
                if(merOrderPageVo.getUnPaidMoney().compareTo(zeroBig)<0){
                    merOrderPageVo.setUnPaidMoney(zeroBig);
                }
            }
            MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
            mgtBaseBathDto.setIds(userIdSj.toString());
@@ -2276,6 +2289,9 @@
            BigDecimal zeroBig = new BigDecimal("0.00");
            for (MerMemberOrderVo merMemberNoClearOrderVo : merMemberNoClearOrderVoList) {
                if (merMemberNoClearOrderVo.getUnPaidMoney() == null) {
                    merMemberNoClearOrderVo.setUnPaidMoney(zeroBig);
                }
                if(merMemberNoClearOrderVo.getUnPaidMoney().compareTo(zeroBig)<0){
                    merMemberNoClearOrderVo.setUnPaidMoney(zeroBig);
                }
            }
@@ -3234,7 +3250,7 @@
        //如果是平台优惠券,当用户绑定商户时验证商户一致
        if (memberCoupon.getCouponFrom() == 1 && member.getBindingFlag() == 1) {
            if(!memberCoupon.getShopId().equals(member.getRelationShopId())){
                throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
                throw new ServiceException(AppErrorConstant.BLINDING_VERIFY_SHOP_ERROR);
            }
            if(memberCoupon.getShopId().equals(shopId)){
                throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
@@ -4490,6 +4506,9 @@
                if (merOrderPageVo.getUnPaidMoney() == null) {
                    merOrderPageVo.setUnPaidMoney(zeroBig);
                }
                if(merOrderPageVo.getUnPaidMoney().compareTo(zeroBig)<0){
                    merOrderPageVo.setUnPaidMoney(zeroBig);
                }
            }
            MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
            mgtBaseBathDto.setIds(userIdSj.toString());
ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml
@@ -34,4 +34,7 @@
    subAppId: #服务商模式下的子商户公众账号ID
    subMchId: #服务商模式下的子商户号
    keyPath: /home/cert/apiclient_cert.p12
    apiV3Key: J8v9JDHKJYDHW9bdk30o2bdjy6z9mn1A
    privateKeyPath: /home/cert/apiclient_key.pem
    privateCertPath: /home/cert/apiclient_cert.pem
ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -36,18 +36,25 @@
        <result column="shopId" property="shopId" />
        <result column="orderFrom" property="orderFrom" />
        <result column="createTime" property="createTime" />
        <result column="keyword" property="keyword"/>
        <collection property="appUserOrderGoodsPageVoList"
                    ofType="com.ruoyi.order.domain.vo.AppUserOrderGoodsPageVo"
                    select="listOrderGoodsByOrderId"
                    column="{orderId=orderId,keyword=keyword}">
                    column="{orderId=orderId}">
            <id column="orderGoodsId" property="orderGoodsId"/>
            <result column="goodsId" property="goodsId"/>
            <result column="goodsName" property="goodsName"/>
            <result column="goodsIntroduction" property="goodsIntroduction"/>
            <result column="goodsPicture" property="goodsPicture"/>
            <result column="goodsType" property="goodsType"/>
            <result column="buyNum" property="buyNum"/>
            <result column="goodsPrice" property="goodsPrice"/>
            <result column="goodsRealPrice" property="goodsRealPrice" />
            <result column="cycleNumFlag" property="cycleNumFlag" />
            <result column="serviceNum" property="serviceNum" />
        </collection>
    </resultMap>
    <resultMap id="com.ruoyi.order.domain.vo.AppUserOrderGoodsPageVo" type="orderGoodsResultMap">
    <!--<resultMap id="orderGoodsResultMap" type="com.ruoyi.order.domain.vo.AppUserOrderGoodsPageVo">
        <result column="orderGoodsId" property="orderGoodsId"/>
        <result column="goodsId" property="goodsId"/>
        <result column="goodsName" property="goodsName"/>
@@ -59,7 +66,7 @@
        <result column="goodsRealPrice" property="goodsRealPrice" />
        <result column="cycleNumFlag" property="cycleNumFlag" />
        <result column="serviceNum" property="serviceNum" />
    </resultMap>
    </resultMap>-->
@@ -80,7 +87,10 @@
        <result column="orderRemark" property="orderRemark" />
        <result column="orderFrom" property="orderFrom" />
        <result column="createTime" property="createTime" />
        <collection property="merOrderGoodsVoList" ofType="com.ruoyi.order.domain.vo.MerOrderGoodsPageVo">
        <collection property="merOrderGoodsVoList"
                    ofType="com.ruoyi.order.domain.vo.MerOrderGoodsPageVo"
                    select="listSimpleOrderGoodsByOrderId"
                    column="{orderId=orderId}">
            <result column="goodsName" property="goodsName"/>
            <result column="goodsType" property="goodsType"/>
            <result column="buyNum" property="buyNum"/>
@@ -100,7 +110,10 @@
        <result column="orderFrom" property="orderFrom" />
        <result column="orderFromDesc" property="orderFromDesc" />
        <result column="createTime" property="createTime" />
        <collection property="mgtOrderGoodsVoList" ofType="com.ruoyi.order.domain.vo.MgtOrderGoodsPageVo">
        <collection property="mgtOrderGoodsVoList"
                    ofType="com.ruoyi.order.domain.vo.MgtOrderGoodsPageVo"
                    select="listMgtSimpleOrderGoodsByOrderId"
                    column="{orderId=orderId}">
            <result column="goodsName" property="goodsName"/>
            <result column="buyNum" property="buyNum"/>
        </collection>
@@ -119,7 +132,10 @@
        <result column="orderFrom" property="orderFrom"/>
        <result column="shopId" property="shopId"/>
        <result column="verifyTime" property="verifyTime"/>
        <collection property="mgtOrderGoodsPageVoList" ofType="com.ruoyi.order.domain.vo.MgtOrderGoodsPageVo">
        <collection property="mgtOrderGoodsVoList"
                    ofType="com.ruoyi.order.domain.vo.MgtOrderGoodsPageVo"
                    select="listAllSimpleOrderGoodsByOrderId"
                    column="{orderId=orderId}">
            <result column="goodsName" property="goodsName"/>
            <result column="buyNum" property="buyNum"/>
        </collection>
@@ -135,7 +151,10 @@
        <result column="payMoney" property="payMoney"/>
        <result column="orderFrom" property="orderFrom"/>
        <result column="orderStatus" property="orderStatus"/>
        <collection property="mgtOrderGoodsPageVoList" ofType="com.ruoyi.order.domain.vo.MgtOrderGoodsPageVo">
        <collection property="mgtOrderGoodsVoList"
                    ofType="com.ruoyi.order.domain.vo.MgtOrderGoodsPageVo"
                    select="listAllSimpleOrderGoodsByOrderId"
                    column="{orderId=orderId">
            <result column="goodsName" property="goodsName"/>
            <result column="buyNum" property="buyNum"/>
        </collection>
@@ -275,8 +294,7 @@
        toc.receivable_money receivableMoney,
        toc.goods_num goodsNum,
        toc.shop_id shopId,
        toc.create_time createTime,
        #{param.keyword} as keyword
        toc.create_time createTime
        FROM t_order toc
        WHERE toc.del_flag = 0
        <if test="param.userId != null">
@@ -292,7 +310,7 @@
        ORDER BY toc.create_time DESC
    </select>
    <select id="listOrderGoodsByOrderId" resultMap="orderGoodsResultMap">
    <select id="listOrderGoodsByOrderId" resultType="com.ruoyi.order.domain.vo.AppUserOrderGoodsPageVo">
        SELECT
            tog.goods_id goodsId,
            tog.goods_name goodsName,
@@ -319,12 +337,13 @@
        toc.order_status orderStatus,
        toc.order_money orderGoodsMoney,
        toc.coupon_money couponDiscount,
        CASE toc.pay_type WHEN 1 THEN toc.online_pay_money WHEN 2 THEN toc.order_money-toc.coupon_money-toc.online_pay_money END receivableMoney,
        toc.pay_type payType,
        CASE toc.pay_type WHEN 1 THEN toc.order_money-toc.coupon_money WHEN 2 THEN toc.order_money-toc.coupon_money-toc.online_pay_money END receivableMoney,
        toc.receivable_deposit receivableDeposit,
        toc.pay_money payMoney,
        toc.change_receivable_money relReceiveMoney,
        CASE toc.pay_type WHEN 1 THEN toc.online_pay_money WHEN 2 THEN IFNULL(toc.offline_pay_money,0) END receiveMoney,
        toc.change_receivable_money - (CASE toc.pay_type WHEN 1 THEN toc.online_pay_money WHEN 2 THEN IFNULL(toc.offline_pay_money,0) END) unPaidMoney,
        CASE toc.pay_type WHEN 1 THEN toc.pay_money WHEN 2 THEN IFNULL(toc.offline_pay_money,0) END receiveMoney,
        toc.change_receivable_money - (CASE toc.pay_type WHEN 1 THEN toc.pay_money WHEN 2 THEN IFNULL(toc.offline_pay_money,0) END) unPaidMoney,
        toc.create_time createTime
        FROM t_order toc
        WHERE toc.del_flag = 0 AND toc.user_id = #{userId} AND toc.order_status &gt;= 2 AND toc.close_flag = 0
@@ -340,21 +359,17 @@
        toc.order_status orderStatus,
        toc.order_money orderGoodsMoney,
        toc.coupon_money couponDiscount,
        CASE toc.pay_type WHEN 1 THEN toc.online_pay_money WHEN 2 THEN toc.order_money-toc.coupon_money-toc.online_pay_money END receivableMoney,
        CASE toc.pay_type WHEN 1 THEN toc.order_money-toc.coupon_money WHEN 2 THEN toc.order_money-toc.coupon_money-toc.online_pay_money END receivableMoney,
        toc.receivable_deposit receivableDeposit,
        toc.pay_money payMoney,
        toc.change_receivable_money relReceiveMoney,
        CASE toc.pay_type WHEN 1 THEN toc.online_pay_money WHEN 2 THEN IFNULL(toc.offline_pay_money,0) END receiveMoney,
        toc.change_receivable_money - (CASE toc.pay_type WHEN 1 THEN toc.online_pay_money WHEN 2 THEN IFNULL(toc.offline_pay_money,0) END) unPaidMoney,
        CASE toc.pay_type WHEN 1 THEN toc.pay_money WHEN 2 THEN IFNULL(toc.offline_pay_money,0) END receiveMoney,
        toc.change_receivable_money - (CASE toc.pay_type WHEN 1 THEN toc.pay_money WHEN 2 THEN IFNULL(toc.offline_pay_money,0) END) unPaidMoney,
        toc.order_remark orderRemark,
        tog.goods_name goodsName,
        tog.goods_type goodsType,
        tog.buy_num buyNum,
        toc.create_time createTime,
        toc.order_from orderFrom,
        toc.activity_name activityName
        FROM t_order toc
        INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id
        WHERE toc.del_flag = 0 AND toc.shop_id = #{param.shopId}
        <if test="param.memberUserId != null and param.memberUserId != ''">
            AND toc.user_id = #{param.memberUserId}
@@ -378,7 +393,7 @@
            AND Date(toc.create_time) &lt;= #{param.endOrderDate}
        </if>
        <if test="param.keyword != null and param.keyword != ''">
            AND (toc.order_no LIKE CONCAT('%',#{param.keyword},'%') OR tog.goods_name LIKE CONCAT('%',#{param.keyword},'%')
            AND (toc.order_no LIKE CONCAT('%',#{param.keyword},'%') OR EXISTS( SELECT 1 FROM t_order_goods tog WHERE tog.order_id = toc.order_id AND tog.goods_name LIKE CONCAT('%',#{param.keyword},'%'))
            <if test="param.memberUserIdList != null and param.memberUserIdList.size()>0">
                OR toc.user_id IN
                <foreach collection="param.memberUserIdList" item="item" open="(" separator="," close=")">
@@ -390,7 +405,14 @@
        ORDER BY toc.create_time DESC
    </select>
    <select id="listSimpleOrderGoodsByOrderId" resultType="com.ruoyi.order.domain.vo.AppUserOrderGoodsPageVo">
        SELECT
        tog.goods_name goodsName,
        tog.goods_type goodsType,
        tog.buy_num buyNum
        FROM t_order_goods tog
        WHERE tog.order_id = #{orderId}
    </select>
    <select id="getMgtMemberOrderTotal" resultType="com.ruoyi.order.domain.vo.MgtMemberOrderTotalVo">
        SELECT
@@ -441,9 +463,9 @@
        WHEN 1 THEN "商城订单"
        WHEN 2 THEN "秒杀活动订单"
        WHEN 3 THEN "线下创建订单"
        END orderFromDesc
        END orderFromDesc,
        #{param.keyword} AS keyword
        FROM t_order toc
        INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id
        WHERE toc.del_flag = 0 AND toc.user_id = #{param.memberUserId}
        <if test="param.orderStatus != null">
            AND toc.order_status = #{param.orderStatus}
@@ -461,9 +483,28 @@
            AND Date(toc.create_time) &lt;= #{param.endOrderDate}
        </if>
        <if test="param.keyword != null and param.keyword != ''">
            AND (toc.order_no LIKE CONCAT('%',#{param.keyword},'%') OR tog.goods_name LIKE CONCAT('%',#{param.keyword},'%'))
            AND (toc.order_no LIKE CONCAT('%',#{param.keyword},'%') EXISTS( SELECT 1 FROM t_order_goods tog WHERE tog.order_id = toc.order_id AND tog.goods_name LIKE CONCAT('%',#{param.keyword},'%')))
        </if>
        ORDER BY toc.create_time DESC
    </select>
    <select id="listMgtSimpleOrderGoodsByOrderId" resultType="com.ruoyi.order.domain.vo.MgtOrderGoodsPageVo">
        SELECT
        tog.goods_name goodsName,
        tog.buy_num buyNum
        FROM t_order_goods tog
        WHERE tog.order_id = #{orderId}
        <if test="keyword != null and keyword != ''">
            AND tog.goods_name LIKE CONCAT('%',#{keyword},'%')
        </if>
    </select>
    <select id="listAllSimpleOrderGoodsByOrderId" resultType="com.ruoyi.order.domain.vo.MgtOrderGoodsPageVo">
        SELECT
        tog.goods_name goodsName,
        tog.buy_num buyNum
        FROM t_order_goods tog
        WHERE tog.order_id = #{orderId}
    </select>
    <select id="pageMgtActivityOrder" resultType="com.ruoyi.order.domain.vo.MgtActivityOrderPageVo">
@@ -651,8 +692,6 @@
        toc.order_id orderId,
        toc.order_no orderNo,
        toc.user_id userId,
        tog.goods_name goodsName,
        tog.buy_num buyNum,
        toc.order_money orderMoney,
        toc.discount_money discountMoney,
        toc.receivable_money receivableMoney,
@@ -660,9 +699,9 @@
        toc.pay_money payMoney,
        toc.shop_id shopId,
        toc.use_time verifyTime,
        CASE toc.order_from WHEN 1 THEN '小程序' WHEN 2 THEN '秒杀活动' WHEN 3 THEN '线下创建' END orderFrom
        CASE toc.order_from WHEN 1 THEN '小程序' WHEN 2 THEN '秒杀活动' WHEN 3 THEN '线下创建' END orderFrom,
        #{param.keyword} AS keyword
        FROM t_order toc
        INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id
        WHERE toc.del_flag = 0 AND (toc.order_from = 1 OR toc.order_from = 3)
        <if test="param.orderStatus != null">
            AND toc.order_status = #{param.orderStatus}
@@ -1554,8 +1593,6 @@
        toc.order_id orderId,
        toc.order_no orderNo,
        toc.user_id userId,
        tog.goods_name goodsName,
        tog.buy_num buyNum,
        toc.order_money orderMoney,
        toc.discount_money discountMoney,
        toc.receivable_money receivableMoney,
@@ -1568,7 +1605,6 @@
        WHEN 3 THEN "已完成"
        END orderStatus
        FROM t_order toc
        INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id
        WHERE toc.del_flag = 0 AND (toc.order_from = 1 OR toc.order_from = 3)
        <if test="param.orderFrom != null">
            AND toc.order_from = #{param.orderFrom}
@@ -1746,12 +1782,12 @@
            toc.order_status orderStatus,
            toc.order_money orderGoodsMoney,
            toc.coupon_money couponDiscount,
            CASE toc.pay_type WHEN 1 THEN toc.online_pay_money WHEN 2 THEN toc.order_money-toc.coupon_money-toc.online_pay_money END receivableMoney,
            CASE toc.pay_type WHEN 1 THEN toc.order_money-toc.coupon_money WHEN 2 THEN toc.order_money-toc.coupon_money-toc.online_pay_money END receivableMoney,
            toc.receivable_deposit receivableDeposit,
            toc.pay_money payMoney,
            toc.change_receivable_money relReceiveMoney,
            CASE toc.pay_type WHEN 1 THEN toc.online_pay_money WHEN 2 THEN IFNULL(toc.offline_pay_money,0) END receiveMoney,
            toc.change_receivable_money - (CASE toc.pay_type WHEN 1 THEN toc.online_pay_money WHEN 2 THEN IFNULL(toc.offline_pay_money,0) END) unPaidMoney,
            CASE toc.pay_type WHEN 1 THEN toc.pay_money WHEN 2 THEN IFNULL(toc.offline_pay_money,0) END receiveMoney,
            toc.change_receivable_money - (CASE toc.pay_type WHEN 1 THEN toc.pay_money WHEN 2 THEN IFNULL(toc.offline_pay_money,0) END) unPaidMoney,
            tpr.pay_time receiveMoneyTime,
            tpr.pay_money thisReceiveMoney,
            CASE tpr.pay_type WHEN 1 THEN "微信" WHEN 2 THEN "现金" WHEN 3 THEN "支付宝" END thisReceiveType
@@ -1770,20 +1806,16 @@
        toc.order_status orderStatus,
        toc.order_money orderGoodsMoney,
        toc.coupon_money couponDiscount,
        CASE toc.pay_type WHEN 1 THEN toc.online_pay_money WHEN 2 THEN toc.order_money-toc.coupon_money-toc.online_pay_money END receivableMoney,
        CASE toc.pay_type WHEN 1 THEN toc.order_money-toc.coupon_money WHEN 2 THEN toc.order_money-toc.coupon_money-toc.online_pay_money END receivableMoney,
        toc.receivable_deposit receivableDeposit,
        toc.pay_money payMoney,
        toc.change_receivable_money relReceiveMoney,
        CASE toc.pay_type WHEN 1 THEN toc.online_pay_money WHEN 2 THEN IFNULL(toc.offline_pay_money,0) END receiveMoney,
        toc.change_receivable_money - (CASE toc.pay_type WHEN 1 THEN toc.online_pay_money WHEN 2 THEN IFNULL(toc.offline_pay_money,0) END) unPaidMoney,
        CASE toc.pay_type WHEN 1 THEN toc.pay_money WHEN 2 THEN IFNULL(toc.offline_pay_money,0) END receiveMoney,
        toc.change_receivable_money - (CASE toc.pay_type WHEN 1 THEN toc.pay_money WHEN 2 THEN IFNULL(toc.offline_pay_money,0) END) unPaidMoney,
        toc.order_remark orderRemark,
        tog.goods_name goodsName,
        tog.goods_type goodsType,
        tog.buy_num buyNum,
        toc.create_time createTime,
        toc.order_from orderFrom
        FROM t_order toc
        INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id
        WHERE toc.del_flag = 0 AND (toc.order_status = 2 OR toc.order_status = 3) AND toc.shop_id = #{param.shopId} AND toc.user_id = #{param.memberUserId}
        ORDER BY toc.create_time DESC
    </select>
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/config/WxPayConfiguration.java
@@ -31,9 +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.setApiV3Key(StringUtils.trimToNull(this.properties.getApiV3Key()));
    payConfig.setPrivateKeyPath(StringUtils.trimToNull(this.properties.getPrivateKeyPath()));
    payConfig.setPrivateCertPath(StringUtils.trimToNull(this.properties.getPrivateCertPath()));
    // 可以指定是否使用沙箱环境
    payConfig.setUseSandboxEnv(false);
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/config/WxPayProperties.java
@@ -41,4 +41,10 @@
   */
  private String keyPath;
  private String apiV3Key;
  private String privateKeyPath;
  private String privateCertPath;
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtShopAuthDto.java
@@ -59,10 +59,11 @@
     */
    @ApiModelProperty(value = "营业执照注册地址")
    private String blRegisteredAddress;
    /**
     * 营业执照期限
     */
    @ApiModelProperty(value = "营业执照期限")
    @ApiModelProperty(value = "营业执照开始时间")
    private String blBusinessStartTime;
    @ApiModelProperty(value = "营业执照截止日期")
    private String blBusinessDeanline;
    @ApiModelProperty(value = "营业执照期限长期标记0否1是")
@@ -82,6 +83,9 @@
     */
    @ApiModelProperty(value = "法人身份证号")
    private String lpIdCard;
    @ApiModelProperty(value = "法人身份证地址")
    private String lpIdAddress;
    /**
     * 法人身份证开始日期
     */
@@ -92,6 +96,9 @@
     */
    @ApiModelProperty(value = "法人身份证有效日期")
    private String lpIcEndDate;
    @ApiModelProperty(value = "法人身份证长期标记0否1是")
    private Integer lpIcForeverFlag;
    /**
     * 法人身份证正面
     */
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopAuthGetVo.java
@@ -99,6 +99,10 @@
     */
    @ApiModelProperty(value = "法人身份证有效日期")
    private String lpIcEndDate;
    @ApiModelProperty(value = "法人身份证长期标记0否1是")
    private Integer lpIcForeverFlag;
    /**
     * 法人身份证正面
     */
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
@@ -996,6 +996,9 @@
        if(mgtShopAuthDto.getBlBusinessFoeverFlag()!=null&&mgtShopAuthDto.getBlBusinessFoeverFlag()==1){
            mgtShopAuthDto.setBlBusinessDeanline("长期");
        }
        if(mgtShopAuthDto.getLpIcForeverFlag()!=null&&mgtShopAuthDto.getLpIcForeverFlag()==1){
            mgtShopAuthDto.setLpIcEndDate("长期");
        }
        BeanUtils.copyProperties(mgtShopAuthDto , shopAuthentication);
        shopAuthentication.setApplyNumber(applyNumber);
        shopAuthentication.setAuditStatus(3);
@@ -1125,6 +1128,11 @@
        }else{
            shopAuthGetVo.setBlBusinessFoeverFlag(0);
        }
        if(shopAuthGetVo.getLpIcEndDate().equals("长期")){
            shopAuthGetVo.setLpIcForeverFlag(1);
        }else{
            shopAuthGetVo.setLpIcForeverFlag(0);
        }
        return shopAuthGetVo;
    }
ruoyi-modules/ruoyi-shop/src/main/resources/bootstrap.yml
@@ -34,3 +34,6 @@
    subAppId: #服务商模式下的子商户公众账号ID
    subMchId: #服务商模式下的子商户号
    keyPath: /home/cert/apiclient_cert.p12
    apiV3Key: J8v9JDHKJYDHW9bdk30o2bdjy6z9mn1A
    privateKeyPath: /home/cert/apiclient_key.pem
    privateCertPath: /home/cert/apiclient_cert.pem
ruoyi-modules/ruoyi-system/pom.xml
@@ -114,11 +114,12 @@
            <scope>test</scope>
        </dependency>
        <!--<dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.3</version>
        </dependency>-->
        <!-- 企业微信 -->
        <dependency>
            <groupId>com.github.binarywang</groupId>
            <artifactId>weixin-java-cp</artifactId>
            <version>4.5.0</version>
        </dependency>
    </dependencies>
    <build>
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/QYWXCallBackController.java
New file
@@ -0,0 +1,41 @@
package com.ruoyi.system.controller.conslole;
import com.esotericsoftware.minlog.Log;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.io.IOUtils;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * @ClassName QYWXCallBackController
 * @Description TODO
 * @Author jqs
 * @Date 2023/8/16 16:56
 * @Version 1.0
 */
@Api(value = "企业微信通知控制", tags = "企业微信通知控制", description = "企业微信通知控制")
@RestController
@RequestMapping("/qywx")
public class QYWXCallBackController {
    @ApiOperation(value = "消息与事件接收配置")
    @RequestMapping(value = "/qywxNotify",
            method = RequestMethod.POST,consumes = "text/xml",produces = "text/xml;charset=utf-8")
    public String wechatPlatformEvent(@PathVariable String APPID,
                                      HttpServletRequest request,
                                      HttpServletResponse response
    ) throws Exception {
        String nonce = request.getParameter("nonce");
        String timestamp = request.getParameter("timestamp");
        String signature = request.getParameter("signature");
        String msgSignature = request.getParameter("msg_signature");
        String encType =  request.getParameter("encrypt_type");
        String xml =  IOUtils.toString(request.getReader());
        Log.info("企业微信回调"+xml);
        return "SUCCESS";
    }
}