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 >= 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> 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"; } }