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 getServerInfo(){ - Map resultMap = new HashMap<>(8); - try { - CpuInfo[] infoList = sigar.getCpuInfoList(); - resultMap.put("cpuRate",sigar.getCpuPerc().getCombined()); - resultMap.put("cpuCore",infoList.length); - resultMap.put("memTotal",sigar.getMem().getTotal()/GB); - resultMap.put("memUsed",sigar.getMem().getUsed()/GB); - FileSystem[] fsArray = sigar.getFileSystemList(); - double diskTotal = 0; - double diskUsed = 0; - for (FileSystem fileSystem : fsArray) { - try { - FileSystemUsage usage = null; - usage = sigar.getFileSystemUsage(fileSystem.getDirName()); - // 本地硬盘 - if (fileSystem.getType() == 2) { - diskTotal += usage.getTotal() / GB * 1024; - diskUsed += usage.getUsed() / GB * 1024; - } - } catch (Exception ignored) { - } - } - resultMap.put("diskTotal",diskTotal); - resultMap.put("diskUsed",diskUsed); - resultMap.put("swapTotal",sigar.getSwap().getTotal()/GB); - resultMap.put("swapUsed",sigar.getSwap().getUsed()/GB); - } catch (Exception e) { - e.printStackTrace(); - } - return new ResponseEntity<>(resultMap, HttpStatus.OK); - } - -} diff --git a/yshop-monitor/src/main/java/co/yixiang/utils/SigarUtil.java b/yshop-monitor/src/main/java/co/yixiang/utils/SigarUtil.java deleted file mode 100644 index 15b04664..00000000 --- a/yshop-monitor/src/main/java/co/yixiang/utils/SigarUtil.java +++ /dev/null @@ -1,279 +0,0 @@ -package co.yixiang.utils; - -import org.hyperic.sigar.*; -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.util.Map; -import java.util.Properties; - -/** - * @author ZhangHouYing - * @date 2019-11-03 15:04 - */ -public class SigarUtil { - - public static void main(String[] args) { - try { - // System信息,从jvm获取 - property(); - System.out.println("----------------------------------"); - // cpu信息 - cpu(); - System.out.println("----------------------------------"); - // 内存信息 - memory(); - System.out.println("----------------------------------"); - // 操作系统信息 - os(); - System.out.println("----------------------------------"); - // 用户信息 - who(); - System.out.println("----------------------------------"); - // 文件系统信息 - file(); - System.out.println("----------------------------------"); - // 网络信息 - net(); - System.out.println("----------------------------------"); - // 以太网信息 - ethernet(); - System.out.println("----------------------------------"); - } catch (Exception e1) { - e1.printStackTrace(); - } - } - - private static void property() throws UnknownHostException { - Runtime r = Runtime.getRuntime(); - Properties props = System.getProperties(); - InetAddress addr; - addr = InetAddress.getLocalHost(); - String ip = addr.getHostAddress(); - Map map = System.getenv(); - // 获取用户名 - String userName = map.get("USERNAME"); - // 获取计算机名 - String computerName = map.get("COMPUTERNAME"); - // 获取计算机域名 - String userDomain = map.get("USERDOMAIN"); - System.out.println("用户名: " + userName); - System.out.println("计算机名: " + computerName); - System.out.println("计算机域名: " + userDomain); - System.out.println("本地ip地址: " + ip); - System.out.println("本地主机名: " + addr.getHostName()); - System.out.println("JVM可以使用的总内存: " + r.totalMemory()); - System.out.println("JVM可以使用的剩余内存: " + r.freeMemory()); - System.out.println("JVM可以使用的处理器个数: " + r.availableProcessors()); - System.out.println("Java的运行环境版本: " + props.getProperty("java.version")); - System.out.println("Java的运行环境供应商: " + props.getProperty("java.vendor")); - System.out.println("Java供应商的URL: " + props.getProperty("java.vendor.url")); - System.out.println("Java的安装路径: " + props.getProperty("java.home")); - System.out.println("Java的虚拟机规范版本: " + props.getProperty("java.vm.specification.version")); - System.out.println("Java的虚拟机规范供应商: " + props.getProperty("java.vm.specification.vendor")); - System.out.println("Java的虚拟机规范名称: " + props.getProperty("java.vm.specification.name")); - System.out.println("Java的虚拟机实现版本: " + props.getProperty("java.vm.version")); - System.out.println("Java的虚拟机实现供应商: " + props.getProperty("java.vm.vendor")); - System.out.println("Java的虚拟机实现名称: " + props.getProperty("java.vm.name")); - System.out.println("Java运行时环境规范版本: " + props.getProperty("java.specification.version")); - System.out.println("Java运行时环境规范供应商: " + props.getProperty("java.specification.vender")); - System.out.println("Java运行时环境规范名称: " + props.getProperty("java.specification.name")); - System.out.println("Java的类格式版本号: " + props.getProperty("java.class.version")); - System.out.println("Java的类路径: " + props.getProperty("java.class.path")); - System.out.println("加载库时搜索的路径列表: " + props.getProperty("java.library.path")); - System.out.println("默认的临时文件路径: " + props.getProperty("java.io.tmpdir")); - System.out.println("一个或多个扩展目录的路径: " + props.getProperty("java.ext.dirs")); - System.out.println("操作系统的名称: " + props.getProperty("os.name")); - System.out.println("操作系统的构架: " + props.getProperty("os.arch")); - System.out.println("操作系统的版本: " + props.getProperty("os.version")); - System.out.println("文件分隔符: " + props.getProperty("file.separator")); - System.out.println("路径分隔符: " + props.getProperty("path.separator")); - System.out.println("行分隔符: " + props.getProperty("line.separator")); - System.out.println("用户的账户名称: " + props.getProperty("user.name")); - System.out.println("用户的主目录: " + props.getProperty("user.home")); - System.out.println("用户的当前工作目录: " + props.getProperty("user.dir")); - } - - private static void memory() throws SigarException { - Sigar sigar = new Sigar(); - Mem mem = sigar.getMem(); - // 内存总量 - System.out.println("内存总量: " + mem.getTotal() / 1024L + "K av"); - // 当前内存使用量 - System.out.println("当前内存使用量: " + mem.getUsed() / 1024L + "K used"); - // 当前内存剩余量 - System.out.println("当前内存剩余量: " + mem.getFree() / 1024L + "K free"); - Swap swap = sigar.getSwap(); - // 交换区总量 - System.out.println("交换区总量: " + swap.getTotal() / 1024L + "K av"); - // 当前交换区使用量 - System.out.println("当前交换区使用量: " + swap.getUsed() / 1024L + "K used"); - // 当前交换区剩余量 - System.out.println("当前交换区剩余量: " + swap.getFree() / 1024L + "K free"); - } - - private static void cpu() throws SigarException { - Sigar sigar = new Sigar(); - CpuInfo[] infos = sigar.getCpuInfoList(); - CpuPerc[] cpuList; - - System.out.println("cpu 总量参数情况:" + sigar.getCpu()); - System.out.println("cpu 总百分比情况:" + sigar.getCpuPerc()); - - cpuList = sigar.getCpuPercList(); - // 不管是单块CPU还是多CPU都适用 - for (int i = 0; i < infos.length; i++) { - CpuInfo info = infos[i]; - System.out.println("第" + (i + 1) + "块CPU信息"); - // CPU的总量MHz - System.out.println("CPU的总量MHz: " + info.getMhz()); - // 获得CPU的卖主,如:Intel - System.out.println("CPU生产商: " + info.getVendor()); - // 获得CPU的类别 - System.out.println("CPU类别: " + info.getModel()); - // 缓冲存储器数量 - System.out.println("CPU缓存数量: " + info.getCacheSize()); - printCpuPerc(cpuList[i]); - } - } - - private static void printCpuPerc(CpuPerc cpu) { - System.out.println("CPU用户使用率: " + CpuPerc.format(cpu.getUser())); - System.out.println("CPU系统使用率: " + CpuPerc.format(cpu.getSys())); - System.out.println("CPU当前等待率: " + CpuPerc.format(cpu.getWait())); - System.out.println("CPU当前错误率: " + CpuPerc.format(cpu.getNice())); - System.out.println("CPU当前空闲率: " + CpuPerc.format(cpu.getIdle())); - System.out.println("CPU总的使用率: " + CpuPerc.format(cpu.getCombined())); - } - - private static void os() { - OperatingSystem os = OperatingSystem.getInstance(); - // 操作系统内核类型如: 386、486、586等x86 - System.out.println("操作系统: " + os.getArch()); - System.out.println("操作系统CpuEndian(): " + os.getCpuEndian()); - System.out.println("操作系统DataModel(): " + os.getDataModel()); - // 系统描述 - System.out.println("操作系统的描述: " + os.getDescription()); - // 操作系统类型 - System.out.println("OS.getName(): " + os.getName()); - System.out.println("OS.getPatchLevel(): " + os.getPatchLevel()); - // 操作系统的卖主 - System.out.println("操作系统的卖主: " + os.getVendor()); - // 卖主名称 - System.out.println("操作系统的卖主名: " + os.getVendorCodeName()); - // 操作系统名称 - System.out.println("操作系统名称: " + os.getVendorName()); - // 操作系统卖主类型 - System.out.println("操作系统卖主类型: " + os.getVendorVersion()); - // 操作系统的版本号 - System.out.println("操作系统的版本号: " + os.getVersion()); - } - - private static void who() throws SigarException { - Sigar sigar = new Sigar(); - Who[] whos = sigar.getWhoList(); - if (whos != null && whos.length > 0) { - for (Who who : whos) { - System.out.println("用户控制台: " + who.getDevice()); - System.out.println("用户host: " + who.getHost()); - // 当前系统进程表中的用户名 - System.out.println("当前系统进程表中的用户名: " + who.getUser()); - } - } - } - - private static void file() throws Exception { - Sigar sigar = new Sigar(); - FileSystem[] fsList = sigar.getFileSystemList(); - for (int i = 0; i < fsList.length; i++) { - System.out.println("分区的盘符名称" + i); - FileSystem fs = fsList[i]; - // 分区的盘符名称 - System.out.println("盘符名称: " + fs.getDevName()); - // 分区的盘符名称 - System.out.println("盘符路径: " + fs.getDirName()); - System.out.println("盘符标志: " + fs.getFlags()); - // 文件系统类型,比如 FAT32、NTFS - System.out.println("盘符类型: " + fs.getSysTypeName()); - // 文件系统类型名,比如本地硬盘、光驱、网络文件系统等 - System.out.println("盘符类型名: " + fs.getTypeName()); - // 文件系统类型 - System.out.println("盘符文件系统类型: " + fs.getType()); - FileSystemUsage usage; - usage = sigar.getFileSystemUsage(fs.getDirName()); - switch (fs.getType()) { - // TYPE_UNKNOWN :未知 - case 0: break; - // TYPE_NONE - case 1: break; - // TYPE_LOCAL_DISK : 本地硬盘 - case 2: - // 文件系统总大小 - System.out.println(fs.getDevName() + "总大小: " + usage.getTotal() + "KB"); - // 文件系统剩余大小 - System.out.println(fs.getDevName() + "剩余大小: " + usage.getFree() + "KB"); - // 文件系统可用大小 - System.out.println(fs.getDevName() + "可用大小: " + usage.getAvail() + "KB"); - // 文件系统已经使用量 - System.out.println(fs.getDevName() + "已经使用量: " + usage.getUsed() + "KB"); - double usePercent = usage.getUsePercent() * 100D; - // 文件系统资源的利用率 - System.out.println(fs.getDevName() + "资源的利用率: " + usePercent + "%"); - break; - // TYPE_NETWORK :网络 - case 3: break; - // TYPE_RAM_DISK :闪存 - case 4: break; - // TYPE_CD_ROM :光驱 - case 5: break; - // TYPE_SWAP :页面交换 - case 6: break; - default: break; - } - System.out.println(fs.getDevName() + "读出:" + usage.getDiskReads()); - System.out.println(fs.getDevName() + "写入:" + usage.getDiskWrites()); - } - } - - private static void net() throws Exception { - Sigar sigar = new Sigar(); - String[] ifNames = sigar.getNetInterfaceList(); - for (String name : ifNames) { - NetInterfaceConfig ifconfig = sigar.getNetInterfaceConfig(name); - System.out.println("网络设备名: " + name); - System.out.println("IP地址: " + ifconfig.getAddress()); - System.out.println("子网掩码: " + ifconfig.getNetmask()); - if ((ifconfig.getFlags() & 1L) <= 0L) { - System.out.println("!IFF_UP...skipping getNetInterfaceStat"); - continue; - } - NetInterfaceStat ifstat = sigar.getNetInterfaceStat(name); - System.out.println(name + "接收的总包裹数:" + ifstat.getRxPackets()); - System.out.println(name + "发送的总包裹数:" + ifstat.getTxPackets()); - System.out.println(name + "接收到的总字节数:" + ifstat.getRxBytes()); - System.out.println(name + "发送的总字节数:" + ifstat.getTxBytes()); - System.out.println(name + "接收到的错误包数:" + ifstat.getRxErrors()); - System.out.println(name + "发送数据包时的错误数:" + ifstat.getTxErrors()); - System.out.println(name + "接收时丢弃的包数:" + ifstat.getRxDropped()); - System.out.println(name + "发送时丢弃的包数:" + ifstat.getTxDropped()); - } - } - - private static void ethernet() throws SigarException { - Sigar sigar; - sigar = new Sigar(); - String[] ifAces = sigar.getNetInterfaceList(); - for (String ifAce : ifAces) { - NetInterfaceConfig cfg = sigar.getNetInterfaceConfig(ifAce); - if (NetFlags.LOOPBACK_ADDRESS.equals(cfg.getAddress()) || (cfg.getFlags() & NetFlags.IFF_LOOPBACK) != 0 - || NetFlags.NULL_HWADDR.equals(cfg.getHwaddr())) { - continue; - } - System.out.println(cfg.getName() + "IP地址:" + cfg.getAddress()); - System.out.println(cfg.getName() + "网关广播地址:" + cfg.getBroadcast()); - System.out.println(cfg.getName() + "网卡MAC地址:" + cfg.getHwaddr()); - System.out.println(cfg.getName() + "子网掩码:" + cfg.getNetmask()); - System.out.println(cfg.getName() + "网卡描述信息:" + cfg.getDescription()); - System.out.println(cfg.getName() + "网卡类型" + cfg.getType()); - } - } -} diff --git a/yshop-monitor/src/main/resources/banner.txt b/yshop-monitor/src/main/resources/banner.txt deleted file mode 100644 index 4dac28d9..00000000 --- a/yshop-monitor/src/main/resources/banner.txt +++ /dev/null @@ -1,15 +0,0 @@ - - __ __ ___ _ _ ___ _ __ - \ \ / // __|| | | | / _ \ | '_ \ - \ \/ / \__ \| |--| || (_) || |_) | - \/ / |___/|_| |_| \___/ | .__/ - / / | | - /_/ |_| - - - - :: Spring Boot :: (v2.1.0.RELEASE) - - - - diff --git a/yshop-monitor/src/main/resources/config/application.yml b/yshop-monitor/src/main/resources/config/application.yml deleted file mode 100644 index 5830057e..00000000 --- a/yshop-monitor/src/main/resources/config/application.yml +++ /dev/null @@ -1,2 +0,0 @@ -server: - port: 8777 diff --git a/yshop-monitor/src/main/resources/logback.xml b/yshop-monitor/src/main/resources/logback.xml deleted file mode 100644 index ddd6b718..00000000 --- a/yshop-monitor/src/main/resources/logback.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - yshop Monitor - - - - - %black(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - %gray(%msg%n) - utf-8 - - - - - - - - diff --git a/yshop-monitor/src/main/resources/sigar-lib/libsigar-amd64-freebsd-6.so b/yshop-monitor/src/main/resources/sigar-lib/libsigar-amd64-freebsd-6.so deleted file mode 100644 index 3e94f0d2..00000000 Binary files a/yshop-monitor/src/main/resources/sigar-lib/libsigar-amd64-freebsd-6.so and /dev/null differ diff --git a/yshop-monitor/src/main/resources/sigar-lib/libsigar-amd64-linux.so b/yshop-monitor/src/main/resources/sigar-lib/libsigar-amd64-linux.so deleted file mode 100644 index 5a2e4c24..00000000 Binary files a/yshop-monitor/src/main/resources/sigar-lib/libsigar-amd64-linux.so and /dev/null differ diff --git a/yshop-monitor/src/main/resources/sigar-lib/libsigar-amd64-solaris.so b/yshop-monitor/src/main/resources/sigar-lib/libsigar-amd64-solaris.so deleted file mode 100644 index 6396482a..00000000 Binary files a/yshop-monitor/src/main/resources/sigar-lib/libsigar-amd64-solaris.so and /dev/null differ diff --git a/yshop-monitor/src/main/resources/sigar-lib/libsigar-ia64-hpux-11.sl b/yshop-monitor/src/main/resources/sigar-lib/libsigar-ia64-hpux-11.sl deleted file mode 100644 index d92ea4a9..00000000 Binary files a/yshop-monitor/src/main/resources/sigar-lib/libsigar-ia64-hpux-11.sl and /dev/null differ diff --git a/yshop-monitor/src/main/resources/sigar-lib/libsigar-ia64-linux.so b/yshop-monitor/src/main/resources/sigar-lib/libsigar-ia64-linux.so deleted file mode 100644 index 2bd2fc8e..00000000 Binary files a/yshop-monitor/src/main/resources/sigar-lib/libsigar-ia64-linux.so and /dev/null differ diff --git a/yshop-monitor/src/main/resources/sigar-lib/libsigar-pa-hpux-11.sl b/yshop-monitor/src/main/resources/sigar-lib/libsigar-pa-hpux-11.sl deleted file mode 100644 index 0dfd8a11..00000000 Binary files a/yshop-monitor/src/main/resources/sigar-lib/libsigar-pa-hpux-11.sl and /dev/null differ diff --git a/yshop-monitor/src/main/resources/sigar-lib/libsigar-ppc-aix-5.so b/yshop-monitor/src/main/resources/sigar-lib/libsigar-ppc-aix-5.so deleted file mode 100644 index 7d4b5199..00000000 Binary files a/yshop-monitor/src/main/resources/sigar-lib/libsigar-ppc-aix-5.so and /dev/null differ diff --git a/yshop-monitor/src/main/resources/sigar-lib/libsigar-ppc-linux.so b/yshop-monitor/src/main/resources/sigar-lib/libsigar-ppc-linux.so deleted file mode 100644 index 4394b1b0..00000000 Binary files a/yshop-monitor/src/main/resources/sigar-lib/libsigar-ppc-linux.so and /dev/null differ diff --git a/yshop-monitor/src/main/resources/sigar-lib/libsigar-ppc64-aix-5.so b/yshop-monitor/src/main/resources/sigar-lib/libsigar-ppc64-aix-5.so deleted file mode 100644 index 35fd8288..00000000 Binary files a/yshop-monitor/src/main/resources/sigar-lib/libsigar-ppc64-aix-5.so and /dev/null differ diff --git a/yshop-monitor/src/main/resources/sigar-lib/libsigar-ppc64-linux.so b/yshop-monitor/src/main/resources/sigar-lib/libsigar-ppc64-linux.so deleted file mode 100644 index a1ba2529..00000000 Binary files a/yshop-monitor/src/main/resources/sigar-lib/libsigar-ppc64-linux.so and /dev/null differ diff --git a/yshop-monitor/src/main/resources/sigar-lib/libsigar-s390x-linux.so b/yshop-monitor/src/main/resources/sigar-lib/libsigar-s390x-linux.so deleted file mode 100644 index c275f4ac..00000000 Binary files a/yshop-monitor/src/main/resources/sigar-lib/libsigar-s390x-linux.so and /dev/null differ diff --git a/yshop-monitor/src/main/resources/sigar-lib/libsigar-sparc-solaris.so b/yshop-monitor/src/main/resources/sigar-lib/libsigar-sparc-solaris.so deleted file mode 100644 index aa847d2b..00000000 Binary files a/yshop-monitor/src/main/resources/sigar-lib/libsigar-sparc-solaris.so and /dev/null differ diff --git a/yshop-monitor/src/main/resources/sigar-lib/libsigar-sparc64-solaris.so b/yshop-monitor/src/main/resources/sigar-lib/libsigar-sparc64-solaris.so deleted file mode 100644 index 6c4fe809..00000000 Binary files a/yshop-monitor/src/main/resources/sigar-lib/libsigar-sparc64-solaris.so and /dev/null differ diff --git a/yshop-monitor/src/main/resources/sigar-lib/libsigar-universal-macosx.dylib b/yshop-monitor/src/main/resources/sigar-lib/libsigar-universal-macosx.dylib deleted file mode 100644 index 27ab1071..00000000 Binary files a/yshop-monitor/src/main/resources/sigar-lib/libsigar-universal-macosx.dylib and /dev/null differ diff --git a/yshop-monitor/src/main/resources/sigar-lib/libsigar-universal64-macosx.dylib b/yshop-monitor/src/main/resources/sigar-lib/libsigar-universal64-macosx.dylib deleted file mode 100644 index 0c721fec..00000000 Binary files a/yshop-monitor/src/main/resources/sigar-lib/libsigar-universal64-macosx.dylib and /dev/null differ diff --git a/yshop-monitor/src/main/resources/sigar-lib/libsigar-x86-freebsd-5.so b/yshop-monitor/src/main/resources/sigar-lib/libsigar-x86-freebsd-5.so deleted file mode 100644 index 8c50c611..00000000 Binary files a/yshop-monitor/src/main/resources/sigar-lib/libsigar-x86-freebsd-5.so and /dev/null differ diff --git a/yshop-monitor/src/main/resources/sigar-lib/libsigar-x86-freebsd-6.so b/yshop-monitor/src/main/resources/sigar-lib/libsigar-x86-freebsd-6.so deleted file mode 100644 index f0800274..00000000 Binary files a/yshop-monitor/src/main/resources/sigar-lib/libsigar-x86-freebsd-6.so and /dev/null differ diff --git a/yshop-monitor/src/main/resources/sigar-lib/libsigar-x86-linux.so b/yshop-monitor/src/main/resources/sigar-lib/libsigar-x86-linux.so deleted file mode 100644 index a0b64edd..00000000 Binary files a/yshop-monitor/src/main/resources/sigar-lib/libsigar-x86-linux.so and /dev/null differ diff --git a/yshop-monitor/src/main/resources/sigar-lib/libsigar-x86-solaris.so b/yshop-monitor/src/main/resources/sigar-lib/libsigar-x86-solaris.so deleted file mode 100644 index c6452e56..00000000 Binary files a/yshop-monitor/src/main/resources/sigar-lib/libsigar-x86-solaris.so and /dev/null differ diff --git a/yshop-monitor/src/main/resources/sigar-lib/sigar-amd64-winnt.dll b/yshop-monitor/src/main/resources/sigar-lib/sigar-amd64-winnt.dll deleted file mode 100644 index 1ec8a035..00000000 Binary files a/yshop-monitor/src/main/resources/sigar-lib/sigar-amd64-winnt.dll and /dev/null differ diff --git a/yshop-monitor/src/main/resources/sigar-lib/sigar-x86-winnt.dll b/yshop-monitor/src/main/resources/sigar-lib/sigar-x86-winnt.dll deleted file mode 100644 index 6afdc016..00000000 Binary files a/yshop-monitor/src/main/resources/sigar-lib/sigar-x86-winnt.dll and /dev/null differ diff --git a/yshop-monitor/src/main/resources/sigar-lib/sigar-x86-winnt.lib b/yshop-monitor/src/main/resources/sigar-lib/sigar-x86-winnt.lib deleted file mode 100644 index 04924a1f..00000000 Binary files a/yshop-monitor/src/main/resources/sigar-lib/sigar-x86-winnt.lib and /dev/null differ diff --git a/yshop-mp/src/main/java/co/yixiang/mp/service/YxPayService.java b/yshop-mp/src/main/java/co/yixiang/mp/service/YxPayService.java index 89ee6441..6f99f7e8 100644 --- a/yshop-mp/src/main/java/co/yixiang/mp/service/YxPayService.java +++ b/yshop-mp/src/main/java/co/yixiang/mp/service/YxPayService.java @@ -40,7 +40,7 @@ public class YxPayService { * @throws WxPayException */ public WxPayMpOrderResult wxPay(String orderId, String openId, String body, - Integer totalFee,int type) throws WxPayException { + Integer totalFee,String attach) throws WxPayException { String apiUrl = redisHandler.getVal("api_url"); if (StrUtil.isBlank(apiUrl)) throw new ErrorRequestException("请配置api地址"); @@ -54,11 +54,8 @@ public class YxPayService { orderRequest.setOutTradeNo(orderId); orderRequest.setTotalFee(totalFee); orderRequest.setSpbillCreateIp("127.0.0.1"); - if(type == 2){ - orderRequest.setNotifyUrl(apiUrl + "/api/wechat/renotify"); - }else{ - orderRequest.setNotifyUrl(apiUrl + "/api/wechat/notify"); - } + orderRequest.setNotifyUrl(apiUrl + "/api/wechat/notify"); + orderRequest.setAttach(attach); WxPayMpOrderResult orderResult = wxPayService.createOrder(orderRequest); @@ -78,7 +75,7 @@ public class YxPayService { * @throws WxPayException */ public WxPayMwebOrderResult wxH5Pay(String orderId, String body, - Integer totalFee,int type) throws WxPayException { + Integer totalFee,String attach) throws WxPayException { String apiUrl = redisHandler.getVal("api_url"); if (StrUtil.isBlank(apiUrl)) throw new ErrorRequestException("请配置api地址"); @@ -91,11 +88,8 @@ public class YxPayService { orderRequest.setOutTradeNo(orderId); orderRequest.setTotalFee(totalFee); orderRequest.setSpbillCreateIp("127.0.0.1"); - if(type == 2){ - orderRequest.setNotifyUrl(apiUrl + "/api/wechat/renotify"); - }else{ - orderRequest.setNotifyUrl(apiUrl + "/api/wechat/notify"); - } + orderRequest.setNotifyUrl(apiUrl + "/api/wechat/notify"); + orderRequest.setAttach(attach); WxPayMwebOrderResult orderResult = wxPayService.createOrder(orderRequest); diff --git a/yshop-mp/src/main/java/co/yixiang/mp/service/YxTemplateService.java b/yshop-mp/src/main/java/co/yixiang/mp/service/YxTemplateService.java new file mode 100644 index 00000000..f7332c75 --- /dev/null +++ b/yshop-mp/src/main/java/co/yixiang/mp/service/YxTemplateService.java @@ -0,0 +1,90 @@ +package co.yixiang.mp.service; + +import co.yixiang.mp.domain.YxWechatTemplate; +import co.yixiang.utils.RedisUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.Map; + +/** + * @ClassName 微信公众号模板通知 + * @Author hupeng <610796224@qq.com> + * @Date 2020/3/2 + **/ +@Service +public class YxTemplateService { + private final String PAY_SUCCESS_KEY = "OPENTM207791277"; //pay + private final String DELIVERY_SUCCESS_KEY = "OPENTM200565259"; //Delivery + private final String REFUND_SUCCESS_KEY = "OPENTM410119152"; //Refund + + @Autowired + private YxWechatTemplateService templateService; + @Autowired + private WxMpTemplateMessageService templateMessageService; + + /** + * 支付成功通知 + * @param orderId + * @param price + * @param openid + */ + public void paySuccessNotice(String orderId,String price,String openid){ + String siteUrl = RedisUtil.get("site_url"); + YxWechatTemplate WechatTemplate = templateService.findByTempkey(PAY_SUCCESS_KEY); + Map map = new HashMap<>(); + map.put("first","您的订单已支付成功,我们会尽快为您发货。"); + map.put("keyword1",orderId);//订单号 + map.put("keyword2",price); + map.put("remark","yshop电商系统为你服务!"); + templateMessageService.sendWxMpTemplateMessage( openid + ,WechatTemplate.getTempid(), + siteUrl+"/order/detail/"+orderId,map); + } + + /** + * 退款成功通知 + * @param orderId + * @param price + * @param openid + * @param time + */ + public void refundSuccessNotice(String orderId,String price,String openid,String time){ + String siteUrl = RedisUtil.get("site_url"); + YxWechatTemplate WechatTemplate = templateService.findByTempkey(REFUND_SUCCESS_KEY); + Map map = new HashMap<>(); + map.put("first","您在yshop的订单退款申请被通过,钱款将很快还至您的支付账户。"); + map.put("keyword1",orderId);//订单号 + map.put("keyword2",price); + map.put("keyword3", time); + map.put("remark","yshop电商系统为你服务!"); + templateMessageService.sendWxMpTemplateMessage( openid + ,WechatTemplate.getTempid(), + siteUrl+"/order/detail/"+orderId,map); + } + + /** + * 发货成功通知 + * @param orderId + * @param deliveryName + * @param deliveryId + * @param openid + */ + public void deliverySuccessNotice(String orderId,String deliveryName,String deliveryId,String openid){ + String siteUrl = RedisUtil.get("site_url"); + YxWechatTemplate WechatTemplate = templateService.findByTempkey(DELIVERY_SUCCESS_KEY); + Map map = new HashMap<>(); + map.put("first","亲,宝贝已经启程了,好想快点来到你身边。"); + map.put("keyword1",orderId);//订单号 + map.put("keyword2",deliveryName); + map.put("keyword3",deliveryId); + map.put("remark","yshop电商系统为你服务!"); + templateMessageService.sendWxMpTemplateMessage( openid + ,WechatTemplate.getTempid(), + siteUrl+"/order/detail/"+orderId,map); + } + + + +} diff --git a/yshop-shop/src/main/java/co/yixiang/modules/shop/domain/YxUserRecharge.java b/yshop-shop/src/main/java/co/yixiang/modules/shop/domain/YxUserRecharge.java new file mode 100644 index 00000000..3de16b39 --- /dev/null +++ b/yshop-shop/src/main/java/co/yixiang/modules/shop/domain/YxUserRecharge.java @@ -0,0 +1,64 @@ +package co.yixiang.modules.shop.domain; + +import lombok.Data; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.bean.copier.CopyOptions; +import javax.persistence.*; +import javax.validation.constraints.*; +import java.math.BigDecimal; +import java.io.Serializable; + +/** +* @author hupeng +* @date 2020-03-02 +*/ +@Entity +@Data +@Table(name="yx_user_recharge") +public class YxUserRecharge implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Integer id; + + /** 充值用户UID */ + @Column(name = "uid") + private Integer uid; + + /** 订单号 */ + @Column(name = "order_id",unique = true) + private String orderId; + + /** 充值金额 */ + @Column(name = "price") + private BigDecimal price; + + /** 充值类型 */ + @Column(name = "recharge_type") + private String rechargeType; + + /** 是否充值 */ + @Column(name = "paid") + private Integer paid; + + /** 充值支付时间 */ + @Column(name = "pay_time") + private Integer payTime; + + /** 充值时间 */ + @Column(name = "add_time") + private Integer addTime; + + /** 退款金额 */ + @Column(name = "refund_price") + private BigDecimal refundPrice; + + /** 昵称 */ + @Column(name = "nickname") + private String nickname; + + public void copy(YxUserRecharge source){ + BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); + } +} \ No newline at end of file diff --git a/yshop-shop/src/main/java/co/yixiang/modules/shop/repository/YxUserRechargeRepository.java b/yshop-shop/src/main/java/co/yixiang/modules/shop/repository/YxUserRechargeRepository.java new file mode 100644 index 00000000..f267c33b --- /dev/null +++ b/yshop-shop/src/main/java/co/yixiang/modules/shop/repository/YxUserRechargeRepository.java @@ -0,0 +1,18 @@ +package co.yixiang.modules.shop.repository; + +import co.yixiang.modules.shop.domain.YxUserRecharge; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; + +/** +* @author hupeng +* @date 2020-03-02 +*/ +public interface YxUserRechargeRepository extends JpaRepository, JpaSpecificationExecutor { + /** + * 根据 OrderId 查询 + * @param order_id / + * @return / + */ + YxUserRecharge findByOrderId(String order_id); +} \ No newline at end of file diff --git a/yshop-shop/src/main/java/co/yixiang/modules/shop/rest/StoreOrderController.java b/yshop-shop/src/main/java/co/yixiang/modules/shop/rest/StoreOrderController.java index 9d024378..b5597eb2 100644 --- a/yshop-shop/src/main/java/co/yixiang/modules/shop/rest/StoreOrderController.java +++ b/yshop-shop/src/main/java/co/yixiang/modules/shop/rest/StoreOrderController.java @@ -20,6 +20,7 @@ import co.yixiang.modules.shop.service.YxWechatUserService; import co.yixiang.modules.shop.service.dto.YxWechatUserDTO; import co.yixiang.mp.domain.YxWechatTemplate; import co.yixiang.mp.service.WxMpTemplateMessageService; +import co.yixiang.mp.service.YxTemplateService; import co.yixiang.mp.service.YxWechatTemplateService; import co.yixiang.utils.OrderUtil; import co.yixiang.utils.RedisUtil; @@ -56,11 +57,13 @@ public class StoreOrderController { private final WxMpTemplateMessageService templateMessageService; private final YxWechatTemplateService yxWechatTemplateService; private final RedisTemplate redisTemplate; + private YxTemplateService templateService; public StoreOrderController(YxStoreOrderService yxStoreOrderService, YxStoreOrderStatusService yxStoreOrderStatusService, YxExpressService yxExpressService, YxWechatUserService wechatUserService, WxMpTemplateMessageService templateMessageService, YxWechatTemplateService yxWechatTemplateService, - RedisTemplate redisTemplate) { + RedisTemplate redisTemplate, + YxTemplateService templateService) { this.yxStoreOrderService = yxStoreOrderService; this.yxStoreOrderStatusService = yxStoreOrderStatusService; this.yxExpressService = yxExpressService; @@ -68,6 +71,7 @@ public class StoreOrderController { this.templateMessageService = templateMessageService; this.yxWechatTemplateService = yxWechatTemplateService; this.redisTemplate = redisTemplate; + this.templateService = templateService; } @GetMapping(value = "/data/count") @@ -192,26 +196,15 @@ public class StoreOrderController { yxStoreOrderStatusService.create(storeOrderStatus); //模板消息通知 - String siteUrl = RedisUtil.get("site_url"); try { YxWechatUserDTO wechatUser = wechatUserService.findById(resources.getUid()); if (ObjectUtil.isNotNull(wechatUser)) { if (StrUtil.isNotBlank(wechatUser.getOpenid())) { - YxWechatTemplate WechatTemplate = yxWechatTemplateService - .findByTempkey("OPENTM200565259"); - Map map = new HashMap<>(); - map.put("first", "亲,宝贝已经启程了,好想快点来到你身边。"); - map.put("keyword1", resources.getOrderId());//订单号 - map.put("keyword2", expressDTO.getName()); - map.put("keyword3", resources.getDeliveryId()); - map.put("remark", "yshop电商系统为你服务!"); - templateMessageService.sendWxMpTemplateMessage(wechatUser.getOpenid() - , WechatTemplate.getTempid(), - siteUrl + "/order/detail/" + resources.getOrderId(), map); + templateService.deliverySuccessNotice(resources.getOrderId(), + expressDTO.getName(),resources.getDeliveryId(),wechatUser.getOpenid()); } else if (StrUtil.isNotBlank(wechatUser.getRoutineOpenid())) { //todo 小程序通知 } - } } catch (Exception e) { log.info("当前用户不是微信用户不能发送模板消息哦!"); @@ -235,26 +228,16 @@ public class StoreOrderController { yxStoreOrderService.refund(resources); //模板消息通知 - String siteUrl = RedisUtil.get("site_url"); try { YxWechatUserDTO wechatUser = wechatUserService.findById(resources.getUid()); if (ObjectUtil.isNotNull(wechatUser)) { if (StrUtil.isNotBlank(wechatUser.getOpenid())) { - YxWechatTemplate WechatTemplate = yxWechatTemplateService - .findByTempkey("OPENTM410119152"); - Map map = new HashMap<>(); - map.put("first", "您在yshop的订单退款申请被通过,钱款将很快还至您的支付账户。"); - map.put("keyword1", resources.getOrderId());//订单号 - map.put("keyword2", resources.getPayPrice().toString()); - map.put("keyword3", OrderUtil.stampToDate(resources.getAddTime().toString())); - map.put("remark", "yshop电商系统为你服务!"); - templateMessageService.sendWxMpTemplateMessage(wechatUser.getOpenid() - , WechatTemplate.getTempid(), - siteUrl + "/order/detail/" + resources.getOrderId(), map); + templateService.refundSuccessNotice(resources.getOrderId(), + resources.getPayPrice().toString(),wechatUser.getOpenid(), + OrderUtil.stampToDate(resources.getAddTime().toString())); } else if (StrUtil.isNotBlank(wechatUser.getRoutineOpenid())) { //todo 小程序通知 } - } } catch (Exception e) { log.info("当前用户不是微信用户不能发送模板消息哦!"); diff --git a/yshop-shop/src/main/java/co/yixiang/modules/shop/rest/UserRechargeController.java b/yshop-shop/src/main/java/co/yixiang/modules/shop/rest/UserRechargeController.java new file mode 100644 index 00000000..568da1de --- /dev/null +++ b/yshop-shop/src/main/java/co/yixiang/modules/shop/rest/UserRechargeController.java @@ -0,0 +1,68 @@ +package co.yixiang.modules.shop.rest; + +import co.yixiang.aop.log.Log; +import co.yixiang.modules.shop.domain.YxUserRecharge; +import co.yixiang.modules.shop.service.YxUserRechargeService; +import co.yixiang.modules.shop.service.dto.YxUserRechargeQueryCriteria; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +/** +* @author hupeng +* @date 2020-03-02 +*/ +@Api(tags = "充值管理管理") +@RestController +@RequestMapping("/api/yxUserRecharge") +public class UserRechargeController { + + private final YxUserRechargeService yxUserRechargeService; + + public UserRechargeController(YxUserRechargeService yxUserRechargeService) { + this.yxUserRechargeService = yxUserRechargeService; + } + + @Log("导出数据") + @ApiOperation("导出数据") + @GetMapping(value = "/download") + @PreAuthorize("@el.check('yxUserRecharge:list')") + public void download(HttpServletResponse response, YxUserRechargeQueryCriteria criteria) throws IOException { + yxUserRechargeService.download(yxUserRechargeService.queryAll(criteria), response); + } + + @GetMapping + @Log("查询充值管理") + @ApiOperation("查询充值管理") + @PreAuthorize("@el.check('yxUserRecharge:list')") + public ResponseEntity getYxUserRecharges(YxUserRechargeQueryCriteria criteria, Pageable pageable){ + return new ResponseEntity<>(yxUserRechargeService.queryAll(criteria,pageable),HttpStatus.OK); + } + + @PostMapping + @Log("新增充值管理") + @ApiOperation("新增充值管理") + @PreAuthorize("@el.check('yxUserRecharge:add')") + public ResponseEntity create(@Validated @RequestBody YxUserRecharge resources){ + return new ResponseEntity<>(yxUserRechargeService.create(resources),HttpStatus.CREATED); + } + + + + @Log("删除充值管理") + @ApiOperation("删除充值管理") + @PreAuthorize("@el.check('yxUserRecharge:del')") + @DeleteMapping + public ResponseEntity deleteAll(@RequestBody Integer[] ids) { + yxUserRechargeService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } +} \ No newline at end of file diff --git a/yshop-shop/src/main/java/co/yixiang/modules/shop/service/.idea/misc.xml b/yshop-shop/src/main/java/co/yixiang/modules/shop/service/.idea/misc.xml deleted file mode 100644 index ef004d16..00000000 --- a/yshop-shop/src/main/java/co/yixiang/modules/shop/service/.idea/misc.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file diff --git a/yshop-shop/src/main/java/co/yixiang/modules/shop/service/.idea/modules.xml b/yshop-shop/src/main/java/co/yixiang/modules/shop/service/.idea/modules.xml deleted file mode 100644 index 3aa62952..00000000 --- a/yshop-shop/src/main/java/co/yixiang/modules/shop/service/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/yshop-shop/src/main/java/co/yixiang/modules/shop/service/.idea/vcs.xml b/yshop-shop/src/main/java/co/yixiang/modules/shop/service/.idea/vcs.xml deleted file mode 100644 index 9b0f552c..00000000 --- a/yshop-shop/src/main/java/co/yixiang/modules/shop/service/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/yshop-shop/src/main/java/co/yixiang/modules/shop/service/.idea/workspace.xml b/yshop-shop/src/main/java/co/yixiang/modules/shop/service/.idea/workspace.xml deleted file mode 100644 index 1fcd9dd7..00000000 --- a/yshop-shop/src/main/java/co/yixiang/modules/shop/service/.idea/workspace.xml +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - -