From 2e9c442b4961dc30423e8b8fa1361c45e63ef620 Mon Sep 17 00:00:00 2001 From: jiangqs <jiangqs> Date: 星期三, 16 八月 2023 19:52:00 +0800 Subject: [PATCH] bug --- ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java | 2 ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml | 118 ++++++++++++------- ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml | 3 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/QYWXCallBackController.java | 41 ++++++ ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayConfiguration.java | 16 ++ ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java | 1 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java | 8 + ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/config/WxPayProperties.java | 6 + ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 47 +++++-- ruoyi-modules/ruoyi-shop/src/main/resources/bootstrap.yml | 3 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtCouponEditDto.java | 3 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayProperties.java | 5 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java | 33 ++++ ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/config/WxPayConfiguration.java | 6 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtShopAuthDto.java | 15 + ruoyi-modules/ruoyi-system/pom.xml | 11 + ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberNoClearOrderVo.java | 3 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopAuthGetVo.java | 4 18 files changed, 248 insertions(+), 77 deletions(-) diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java index 9cb015d..6be6e36 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java +++ b/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 = "活动已经结束"; diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtCouponEditDto.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtCouponEditDto.java index 2096001..3f6a248 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtCouponEditDto.java +++ b/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; } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java index cdb1bb4..9d959a4 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java +++ b/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(); diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayConfiguration.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayConfiguration.java index f5339cd..386931d 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayConfiguration.java +++ b/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; + } } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayProperties.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayProperties.java index 0089c12..b556b6e 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayProperties.java +++ b/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; } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java index 07a4a0f..775d9da 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java +++ b/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; - }*/ + } } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberNoClearOrderVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberNoClearOrderVo.java index 9f095b4..85a3ede 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberNoClearOrderVo.java +++ b/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; diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java index 498dc32..a94f3ca 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java @@ -1506,14 +1506,15 @@ } //创建支付记录 - PayRecord payRecord = new PayRecord(); - payRecord.setDelFlag(0); - payRecord.setOrderId(order.getOrderId()); - payRecord.setPayMoney(merVerifyOrderDto.getRelPayMoney()); - payRecord.setPayTime(new Date()); - payRecord.setPayType(merVerifyOrderDto.getPayType()); - payRecordService.save(payRecord); - + if(merVerifyOrderDto.getRelPayMoney().compareTo(BigDecimal.ZERO)>0){ + PayRecord payRecord = new PayRecord(); + payRecord.setDelFlag(0); + payRecord.setOrderId(order.getOrderId()); + payRecord.setPayMoney(merVerifyOrderDto.getRelPayMoney()); + 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()); diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml index 1bf0074..59efa1b 100644 --- a/ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml +++ b/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 diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml index a3eb2b2..b50b79f 100644 --- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml +++ b/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 >= 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) <= #{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) <= #{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> diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/config/WxPayConfiguration.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/config/WxPayConfiguration.java index f9b0538..b8f75b5 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/config/WxPayConfiguration.java +++ b/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); diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/config/WxPayProperties.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/config/WxPayProperties.java index c1c4841..4a0ee96 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/config/WxPayProperties.java +++ b/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; + } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtShopAuthDto.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtShopAuthDto.java index c61a8bd..65bbc22 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtShopAuthDto.java +++ b/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; /** * 法人身份证正面 */ diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopAuthGetVo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopAuthGetVo.java index 115baea..105027f 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopAuthGetVo.java +++ b/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; + /** * 法人身份证正面 */ diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java index 66ab37d..7d3ae1b 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java +++ b/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; } diff --git a/ruoyi-modules/ruoyi-shop/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-shop/src/main/resources/bootstrap.yml index 2709352..e960bb0 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/resources/bootstrap.yml +++ b/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 diff --git a/ruoyi-modules/ruoyi-system/pom.xml b/ruoyi-modules/ruoyi-system/pom.xml index 5e36ebb..22676f1 100644 --- a/ruoyi-modules/ruoyi-system/pom.xml +++ b/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> diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/QYWXCallBackController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/QYWXCallBackController.java new file mode 100644 index 0000000..e18eb1b --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/QYWXCallBackController.java @@ -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"; + } +} -- Gitblit v1.7.1