remove monitor 增加充值管理 修复拼团等轮播不能修改的问题

This commit is contained in:
hupeng
2020-03-02 23:46:12 +08:00
parent 7bfdc8ad76
commit d38a482173
54 changed files with 668 additions and 737 deletions

View File

@ -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<YxStoreOrderMapper,
private YxUserBillService billService;
@Autowired
private YxStoreProductReplyService storeProductReplyService;
// @Autowired
//private WxPayService wxPayService;
@Autowired
private YxWechatUserService wechatUserService;
@Autowired
@ -149,10 +145,6 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl<YxStoreOrderMapper,
@Autowired
private YxStoreBargainService storeBargainService;
@Autowired
private WxMpTemplateMessageService templateMessageService;
@Autowired
private YxWechatTemplateService yxWechatTemplateService;
@Autowired
private YxExpressService expressService;
@Autowired
private AlipayService alipayService;
@ -168,6 +160,8 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl<YxStoreOrderMapper,
@Autowired
private YxPayService payService;
@Autowired
private YxTemplateService templateService;
@ -233,21 +227,12 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl<YxStoreOrderMapper,
}
//模板消息通知
String siteUrl = RedisUtil.get("site_url");
YxWechatUserQueryVo wechatUser = wechatUserService.getYxWechatUserById(orderQueryVo.getUid());
if(ObjectUtil.isNotNull(wechatUser)){
if(StrUtil.isNotBlank(wechatUser.getOpenid())){
YxWechatTemplate WechatTemplate = yxWechatTemplateService.getOne(
new QueryWrapper<YxWechatTemplate>().eq("tempkey","OPENTM410119152"));
Map<String,String> 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<YxStoreOrderMapper,
"已发货 快递公司:"+expressQueryVo.getName()+"快递单号:" +param.getDeliveryId());
//模板消息通知
String siteUrl = RedisUtil.get("site_url");
YxWechatUserQueryVo wechatUser = wechatUserService.getYxWechatUserById(orderQueryVo.getUid());
if(ObjectUtil.isNotNull(wechatUser)){
if(StrUtil.isNotBlank(wechatUser.getOpenid())){
YxWechatTemplate WechatTemplate = yxWechatTemplateService.getOne(
new QueryWrapper<YxWechatTemplate>().eq("tempkey","OPENTM200565259"));
//付款成功微信模板通知用户
Map<String,String> 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<YxStoreOrderMapper,
orderInfo.getUid());
}
//模板消息推送
//读取redis配置
String siteUrl = RedisUtil.get("site_url");
YxWechatUserQueryVo wechatUser = wechatUserService.getYxWechatUserById(orderInfo.getUid());
if(ObjectUtil.isNotNull(wechatUser)){
//公众号模板通知
if(StrUtil.isNotBlank(wechatUser.getOpenid())){
YxWechatTemplate WechatTemplate = yxWechatTemplateService.getOne(
new QueryWrapper<YxWechatTemplate>().eq("tempkey","OPENTM207791277"));
//付款成功微信模板通知用户
Map<String,String> 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<YxStoreOrderMapper,
BigDecimal bigDecimal = new BigDecimal(100);
return payService.wxH5Pay(orderId,"H5商品购买",
bigDecimal.multiply(orderInfo.getPayPrice()).intValue(),1);
bigDecimal.multiply(orderInfo.getPayPrice()).intValue(),
BillDetailEnum.TYPE_3.getValue());
}
@ -1077,7 +1041,8 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl<YxStoreOrderMapper,
BigDecimal bigDecimal = new BigDecimal(100);
return payService.wxPay(orderId,wechatUser.getRoutineOpenid(),"小程序商品购买",
bigDecimal.multiply(orderInfo.getPayPrice()).intValue(),1);
bigDecimal.multiply(orderInfo.getPayPrice()).intValue(),
BillDetailEnum.TYPE_3.getValue());
}
@ -1101,7 +1066,8 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl<YxStoreOrderMapper,
BigDecimal bigDecimal = new BigDecimal(100);
return payService.wxPay(orderId,wechatUser.getOpenid(),"公众号商品购买",
bigDecimal.multiply(orderInfo.getPayPrice()).intValue(),1);
bigDecimal.multiply(orderInfo.getPayPrice()).intValue(),
BillDetailEnum.TYPE_3.getValue());
}

View File

@ -31,6 +31,9 @@ public class YxUserRecharge extends BaseEntity {
@ApiModelProperty(value = "充值用户UID")
private Integer uid;
@ApiModelProperty(value = "充值用户")
private String nickname;
@ApiModelProperty(value = "订单号")
private String orderId;

View File

@ -27,8 +27,13 @@ import java.io.Serializable;
*/
public interface YxUserRechargeService extends BaseService<YxUserRecharge> {
void updateRecharge(YxUserRecharge userRecharge);
YxUserRecharge getInfoByOrderId(String orderId);
void addRecharge(RechargeParam param,int uid);
/**
* 根据ID获取查询对象
* @param id

View File

@ -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;
* </p>
*
* @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<YxUserRechargeMapper, YxUserRecharge> 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);

View File

@ -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;
* </p>
*
* @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<String,String> jsConfig = new HashMap<>();
jsConfig.put("appId",result.getAppId());
jsConfig.put("timeStamp",result.getTimeStamp());

View File

@ -18,4 +18,6 @@ public class RechargeParam implements Serializable {
@NotNull(message = "金额必填")
@Min(value = 1,message = "充值金额不能低于1")
private Double price;
private String orderSn;
}

View File

@ -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;