From 292867c80078476088d838a898dc8429e5bfd422 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Fri, 09 Apr 2021 14:42:30 +0800
Subject: [PATCH] Merge branch 'score_shop' of http://120.27.238.55:7000/r/beauty-erp into score_shop
---
zq-erp/src/main/resources/mybatis/mapper/hive/MoneyCardUseV2Dao.xml | 7
zq-erp/src/main/resources/static/demoPage/soketLoginTest.html | 3
zq-erp/src/main/java/com/matrix/component/wechat/externalInterface/weixinUtil/WeixinServiceUtil.java | 28 ++
zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopCouponDao.java | 1
zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopCouponServiceImpl.java | 2
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java | 137 ++++++++++++++-
zq-erp/src/main/resources/config/db/increment/推广员.sql | 5
zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUseFlow.java | 15 +
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java | 18 +
zq-erp/src/main/java/com/matrix/system/hive/dao/MoneyCardUseV2Dao.java | 12 +
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java | 3
zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopCouponRecordDao.xml | 4
zq-erp/src/main/resources/mybatis/mapper/hive/MoneyCardUseFlowDao.xml | 16 +
zq-erp/src/test/java/com/matrix/ParameterSettingsTool.java | 7
zq-erp/src/main/java/com/matrix/system/common/constance/AppConstance.java | 7
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxMoneyCardUseAction.java | 155 +++++++++++++++++
zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopCouponRecordDao.java | 1
zq-erp/src/main/java/com/matrix/component/wechat/externalInterface/protocol/paramProtocol/BrandWCPayRequestData.java | 2
zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUse.java | 52 +++++
zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/WxMoneyCardUseVO.java | 56 ++++++
20 files changed, 507 insertions(+), 24 deletions(-)
diff --git a/zq-erp/src/main/java/com/matrix/component/wechat/externalInterface/protocol/paramProtocol/BrandWCPayRequestData.java b/zq-erp/src/main/java/com/matrix/component/wechat/externalInterface/protocol/paramProtocol/BrandWCPayRequestData.java
index b0c8126..c5961d9 100644
--- a/zq-erp/src/main/java/com/matrix/component/wechat/externalInterface/protocol/paramProtocol/BrandWCPayRequestData.java
+++ b/zq-erp/src/main/java/com/matrix/component/wechat/externalInterface/protocol/paramProtocol/BrandWCPayRequestData.java
@@ -25,7 +25,7 @@
private String signType = "";
private String paySign = "";
- public BrandWCPayRequestData(String prepay_id,String appID,String paySecret){
+ public BrandWCPayRequestData(String prepay_id, String appID, String paySecret){
//默认必须设置
setAppId(appID);
//随机字符串,不长于32 位
diff --git a/zq-erp/src/main/java/com/matrix/component/wechat/externalInterface/weixinUtil/WeixinServiceUtil.java b/zq-erp/src/main/java/com/matrix/component/wechat/externalInterface/weixinUtil/WeixinServiceUtil.java
index 32ab3bb..cc168ab 100644
--- a/zq-erp/src/main/java/com/matrix/component/wechat/externalInterface/weixinUtil/WeixinServiceUtil.java
+++ b/zq-erp/src/main/java/com/matrix/component/wechat/externalInterface/weixinUtil/WeixinServiceUtil.java
@@ -25,6 +25,7 @@
import com.matrix.system.common.interceptor.HostInterceptor;
import com.matrix.system.shopXcx.api.tools.WxShopOrderUtil;
import org.apache.log4j.Logger;
+import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@@ -69,7 +70,25 @@
* @return 预支付订单返回的结果对象(该结果对象已封装),在H5页面使用该对象信息
* @throws Exception
*/
- public BrandWCPayRequestData createOrder(String desc,String outTradeNo, int price, String openId,String attach) throws Exception {
+ public BrandWCPayRequestData createOrder(String desc, String outTradeNo, int price, String openId, String attach) throws Exception {
+ Long companyId=HostInterceptor.getCompanyId();
+ BusParameterSettings notifyUrl = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.WECHARPAY_NOTIFYURL, companyId);
+ return buildBrandWCPayRequestData(desc, outTradeNo, price, openId, attach, notifyUrl);
+ }
+
+ /**
+ * 创建充值订单
+ */
+ public BrandWCPayRequestData createRechargeOrder(String desc, String outTradeNo, int price, String openId, String attach) throws Exception {
+ Long companyId=HostInterceptor.getCompanyId();
+ BusParameterSettings notifyUrl = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.WECHARPAY_RECHARGE_NOTIFYURL, companyId);
+ return buildBrandWCPayRequestData(desc, outTradeNo, price, openId, attach, notifyUrl);
+ }
+
+
+
+ @NotNull
+ private BrandWCPayRequestData buildBrandWCPayRequestData(String desc, String outTradeNo, int price, String openId, String attach, BusParameterSettings notifyUrl) throws Exception {
// 创建微信支付预付接口
JsApiPayBusiness jsApiPayBusiness = new JsApiPayBusiness();
String idAddr = getIpAddr(WebUtil.getRequest());
@@ -78,7 +97,7 @@
BusParameterSettings mchID = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.WECHARPAY_MCHID, companyId);
BusParameterSettings paySecret = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.WECHARPAY_SECRET, companyId);
- BusParameterSettings notifyUrl = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.WECHARPAY_NOTIFYURL, companyId);
+
BusParameterSettings appId = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.MINIPROGRAM_APPID, companyId);
@@ -102,10 +121,9 @@
LogUtil.error("创建微信支付订单失败msg={}",result.getReturn_msg());
throw new GlobleException("创建微信支付订单失败,请检查程序配置");
}
-
}
-
-
+
+
/**@Description 支付后,向微信发送请求、查询订单,看订单是否真的支付成功了
@date 2017年6月27日
@atuhor jiangyouyao
diff --git a/zq-erp/src/main/java/com/matrix/system/common/constance/AppConstance.java b/zq-erp/src/main/java/com/matrix/system/common/constance/AppConstance.java
index 538ffde..7c53969 100644
--- a/zq-erp/src/main/java/com/matrix/system/common/constance/AppConstance.java
+++ b/zq-erp/src/main/java/com/matrix/system/common/constance/AppConstance.java
@@ -13,6 +13,7 @@
public static final String ZONGDIAN = "总店";
+
private AppConstance() {
}
@@ -550,6 +551,12 @@
*/
public static final String WECHARPAY_NOTIFYURL = "wecharPaynotifyUrl";
/**
+ * 充值支付通知地址
+ */
+ public static final String WECHARPAY_RECHARGE_NOTIFYURL = "wecharpayRechargeNotifyurl";
+
+
+ /**
* 支付证书地址
*/
public static final String WECHARPAY_CERTLOCAL_PATH = "certLocalPath";
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUse.java b/zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUse.java
index c530480..d0a63cb 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUse.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUse.java
@@ -1,5 +1,6 @@
package com.matrix.system.hive.bean;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.matrix.core.anotations.Extend;
import com.matrix.core.tools.DateUtil;
@@ -15,18 +16,29 @@
*/
public class MoneyCardUse {
- private static final long serialVersionUID = 1L;
-
private Long id;
+
+
+ private String createBy;
+
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date createTime;
+
+ private String updateBy;
+
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date updateTime;
/**
* 剩余次数
*/
+ @TableField(exist = false)
String lastCountName;
/**
* 数据来源
*/
+ @TableField(exist = false)
String sourceName;
/*vo对象************/
@@ -98,6 +110,7 @@
/**
* 订单ID
*/
+ @TableField(exist = false)
private Long orderId;
@@ -117,6 +130,7 @@
/**
* 前台输入的退款金额
*/
+ @TableField(exist = false)
private String returnMonery;
/**
@@ -172,6 +186,38 @@
return lastCountName;
}
+ public String getCreateBy() {
+ return createBy;
+ }
+
+ public void setCreateBy(String createBy) {
+ this.createBy = createBy;
+ }
+
+ public Date getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(Date createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getUpdateBy() {
+ return updateBy;
+ }
+
+ public void setUpdateBy(String updateBy) {
+ this.updateBy = updateBy;
+ }
+
+ public Date getUpdateTime() {
+ return updateTime;
+ }
+
+ public void setUpdateTime(Date updateTime) {
+ this.updateTime = updateTime;
+ }
+
public void setLastCountName(String lastCountName) {
this.lastCountName = lastCountName;
}
@@ -212,12 +258,14 @@
/**
* 会员信息
*/
+ @TableField(exist = false)
private SysVipInfo vipInfo;
/**
* 调整说明
*/
@Extend
+ @TableField(exist = false)
private String changeRemark;
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUseFlow.java b/zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUseFlow.java
index 8bb8780..80a097b 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUseFlow.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUseFlow.java
@@ -27,7 +27,12 @@
* 订单编号
*/
private String orderNo;
-
+
+ /**
+ * 微信支付编号
+ */
+ private String payNo;
+
/**
* 操作员id
@@ -235,4 +240,12 @@
public void setTimes(Integer times) {
this.times = times;
}
+
+ public String getPayNo() {
+ return payNo;
+ }
+
+ public void setPayNo(String payNo) {
+ this.payNo = payNo;
+ }
}
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dao/MoneyCardUseV2Dao.java b/zq-erp/src/main/java/com/matrix/system/hive/dao/MoneyCardUseV2Dao.java
new file mode 100644
index 0000000..741d039
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/hive/dao/MoneyCardUseV2Dao.java
@@ -0,0 +1,12 @@
+package com.matrix.system.hive.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.matrix.system.hive.bean.MoneyCardUse;
+
+/**
+ * @description 订单表
+ */
+public interface MoneyCardUseV2Dao extends BaseMapper<MoneyCardUse> {
+
+
+}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
index 77f19f6..647ead9 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
@@ -680,7 +680,7 @@
ShoppingGoods goods = shoppingGoodsDao.selectById(goodsId);
flow.setFlowContent(goods.getName() + "等" + sourceOrder.getItems().size() + "件产品");
// 若是退款,则取负数
- if (SysOrder.ORDER_TYPE_REFUND == sourceOrder.getOrderType()) {
+ if (SysOrder.ORDER_TYPE_REFUND== sourceOrder.getOrderType()) {
flow.setFlowType(SysOrderFlow.FLOW_TYPE_REFUND);
flow.setAmount(flow.getAmount().negate());
flow.setOrderId(sourceOrder.getOldOrderId());
@@ -1331,6 +1331,7 @@
order.setRemark(cardUser.getCardName());
order.setStaffId(user.getSuId());
order.setIsCross(2 + "");
+ order.setOrderType(SysOrder.ORDER_TYPE_SEAL);
order.setStatu(Dictionary.ORDER_STATU_YFK);
order.setCompanyId(user.getCompanyId());
sysOrderDao.insert(order);
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java
index d5423a3..5246abe 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java
@@ -10,9 +10,12 @@
import com.matrix.system.common.bean.BusParameterSettings;
import com.matrix.system.common.constance.AppConstance;
import com.matrix.system.common.dao.BusParameterSettingsDao;
+import com.matrix.system.hive.bean.MoneyCardUse;
+import com.matrix.system.hive.bean.MoneyCardUseFlow;
import com.matrix.system.hive.bean.SysVipInfo;
+import com.matrix.system.hive.dao.MoneyCardUseDao;
+import com.matrix.system.hive.dao.MoneyCardUseFlowDao;
import com.matrix.system.hive.dao.SysVipInfoDao;
-import com.matrix.system.score.entity.ScoreVipDetail;
import com.matrix.system.score.service.ScoreVipDetailService;
import com.matrix.system.shopXcx.bean.ShopActivitiesGroupJoin;
import com.matrix.system.shopXcx.bean.ShopActivitiesGroupJoinUser;
@@ -90,11 +93,6 @@
private String evn;
/**
* 微信支付回调接口
- *
- * @param response
- * @param request
- * @throws IOException
- * @throws Exception
*/
@Transactional(rollbackFor = Exception.class)
@RequestMapping(value = "/wxapi/wxpayCallback")
@@ -206,7 +204,7 @@
resXml = AppConstance.RESULT_XML_SUCCESS;
//支付记录
- recordPayLog(Integer.valueOf(orderId), payMoney, order, payLog, "支付成功", ShopOrder.ORDER_PAY_STATUS_SUCCESS);
+ recordPayLog(Integer.valueOf(orderId), 1, order.getOrderNo(), payMoney, payLog, "支付成功", ShopOrder.ORDER_PAY_STATUS_SUCCESS);
} else {
@@ -245,12 +243,131 @@
}
- private void recordPayLog(Integer orderId, BigDecimal payMoney, ShopOrder order, ShopPayLog payLog, String payRemark, int payStatus) {
+
+ @Autowired
+ MoneyCardUseFlowDao moneyCardUseFlowDao;
+
+ @Autowired
+ MoneyCardUseDao moneyCardUseDao;
+
+ /**
+ * 微信充值回调
+ */
+ @Transactional(rollbackFor = Exception.class)
+ @RequestMapping(value = "/wxapi/rechargeCallBack")
+ public void rechargeCallBack(HttpServletResponse response, HttpServletRequest request) throws IOException {
+ LogUtil.info("微信充值回调start....");
+
+ // 获取输入参数
+ String inputLine;
+ StringBuffer notityXml = new StringBuffer();
+ String resXml = "";
+ String moneyCardUseFlowId = "";
+
+ AjaxResult threadResult = new AjaxResult(AjaxResult.STATUS_SUCCESS, "");
+ try {
+ while ((inputLine = request.getReader().readLine()) != null) {
+ notityXml.append(inputLine);
+ }
+ request.getReader().close();
+ LogUtil.info("notityXml ---- :{} ", notityXml);
+
+
+ // XMl转对象
+ Object bb = Util.getObjectFromXML(notityXml.toString(), NotifyData.class);
+ NotifyData data = new NotifyData();
+ BeanUtils.copyProperties(bb,data);
+ LogUtil.info("----return_code = {}", data.getReturn_code());
+
+
+ // 返回状态码 SUCCESS/FAIL
+ if (AppConstance.CODE_SUCCESS.equals(data.getReturn_code())) {
+
+ moneyCardUseFlowId = data.getAttach();
+ // 检验订单状态
+ MoneyCardUseFlow moneyCardUseFlow = moneyCardUseFlowDao.selectById(Long.valueOf(moneyCardUseFlowId));
+ SysVipInfo user=sysVipInfoDao.selectById(moneyCardUseFlow.getVipId());
+
+ // 校验签名
+ BusParameterSettings paySecret = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.WECHARPAY_SECRET, user.getCompanyId());
+ if (Signature.checkIsSignValidFromResponseString(notityXml.toString(),paySecret.getParamValue())) {
+ // 校验业务结果
+ if (AppConstance.CODE_SUCCESS.equals(data.getResult_code())) {
+ // 返回SUCCESS报文
+ resXml = AppConstance.RESULT_XML_SUCCESS;
+ // 支付费用
+ Double total_fee = Double.parseDouble(data.getTotal_fee());
+ // 商户订单号
+ String payNum = data.getOut_trade_no();
+
+ LogUtil.info("支付回调关键信息---total_fee:{},payNum:{},moneyCardUseFlowId:{}", total_fee, payNum, moneyCardUseFlowId);
+ // 订单ID
+ Double payMoney = new BigDecimal(total_fee).divide(new BigDecimal(100), 2,
+ BigDecimal.ROUND_HALF_DOWN).doubleValue();
+
+ if (moneyCardUseFlow.getCarUseId()==null) {
+ ShopPayLog payLog = new ShopPayLog();
+ if(payMoney==moneyCardUseFlow.getTotal()){
+ threadResult.putInMap("status", "success");
+ resXml = AppConstance.RESULT_XML_SUCCESS;
+ MoneyCardUse moneyCardUse = moneyCardUseDao.selectVipCard(user.getId());
+ moneyCardUseFlow.setCarUseId(moneyCardUse.getId());
+ moneyCardUseFlow.setCardName(moneyCardUse.getCardName());
+ moneyCardUseFlow.setBalance(moneyCardUse.getGiftMoney() + moneyCardUse.getRealMoney());
+ moneyCardUseFlowDao.update(moneyCardUseFlow);
+ //充值记录
+ recordPayLog(Integer.valueOf(moneyCardUseFlowId),2,moneyCardUseFlow.getPayNo(),new BigDecimal(payMoney), payLog, "充值成功", ShopOrder.ORDER_PAY_STATUS_SUCCESS);
+ }else{
+ LogUtil.debug("支付金额不一致,检查支付金额payMoney={},order.getPayMoney()={}", payMoney, moneyCardUseFlow.getTotal());
+ threadResult.putInMap("status", "err");
+ threadResult.putInMap("msg", "支付金额不一致");
+ resXml = AppConstance.RESULT_XML_FAIL.replace(ERRORMSG, "微信标识业务是失败");
+ }
+
+ } else {
+ LogUtil.info("充值已经确认");
+ }
+
+ } else {
+ LogUtil.info("微信标识业务是失败");
+ threadResult.putInMap("status", "err");
+ threadResult.putInMap("msg", "查询支付信息失败,请联系客服或者刷新支付信息(错误码:001)");
+ resXml = AppConstance.RESULT_XML_FAIL.replace(ERRORMSG, "微信标识业务是失败");
+ }
+ } else {
+ LogUtil.info("无效签名");
+ threadResult.putInMap("status", "err");
+ threadResult.putInMap("msg", "查询支付信息失败,请联系客服或者刷新支付信息(错误码:002)");
+ resXml = AppConstance.RESULT_XML_FAIL.replace(ERRORMSG, "微信标识业务是失败");
+ }
+ } else {
+ LogUtil.info("通信标识失败");
+ threadResult.putInMap("status", "err");
+ threadResult.putInMap("msg", "查询支付信息失败,请联系客服或者刷新支付信息(错误码:003)");
+ resXml = AppConstance.RESULT_XML_FAIL.replace(ERRORMSG, "通信标识失败");
+ }
+ } catch (Exception e) {
+ LogUtil.error("支付回调签名错误", e);
+ threadResult.putInMap("status", "err");
+ threadResult.putInMap("msg", "查询支付信息失败,请联系客服或者刷新支付信息(错误码:004)");
+ resXml = AppConstance.RESULT_XML_FAIL.replace(ERRORMSG, "支付回调签名错误");
+ } finally {
+ // 通知线程消息
+ PayThreadPool.notifyThread(Integer.valueOf(moneyCardUseFlowId), threadResult);
+ sendResultBack(response, resXml);
+ }
+ return;
+
+ }
+
+
+
+ private void recordPayLog(Integer orderId, Integer type,String orderNo, BigDecimal payMoney, ShopPayLog payLog, String payRemark, int payStatus) {
//设置支付类型为收款
- payLog.setPayType(1);
+ payLog.setPayType(type);
payLog.setJoinId(orderId);
payLog.setPayMoney(payMoney);
- payLog.setPayOrderNo(order.getOrderNo());
+ payLog.setPayOrderNo(orderNo);
payLog.setPayRemark(payRemark);
payLog.setPayStatus(payStatus);
payLog.setCreateBy(AppConstance.SYSTEM_USER);
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxMoneyCardUseAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxMoneyCardUseAction.java
new file mode 100644
index 0000000..e090630
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxMoneyCardUseAction.java
@@ -0,0 +1,155 @@
+package com.matrix.system.shopXcx.api.action;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.matrix.component.redis.RedisUserLoginUtils;
+import com.matrix.component.wechat.externalInterface.protocol.paramProtocol.BrandWCPayRequestData;
+import com.matrix.component.wechat.externalInterface.weixinUtil.WeixinServiceUtil;
+import com.matrix.core.pojo.AjaxResult;
+import com.matrix.core.pojo.BasePageQueryDto;
+import com.matrix.core.pojo.PaginationVO;
+import com.matrix.core.tools.LogUtil;
+import com.matrix.core.tools.StringUtils;
+import com.matrix.system.hive.bean.MoneyCardUse;
+import com.matrix.system.hive.bean.MoneyCardUseFlow;
+import com.matrix.system.hive.bean.SysVipInfo;
+import com.matrix.system.hive.dao.MoneyCardUseFlowDao;
+import com.matrix.system.hive.dao.MoneyCardUseV2Dao;
+import com.matrix.system.hive.service.CodeService;
+import com.matrix.system.shopXcx.api.vo.WxMoneyCardUseVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @author jyy
+ * @date 2021-04-09
+ **/
+@Api(tags = "会员储值卡")
+@RestController
+@RequestMapping(value = "/wxapi/moneyCardUse")
+public class WxMoneyCardUseAction {
+
+ @Autowired
+ WeixinServiceUtil weixinServiceUtil;
+
+
+ @Autowired
+ private MoneyCardUseV2Dao moneyCardUseV2Dao;
+
+ @Autowired
+ private RedisUserLoginUtils redisUserLoginUtils;
+
+ @Autowired
+ MoneyCardUseFlowDao moneyCardUseFlowDao;
+
+ @Autowired
+ CodeService codeService;
+
+ @ApiOperation(value = "查询会员储值卡", notes = "")
+ @GetMapping(value = "/getUserMoneyCardUseList")
+ @ApiResponses({
+ @ApiResponse(code = 200, message = "ok", response = WxMoneyCardUseVO.class)
+ })
+ public AjaxResult getUserMoneyCardUseList(@RequestBody @Validated BasePageQueryDto pageDto) {
+ SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
+ QueryWrapper queryWrapper = new QueryWrapper();
+ queryWrapper.eq("vip_id", sysVipInfo.getId());
+ IPage<MoneyCardUse> page = new Page<>(pageDto.getPageNum(), pageDto.getPageSize());
+ IPage pageList = moneyCardUseV2Dao.selectPage(page, queryWrapper);
+ List<WxMoneyCardUseVO> rows = (List<WxMoneyCardUseVO>) pageList.getRecords().stream().map(item -> {
+ WxMoneyCardUseVO vo = new WxMoneyCardUseVO();
+ BeanUtils.copyProperties(item, vo);
+ return vo;
+ }).collect(Collectors.toList());
+ return AjaxResult.buildSuccessInstance(rows);
+ }
+
+ @ApiOperation(value = "创建储值卡充值预付单", notes = "传入参数 {rechargeAmount:10} 最少充值1元,最多2位小数 ")
+ @PostMapping(value = "/createRechargeOrder")
+ @ApiResponses({
+ @ApiResponse(code = 200, message = "ok", response = AjaxResult.class)
+ })
+ public AjaxResult createRechargeOrder(@RequestBody Map<String, String> param) throws Exception {
+
+ String rechargeAmount = param.get("rechargeAmount");
+ if (StringUtils.isBlank(rechargeAmount)) {
+ return AjaxResult.buildFailInstance("去输入充值金额");
+ }
+ double total = new BigDecimal(rechargeAmount).setScale(2, BigDecimal.ROUND_HALF_DOWN).doubleValue();
+ if (total < 0.02) {
+ return AjaxResult.buildFailInstance("充值金额最底1元");
+ }
+ SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
+ MoneyCardUseFlow moneyCardUseFlow = new MoneyCardUseFlow();
+ moneyCardUseFlow.setVipId(sysVipInfo.getId());
+ moneyCardUseFlow.setPayNo(codeService.get32LenNumberCode());
+ moneyCardUseFlow.setTotal(total);
+ moneyCardUseFlow.setCreateTime(new Date());
+ moneyCardUseFlow.setType(MoneyCardUseFlow.USE_TYPE_CZ);
+ moneyCardUseFlowDao.insert(moneyCardUseFlow);
+ moneyCardUseFlow.setContent("微信充值");
+ BrandWCPayRequestData payData = weixinServiceUtil.createRechargeOrder("储值卡充值", moneyCardUseFlow.getPayNo(),
+ (int) (moneyCardUseFlow.getTotal() * 100), sysVipInfo.getOpenId(), String.valueOf(moneyCardUseFlow.getId()));
+ AjaxResult result = AjaxResult.buildSuccessInstance(payData);
+ result.putInMap("orderId", moneyCardUseFlow.getId());
+ return result;
+ }
+
+ @ApiOperation(value = "查询充值结果", notes = " ")
+ @GetMapping(value = "/getRechargePayStatus/{orderId}")
+ @ApiResponses({
+ @ApiResponse(code = 200, message = "ok", response = AjaxResult.class)
+ })
+ public AjaxResult getRechargePayStatus(@PathVariable Long orderId) {
+ AjaxResult result =AjaxResult.buildSuccessInstance("查询成功");
+ MoneyCardUseFlow moneyCardUseFlow = moneyCardUseFlowDao.selectById(orderId);
+ if (moneyCardUseFlow.getCarUseId() != null) {
+ result.putInMap("status", "success");
+ result.putInMap("msg", "支付成功");
+ } else {
+ LogUtil.debug("充值等待支付中={}。。。", orderId);
+ PayThreadPool.waitThread(orderId.intValue(), new Object());
+ result = PayThreadPool.getThreadResult(orderId.intValue());
+ LogUtil.debug("充值订单支付完成={}。。。", orderId);
+ }
+ return result;
+ }
+
+
+
+ @ApiOperation(value = "查询会员储值卡充值使用记录", notes = "keywords 传入会员卡ID")
+ @GetMapping(value = "/getRechargeList")
+ @ApiResponses({
+ @ApiResponse(code = 200, message = "ok", response = MoneyCardUseFlow.class)
+ })
+ public AjaxResult getRechargeList(@RequestBody @Validated BasePageQueryDto pageDto) {
+ if(StringUtils.isBlank(pageDto.getKeywords())){
+ return AjaxResult.buildFailInstance("keywords参数是必须的");
+ }
+ PaginationVO pageVo = new PaginationVO();
+ pageVo.setOffset((pageDto.getPageNum() - 1) * pageDto.getPageSize());
+ pageVo.setLimit(pageDto.getPageSize());
+ SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
+ MoneyCardUseFlow moneyCardUseFlow=new MoneyCardUseFlow();
+ moneyCardUseFlow.setVipId(sysVipInfo.getId());
+ moneyCardUseFlow.setCarUseId(Long.parseLong(pageDto.getKeywords()));
+ List<MoneyCardUseFlow> dataList = moneyCardUseFlowDao.selectInPage(moneyCardUseFlow, pageVo);
+ return AjaxResult.buildSuccessInstance(dataList, moneyCardUseFlowDao.selectTotalRecord(moneyCardUseFlow));
+ }
+
+
+
+}
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java
index 9cac99e..c4c6da2 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java
@@ -18,10 +18,13 @@
import com.matrix.system.fenxiao.entity.ShopSalesmanApply;
import com.matrix.system.fenxiao.service.ShopSalesmanApplyService;
import com.matrix.system.hive.bean.SysVipInfo;
+import com.matrix.system.hive.dao.MoneyCardUseDao;
import com.matrix.system.hive.dao.SysVipInfoDao;
import com.matrix.system.hive.service.SysVipInfoService;
+import com.matrix.system.score.dao.ScoreVipDetailDao;
import com.matrix.system.shopXcx.api.WeChatApiTools;
import com.matrix.system.shopXcx.api.dto.XcxUserSaveUserInfoDto;
+import com.matrix.system.shopXcx.dao.ShopCouponRecordDao;
import net.sf.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -58,6 +61,11 @@
@Autowired
WeChatApiTools weChatApiTools;
+ @Autowired
+ private ScoreVipDetailDao scoreVipDetailDao;
+
+ @Autowired
+ private MoneyCardUseDao moneyCardUseDao;
@Autowired
private WeixinServiceUtil weixinServiceUtil;
@@ -134,6 +142,9 @@
return res;
}
+ @Autowired
+ ShopCouponRecordDao shopCouponRecordDao;
+
/**
* 查询用户信息
*/
@@ -141,9 +152,12 @@
public @ResponseBody
AjaxResult findUserInfo() {
SysVipInfo loginUser = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
- String openId = loginUser.getOpenId();
- SysVipInfo sysVipInfo = sysVipInfoService.findByOpenId(openId);
+ SysVipInfo sysVipInfo = sysVipInfoService.findById(loginUser.getId());
+ sysVipInfo.setPointAll(scoreVipDetailDao.selectUserTotalScore(loginUser.getId()));
+ sysVipInfo.setBalance(moneyCardUseDao.selectVipCardTotalMoney(loginUser.getId()));
AjaxResult res = new AjaxResult();
+ res.putInMap("couponCount", shopCouponRecordDao.countUnuseCouponRecord(loginUser.getId()));
+ res.putInMap("prizeCount",0);
res.putInMap("userInfo", sysVipInfo);
res.setStatus(AjaxResult.STATUS_SUCCESS);
return res;
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopCouponServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopCouponServiceImpl.java
index 4c5f062..d2840d3 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopCouponServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopCouponServiceImpl.java
@@ -157,7 +157,7 @@
}
/**
- * 领取优惠券
+ *
*
* @param couponId
* @return
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/WxMoneyCardUseVO.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/WxMoneyCardUseVO.java
new file mode 100644
index 0000000..f5d9b25
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/WxMoneyCardUseVO.java
@@ -0,0 +1,56 @@
+package com.matrix.system.shopXcx.api.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.matrix.core.tools.DateUtil;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @author jyy
+ * @date 2020-04-21 11:36
+ **/
+@Data
+@ApiModel(value = "WxMoneyCardUseVO", description = "储值卡展示类")
+public class WxMoneyCardUseVO {
+
+ @ApiModelProperty(value ="储值卡ID")
+ private Long id;
+
+
+ @ApiModelProperty(value ="储值卡名称")
+ private String cardName;
+
+ @ApiModelProperty(value ="失效时间")
+ @JsonFormat(pattern = DateUtil.DATE_FORMAT_DD, timezone = "GMT+8")
+ @DateTimeFormat(pattern= DateUtil.DATE_FORMAT_DD)
+ private Date failTime;
+
+ @ApiModelProperty(value ="状态,有效,无效,转让,冻结,退款")
+ private String status;
+
+
+ @ApiModelProperty(value ="总次数")
+ private Integer useTotal;
+
+ @ApiModelProperty(value ="剩余次数")
+ private Integer lastCount;
+
+ @ApiModelProperty(value ="来源,购买,转让,赠送")
+ private String source;
+
+
+ @ApiModelProperty(value ="本金")
+ private Double realMoney;
+
+
+ @ApiModelProperty(value ="赠送金额")
+ private Double giftMoney;
+
+ @ApiModelProperty(value ="是会籍卡? Y 是,N否")
+ private String isVipCar;
+
+}
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopCouponDao.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopCouponDao.java
index 589f88f..f92e198 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopCouponDao.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopCouponDao.java
@@ -58,4 +58,5 @@
public List<ShopCoupon> selectHdListByProductId(@Param("productId") Integer productId, @Param("attrIds") List<String> attrIds, @Param("companyId")Long companyId);
ShopCoupon getCouponByTitle(@Param("title")String title, @Param("companyId")Long companyId);
+
}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopCouponRecordDao.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopCouponRecordDao.java
index fd8cce2..0f316fc 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopCouponRecordDao.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopCouponRecordDao.java
@@ -48,4 +48,5 @@
List<CouponReceiveInfoVO> selectMyPastCoupon(@Param("companyId")Long shopId, @Param("userId") Long userId, @Param("pageVo") PaginationVO pageVo);
+ int countUnuseCouponRecord(Long id);
}
\ No newline at end of file
diff --git "a/zq-erp/src/main/resources/config/db/increment/\346\216\250\345\271\277\345\221\230.sql" "b/zq-erp/src/main/resources/config/db/increment/\346\216\250\345\271\277\345\221\230.sql"
index a4ff4a9..d29024c 100644
--- "a/zq-erp/src/main/resources/config/db/increment/\346\216\250\345\271\277\345\221\230.sql"
+++ "b/zq-erp/src/main/resources/config/db/increment/\346\216\250\345\271\277\345\221\230.sql"
@@ -223,6 +223,11 @@
ADD COLUMN `self_commission` double(20,2) NULL COMMENT '自购返佣比例%' AFTER `company_id`;
+ALTER TABLE `money_card_use_flow`
+ADD COLUMN `pay_no` varchar(32) NULL COMMENT '微信充值订单号';
+
+
+
ALTER TABLE `sys_vip_info`
ADD COLUMN `fenxiao_state` int(11) NULL DEFAULT NULL COMMENT '分销审核状态' AFTER `recommend_id`,
diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/MoneyCardUseFlowDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/MoneyCardUseFlowDao.xml
index a40157c..0c36b69 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/hive/MoneyCardUseFlowDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/hive/MoneyCardUseFlowDao.xml
@@ -7,6 +7,7 @@
<resultMap type="com.matrix.system.hive.bean.MoneyCardUseFlow" id="MoneyCardUseFlowMap">
<id property="id" column="id" />
<result property="orderNo" column="order_no" />
+ <result property="payNo" column="pay_no" />
<result property="operationId" column="operation_id" />
<result property="content" column="content" />
<result property="createTime" column="create_time" />
@@ -31,6 +32,7 @@
<resultMap type="com.matrix.system.hive.bean.MoneyCardUseFlow" id="MoneyCardUseFlowSimpleMap">
<id property="id" column="id" />
<result property="orderNo" column="order_no" />
+ <result property="payNo" column="pay_no" />
<result property="operationId" column="operation_id" />
<result property="content" column="content" />
<result property="createTime" column="create_time" />
@@ -51,6 +53,7 @@
INSERT INTO money_card_use_flow (
id,
order_no,
+ pay_no,
operation_id,
content,
create_time,
@@ -66,6 +69,7 @@
VALUES (
#{id},
#{orderNo},
+ #{payNo},
#{operationId},
#{content},
#{createTime},
@@ -149,6 +153,7 @@
select
id,
order_no,
+ pay_no,
operation_id,
content,
create_time,
@@ -171,6 +176,9 @@
</if>
<if test="record.orderNo != null and record.orderNo !='' ">
and order_no = #{record.orderNo}
+ </if>
+ <if test="record.payNo != null and record.payNo !='' ">
+ and pay_no = #{record.payNo}
</if>
<if test="record.operationId != null and record.operationId !='' ">
and operation_id = #{record.operationId}
@@ -215,6 +223,9 @@
<if test="record.orderNo != null and record.orderNo !='' ">
and order_no = #{record.orderNo}
</if>
+ <if test="record.payNo != null and record.payNo !='' ">
+ and pay_no = #{record.payNo}
+ </if>
<if test="record.operationId != null and record.operationId !='' ">
and operation_id = #{record.operationId}
</if>
@@ -245,6 +256,7 @@
select
id,
order_no,
+ pay_no,
operation_id,
content,
create_time,
@@ -269,6 +281,7 @@
select
id,
order_no,
+ pay_no,
operation_id,
content,
create_time,
@@ -292,6 +305,9 @@
<if test="record.orderNo != null and record.orderNo !='' ">
and order_no = #{record.orderNo}
</if>
+ <if test="record.payNo != null and record.payNo !='' ">
+ and pay_no = #{record.payNo}
+ </if>
<if test="record.operationId != null and record.operationId !='' ">
and operation_id = #{record.operationId}
</if>
diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/MoneyCardUseV2Dao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/MoneyCardUseV2Dao.xml
new file mode 100644
index 0000000..86ef51f
--- /dev/null
+++ b/zq-erp/src/main/resources/mybatis/mapper/hive/MoneyCardUseV2Dao.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.matrix.system.hive.dao.MoneyCardUseV2Dao">
+
+</mapper>
\ No newline at end of file
diff --git a/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopCouponRecordDao.xml b/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopCouponRecordDao.xml
index cbb939b..4a915c2 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopCouponRecordDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopCouponRecordDao.xml
@@ -311,4 +311,8 @@
</if>
</select>
+ <select id="countUnuseCouponRecord" resultType="java.lang.Integer">
+ select count(*) from shop_coupon_record where user_id = #{userId} and is_using = 2
+ </select>
+
</mapper>
\ No newline at end of file
diff --git a/zq-erp/src/main/resources/static/demoPage/soketLoginTest.html b/zq-erp/src/main/resources/static/demoPage/soketLoginTest.html
index 50de183..0598c8d 100644
--- a/zq-erp/src/main/resources/static/demoPage/soketLoginTest.html
+++ b/zq-erp/src/main/resources/static/demoPage/soketLoginTest.html
@@ -82,7 +82,8 @@
console.log("您的浏览器支持WebSocket");
//实现化WebSocket对象,指定要连接的服务器地址与端口 建立连接
- var socketUrl="ws://localhost:8080/webSocketServer?userId=123";
+ //var socketUrl="ws://test.hive.jyymatrix.cc/webSocketServer?userId=123";
+ var socketUrl="ws://192.168.0.6:8080/webSocketServer?userId=123";
console.log(socketUrl);
if(socket!=null){
socket.close();
diff --git a/zq-erp/src/test/java/com/matrix/ParameterSettingsTool.java b/zq-erp/src/test/java/com/matrix/ParameterSettingsTool.java
index 9868e2b..a29c349 100644
--- a/zq-erp/src/test/java/com/matrix/ParameterSettingsTool.java
+++ b/zq-erp/src/test/java/com/matrix/ParameterSettingsTool.java
@@ -61,6 +61,13 @@
newSetting2.setCategory("仓库设置");
newSettings.add(newSetting2);
+ ParameterSettings newSetting3=new ParameterSettings();
+ newSetting3.setCode(AppConstance.WECHARPAY_RECHARGE_NOTIFYURL);
+ newSetting3.setName("储值卡充值回调地址");
+ newSetting3.setType(1);
+ newSetting3.setCategory("微信开发配置");
+ newSettings.add(newSetting3);
+
--
Gitblit v1.9.1