diff --git a/pom.xml b/pom.xml
index 670ee56d..635fa570 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,7 +14,6 @@
yshop-logging
yshop-system
yshop-tools
- yshop-monitor
yshop-generator
yshop-api
yshop-mp
diff --git a/yshop-api/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java b/yshop-api/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java
index cc8303ba..2183183f 100644
--- a/yshop-api/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java
+++ b/yshop-api/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java
@@ -18,6 +18,7 @@ import co.yixiang.common.web.vo.Paging;
import co.yixiang.constant.ShopConstants;
import co.yixiang.domain.AlipayConfig;
import co.yixiang.domain.vo.TradeVo;
+import co.yixiang.enums.BillDetailEnum;
import co.yixiang.enums.BillEnum;
import co.yixiang.enums.OrderInfoEnum;
import co.yixiang.exception.ErrorRequestException;
@@ -62,13 +63,10 @@ import co.yixiang.modules.user.service.YxWechatUserService;
import co.yixiang.modules.user.web.vo.YxUserAddressQueryVo;
import co.yixiang.modules.user.web.vo.YxUserQueryVo;
import co.yixiang.modules.user.web.vo.YxWechatUserQueryVo;
-import co.yixiang.modules.wechat.entity.YxWechatTemplate;
-import co.yixiang.modules.wechat.service.YxWechatTemplateService;
-import co.yixiang.mp.service.WxMpTemplateMessageService;
import co.yixiang.mp.service.YxPayService;
+import co.yixiang.mp.service.YxTemplateService;
import co.yixiang.service.AlipayService;
import co.yixiang.utils.OrderUtil;
-import co.yixiang.utils.RedisUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -128,8 +126,6 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl().eq("tempkey","OPENTM410119152"));
- Map map = new HashMap<>();
- map.put("first","您在yshop的订单退款申请被通过,钱款将很快还至您的支付账户。");
- map.put("keyword1",orderQueryVo.getOrderId());//订单号
- map.put("keyword2",orderQueryVo.getPayPrice().toString());
- map.put("keyword3",OrderUtil.stampToDate(orderQueryVo.getAddTime().toString()));
- map.put("remark","yshop电商系统为你服务!");
- templateMessageService.sendWxMpTemplateMessage( wechatUser.getOpenid()
- ,WechatTemplate.getTempid(),
- siteUrl+"/order/detail/"+orderQueryVo.getOrderId(),map);
+ templateService.refundSuccessNotice(orderQueryVo.getOrderId(),
+ orderQueryVo.getPayPrice().toString(),wechatUser.getOpenid(),
+ OrderUtil.stampToDate(orderQueryVo.getAddTime().toString()));
}else if(StrUtil.isNotBlank(wechatUser.getRoutineOpenid())){
//todo 小程序通知
}
@@ -290,22 +275,11 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl().eq("tempkey","OPENTM200565259"));
- //付款成功微信模板通知用户
- Map map = new HashMap<>();
- map.put("first","亲,宝贝已经启程了,好想快点来到你身边。");
- map.put("keyword1",storeOrder.getOrderId());//订单号
- map.put("keyword2",expressQueryVo.getName());
- map.put("keyword3",param.getDeliveryId());
- map.put("remark","yshop电商系统为你服务!");
- templateMessageService.sendWxMpTemplateMessage( wechatUser.getOpenid()
- ,WechatTemplate.getTempid(),
- siteUrl+"/order/detail/"+orderQueryVo.getOrderId(),map);
+ templateService.deliverySuccessNotice(storeOrder.getOrderId(),
+ expressQueryVo.getName(),param.getDeliveryId(),wechatUser.getOpenid());
}else if(StrUtil.isNotBlank(wechatUser.getRoutineOpenid())){
//todo 小程序通知
}
@@ -979,23 +953,12 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl().eq("tempkey","OPENTM207791277"));
- //付款成功微信模板通知用户
- Map map = new HashMap<>();
- map.put("first","您的订单已支付成功,我们会尽快为您发货。");
- map.put("keyword1",orderInfo.getOrderId());//订单号
- map.put("keyword2",orderInfo.getPayPrice().toString());
- map.put("remark","yshop电商系统为你服务!");
- templateMessageService.sendWxMpTemplateMessage( wechatUser.getOpenid()
- ,WechatTemplate.getTempid(),
- siteUrl+"/order/detail/"+orderInfo.getOrderId(),map);
+ templateService.paySuccessNotice(orderInfo.getOrderId(),
+ orderInfo.getPayPrice().toString(),wechatUser.getOpenid());
}else if(StrUtil.isNotBlank(wechatUser.getRoutineOpenid())){
//todo 小程序模板通知
@@ -1049,7 +1012,8 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl {
+ void updateRecharge(YxUserRecharge userRecharge);
+
+ YxUserRecharge getInfoByOrderId(String orderId);
+
void addRecharge(RechargeParam param,int uid);
+
/**
* 根据ID获取查询对象
* @param id
diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/service/impl/YxUserRechargeServiceImpl.java b/yshop-api/src/main/java/co/yixiang/modules/user/service/impl/YxUserRechargeServiceImpl.java
index 64b6aa1a..dcd158bc 100644
--- a/yshop-api/src/main/java/co/yixiang/modules/user/service/impl/YxUserRechargeServiceImpl.java
+++ b/yshop-api/src/main/java/co/yixiang/modules/user/service/impl/YxUserRechargeServiceImpl.java
@@ -8,10 +8,19 @@
*/
package co.yixiang.modules.user.service.impl;
+import cn.hutool.core.util.NumberUtil;
import co.yixiang.common.service.impl.BaseServiceImpl;
import co.yixiang.common.web.vo.Paging;
+import co.yixiang.enums.AppFromEnum;
+import co.yixiang.enums.BillEnum;
+import co.yixiang.enums.OrderInfoEnum;
+import co.yixiang.enums.PayTypeEnum;
+import co.yixiang.modules.user.entity.YxUser;
+import co.yixiang.modules.user.entity.YxUserBill;
import co.yixiang.modules.user.entity.YxUserRecharge;
+import co.yixiang.modules.user.mapper.YxUserMapper;
import co.yixiang.modules.user.mapper.YxUserRechargeMapper;
+import co.yixiang.modules.user.service.YxUserBillService;
import co.yixiang.modules.user.service.YxUserRechargeService;
import co.yixiang.modules.user.web.param.RechargeParam;
import co.yixiang.modules.user.web.param.YxUserRechargeQueryParam;
@@ -19,6 +28,7 @@ import co.yixiang.modules.user.web.vo.YxUserRechargeQueryVo;
import co.yixiang.utils.OrderUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -35,7 +45,7 @@ import java.math.BigDecimal;
*
*
* @author hupeng
- * @since 2019-12-08
+ * @since 2020-03-02
*/
@Slf4j
@Service
@@ -44,21 +54,60 @@ import java.math.BigDecimal;
public class YxUserRechargeServiceImpl extends BaseServiceImpl implements YxUserRechargeService {
private final YxUserRechargeMapper yxUserRechargeMapper;
+ private final YxUserBillService billService;
+ private final YxUserMapper yxUserMapper;
+ @Override
+ public void updateRecharge(YxUserRecharge userRecharge) {
+ YxUser user = yxUserMapper.selectById(userRecharge.getUid());
+
+ //修改状态
+ userRecharge.setPaid(OrderInfoEnum.PAY_STATUS_1.getValue());
+ userRecharge.setPayTime(OrderUtil.getSecondTimestampTwo());
+ userRecharge.setNickname(user.getNickname());
+ yxUserRechargeMapper.updateById(userRecharge);
+
+ //增加流水
+ YxUserBill userBill = new YxUserBill();
+ userBill.setUid(userRecharge.getUid());
+ userBill.setTitle("用户余额充值");
+ userBill.setLinkId(userRecharge.getId().toString());
+ userBill.setCategory("now_money");
+ userBill.setType("recharge");
+ userBill.setNumber(userRecharge.getPrice());
+ userBill.setBalance(NumberUtil.add(userRecharge.getPrice(),user.getNowMoney()));
+ userBill.setMark("成功充值余额"+userRecharge.getPrice());
+ userBill.setStatus(BillEnum.STATUS_1.getValue());
+ userBill.setPm(BillEnum.PM_1.getValue());
+ userBill.setAddTime(OrderUtil.getSecondTimestampTwo());
+ billService.save(userBill);
+
+ //update 余额
+ user.setNowMoney(NumberUtil.add(userRecharge.getPrice(),user.getNowMoney()));
+ yxUserMapper.updateById(user);
+ }
+
+ @Override
+ public YxUserRecharge getInfoByOrderId(String orderId) {
+ YxUserRecharge userRecharge = new YxUserRecharge();
+ userRecharge.setOrderId(orderId);
+
+ return yxUserRechargeMapper.selectOne(Wrappers.query(userRecharge));
+ }
/**
- * 充值(废弃掉)
+ * 充值
* @param param
*/
@Override
public void addRecharge(RechargeParam param,int uid) {
YxUserRecharge yxUserRecharge = new YxUserRecharge();
- String orderId = "re_"+OrderUtil.orderSn();
- yxUserRecharge.setOrderId(orderId);
+
+ yxUserRecharge.setOrderId(param.getOrderSn());
yxUserRecharge.setUid(uid);
yxUserRecharge.setPrice(BigDecimal.valueOf(param.getPrice()));
- yxUserRecharge.setRechargeType("weixin");
- yxUserRecharge.setPaid(0);
+ yxUserRecharge.setRechargeType(PayTypeEnum.WEIXIN.getValue());
+ yxUserRecharge.setPaid(OrderInfoEnum.PAY_STATUS_0.getValue());
yxUserRecharge.setAddTime(OrderUtil.getSecondTimestampTwo());
yxUserRechargeMapper.insert(yxUserRecharge);
diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/web/controller/UserRechargeController.java b/yshop-api/src/main/java/co/yixiang/modules/user/web/controller/UserRechargeController.java
index c0054629..320a87ed 100644
--- a/yshop-api/src/main/java/co/yixiang/modules/user/web/controller/UserRechargeController.java
+++ b/yshop-api/src/main/java/co/yixiang/modules/user/web/controller/UserRechargeController.java
@@ -14,6 +14,7 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import co.yixiang.common.api.ApiResult;
import co.yixiang.common.web.controller.BaseController;
+import co.yixiang.enums.BillDetailEnum;
import co.yixiang.exception.ErrorRequestException;
import co.yixiang.modules.shop.service.YxSystemConfigService;
import co.yixiang.modules.user.entity.YxUser;
@@ -48,7 +49,7 @@ import java.util.Map;
*
*
* @author hupeng
- * @since 2019-03-01
+ * @since 2020-03-01
*/
@Slf4j
@RestController
@@ -78,17 +79,22 @@ public class UserRechargeController extends BaseController {
//生成分布式唯一值
String orderSn = IdUtil.getSnowflake(0,0).nextIdStr();
+
+ param.setOrderSn(orderSn);
+ userRechargeService.addRecharge(param,uid);
+
BigDecimal bigDecimal = new BigDecimal(100);
int price = bigDecimal.multiply(BigDecimal.valueOf(param.getPrice())).intValue();
try{
if(param.getFrom().equals("weixinh5")){
- WxPayMwebOrderResult result = payService.wxH5Pay(orderSn,"H5充值", price,2);
+ WxPayMwebOrderResult result = payService.wxH5Pay(orderSn,"H5充值", price,
+ BillDetailEnum.TYPE_1.getValue());
map.put("data",result.getMwebUrl());
}else{
YxWechatUser wechatUser = wechatUserService.getById(uid);
if(ObjectUtil.isNull(wechatUser)) throw new ErrorRequestException("用户错误");
WxPayMpOrderResult result = payService.wxPay(orderSn,wechatUser.getOpenid(),
- "H5充值", price,2);
+ "公众号充值", price,BillDetailEnum.TYPE_1.getValue());
Map jsConfig = new HashMap<>();
jsConfig.put("appId",result.getAppId());
jsConfig.put("timeStamp",result.getTimeStamp());
diff --git a/yshop-api/src/main/java/co/yixiang/modules/user/web/param/RechargeParam.java b/yshop-api/src/main/java/co/yixiang/modules/user/web/param/RechargeParam.java
index 2b061f84..c976028f 100644
--- a/yshop-api/src/main/java/co/yixiang/modules/user/web/param/RechargeParam.java
+++ b/yshop-api/src/main/java/co/yixiang/modules/user/web/param/RechargeParam.java
@@ -18,4 +18,6 @@ public class RechargeParam implements Serializable {
@NotNull(message = "金额必填")
@Min(value = 1,message = "充值金额不能低于1")
private Double price;
+
+ private String orderSn;
}
diff --git a/yshop-api/src/main/java/co/yixiang/modules/wechat/web/controller/WechatController.java b/yshop-api/src/main/java/co/yixiang/modules/wechat/web/controller/WechatController.java
index cb23c679..a76a5535 100644
--- a/yshop-api/src/main/java/co/yixiang/modules/wechat/web/controller/WechatController.java
+++ b/yshop-api/src/main/java/co/yixiang/modules/wechat/web/controller/WechatController.java
@@ -12,11 +12,16 @@ import cn.hutool.core.util.StrUtil;
import co.yixiang.annotation.AnonymousAccess;
import co.yixiang.common.api.ApiResult;
import co.yixiang.common.web.controller.BaseController;
+import co.yixiang.enums.BillDetailEnum;
+import co.yixiang.enums.OrderInfoEnum;
import co.yixiang.modules.order.entity.YxStoreOrder;
import co.yixiang.modules.order.service.YxStoreOrderService;
import co.yixiang.modules.order.web.vo.YxStoreOrderQueryVo;
import co.yixiang.modules.shop.service.YxSystemConfigService;
+import co.yixiang.modules.user.entity.YxUserRecharge;
+import co.yixiang.modules.user.service.YxUserRechargeService;
import co.yixiang.mp.config.WxMpConfiguration;
+import co.yixiang.mp.config.WxPayConfiguration;
import co.yixiang.utils.RedisUtil;
import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse;
import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
@@ -53,9 +58,9 @@ import java.util.Map;
@Api(value = "微信模块", tags = "微信:微信模块", description = "微信模块")
public class WechatController extends BaseController {
- private final WxPayService wxPayService;
private final YxStoreOrderService orderService;
private final YxSystemConfigService systemConfigService;
+ private final YxUserRechargeService userRechargeService;
/**
@@ -95,6 +100,7 @@ public class WechatController extends BaseController {
@ApiOperation(value = "微信支付回调",notes = "微信支付回调")
public String notify(@RequestBody String xmlData) {
try {
+ WxPayService wxPayService = WxPayConfiguration.getPayService();
WxPayOrderNotifyResult notifyResult = wxPayService.parseOrderNotifyResult(xmlData);
String orderId = notifyResult.getOutTradeNo();
YxStoreOrderQueryVo orderInfo = orderService.getOrderInfo(orderId,0);
@@ -112,6 +118,44 @@ public class WechatController extends BaseController {
}
+ /**
+ * 微信支付充值回调
+ */
+ @AnonymousAccess
+ @PostMapping("/wechat/renotify")
+ @ApiOperation(value = "微信支付充值回调",notes = "微信支付充值回调")
+ public String renotify(@RequestBody String xmlData) {
+ try {
+ WxPayService wxPayService = WxPayConfiguration.getPayService();
+ WxPayOrderNotifyResult notifyResult = wxPayService.parseOrderNotifyResult(xmlData);
+ String orderId = notifyResult.getOutTradeNo();
+ String attach = notifyResult.getAttach();
+ if(BillDetailEnum.TYPE_3.getValue().equals(attach)){
+ YxStoreOrderQueryVo orderInfo = orderService.getOrderInfo(orderId,0);
+ if(orderInfo == null) return WxPayNotifyResponse.success("处理成功!");
+ if(OrderInfoEnum.PAY_STATUS_1.getValue().equals(orderInfo.getPaid())){
+ return WxPayNotifyResponse.success("处理成功!");
+ }
+ orderService.paySuccess(orderInfo.getOrderId(),"weixin");
+ }else if(BillDetailEnum.TYPE_1.getValue().equals(attach)){
+ //处理充值
+ YxUserRecharge userRecharge = userRechargeService.getInfoByOrderId(orderId);
+ if(userRecharge == null) return WxPayNotifyResponse.success("处理成功!");
+ if(OrderInfoEnum.PAY_STATUS_1.getValue().equals(userRecharge.getPaid())){
+ return WxPayNotifyResponse.success("处理成功!");
+ }
+
+ userRechargeService.updateRecharge(userRecharge);
+ }
+
+ return WxPayNotifyResponse.success("处理成功!");
+ } catch (WxPayException e) {
+ log.error(e.getMessage());
+ return WxPayNotifyResponse.fail(e.getMessage());
+ }
+
+ }
+
/**
* 微信退款回调
* @param xmlData
@@ -123,6 +167,7 @@ public class WechatController extends BaseController {
@PostMapping("/notify/refund")
public String parseRefundNotifyResult(@RequestBody String xmlData) {
try {
+ WxPayService wxPayService = WxPayConfiguration.getPayService();
WxPayRefundNotifyResult result = wxPayService.parseRefundNotifyResult(xmlData);
String orderId = result.getReqInfo().getOutTradeNo();
Integer refundFee = result.getReqInfo().getRefundFee()/100;
diff --git a/yshop-common/src/main/java/co/yixiang/enums/BillDetailEnum.java b/yshop-common/src/main/java/co/yixiang/enums/BillDetailEnum.java
new file mode 100644
index 00000000..96db5bc5
--- /dev/null
+++ b/yshop-common/src/main/java/co/yixiang/enums/BillDetailEnum.java
@@ -0,0 +1,31 @@
+package co.yixiang.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 账单明细相关枚举
+ */
+@Getter
+@AllArgsConstructor
+public enum BillDetailEnum {
+
+ TYPE_1("recharge","充值"),
+ TYPE_2("brokerage","返佣"),
+ TYPE_3("pay_product","消费"),
+ TYPE_4("extract","提现"),
+ TYPE_5("pay_product_refund","退款"),
+ TYPE_6("system_add","系统添加"),
+ TYPE_7("system_sub","系统减少"),
+
+
+ CATEGORY_1("now_money","金额"),
+ CATEGORY_2("integral","积分");
+
+
+
+ private String value;
+ private String desc;
+
+
+}
diff --git a/yshop-common/src/main/java/co/yixiang/enums/BillEnum.java b/yshop-common/src/main/java/co/yixiang/enums/BillEnum.java
index bbd2b0fe..6959f06d 100644
--- a/yshop-common/src/main/java/co/yixiang/enums/BillEnum.java
+++ b/yshop-common/src/main/java/co/yixiang/enums/BillEnum.java
@@ -18,6 +18,7 @@ public enum BillEnum {
STATUS_2(2,"无效");
+
private Integer value;
private String desc;
diff --git a/yshop-monitor/pom.xml b/yshop-monitor/pom.xml
deleted file mode 100644
index 39562bcc..00000000
--- a/yshop-monitor/pom.xml
+++ /dev/null
@@ -1,82 +0,0 @@
-
-
-
-
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.1.0.RELEASE
-
-
-
- 4.0.0
-
- yshop-monitor
- 2.0
-
- 客户端监控模块
-
-
- UTF-8
-
-
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
-
- org.hyperic
- sigar
- 1.6.5.132
-
-
- junit
- junit
- 4.11
- test
-
-
-
-
-
- public
- aliyun nexus
- http://maven.aliyun.com/nexus/content/groups/public/
-
- true
-
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
- true
-
-
-
-
-
-
-
-
- true
- src/main/resources
-
- sigar-lib/**
-
-
-
-
-
diff --git a/yshop-monitor/src/main/java/co/yixiang/MonitorRun.java b/yshop-monitor/src/main/java/co/yixiang/MonitorRun.java
deleted file mode 100644
index a8d466b7..00000000
--- a/yshop-monitor/src/main/java/co/yixiang/MonitorRun.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package co.yixiang;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.scheduling.annotation.EnableAsync;
-
-/**
- *
- * @author: Zhang houying
- * @date: 2019/11/3
- */
-@EnableAsync
-@SpringBootApplication
-public class MonitorRun {
-
- public static void main(String[] args) {
- SpringApplication.run(MonitorRun.class, args);
- System.out.println("javapath:"+System.getProperty("java.library.path"));
- }
-
-}
diff --git a/yshop-monitor/src/main/java/co/yixiang/res/ServerMonitorController.java b/yshop-monitor/src/main/java/co/yixiang/res/ServerMonitorController.java
deleted file mode 100644
index 06e660ab..00000000
--- a/yshop-monitor/src/main/java/co/yixiang/res/ServerMonitorController.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package co.yixiang.res;
-
-import org.hyperic.sigar.CpuInfo;
-import org.hyperic.sigar.FileSystem;
-import org.hyperic.sigar.FileSystemUsage;
-import org.hyperic.sigar.Sigar;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * @author Zhang houying
- * @date 2019-11-03
- */
-@RestController
-@RequestMapping("/api/serverMonitor")
-public class ServerMonitorController {
-
- private Sigar sigar = new Sigar();
- private static final double GB = 1024*1024*1024.00;
-
- @GetMapping
- public ResponseEntity