pay 修改

This commit is contained in:
hupeng
2019-11-09 11:03:01 +08:00
parent a7f03930ca
commit 42d8d545a1
27 changed files with 439 additions and 4763 deletions

View File

@ -14,6 +14,7 @@ import co.yixiang.modules.order.service.YxStoreOrderService;
import co.yixiang.modules.order.service.YxStoreOrderStatusService;
import co.yixiang.modules.order.web.dto.*;
import co.yixiang.modules.order.web.param.OrderParam;
import co.yixiang.modules.order.web.param.PayParam;
import co.yixiang.modules.order.web.param.RefundParam;
import co.yixiang.modules.order.web.param.YxStoreOrderQueryParam;
import co.yixiang.modules.order.web.vo.YxStoreOrderQueryVo;
@ -150,6 +151,9 @@ public class StoreOrderController extends BaseController {
if(StrUtil.isNotEmpty(orderId)){
switch (param.getPayType()){
case "weixin":
if(param.getFrom().equals("weixinh5")){
throw new ErrorRequestException("H5模式不支持微信支付请用公众号演示");
}
try {
map.put("status","WECHAT_PAY");
WxPayMpOrderResult wxPayMpOrderResult = storeOrderService
@ -178,6 +182,69 @@ public class StoreOrderController extends BaseController {
return ApiResult.fail("订单生成失败");
}
/**
* 订单支付
*/
@PostMapping("/order/pay")
@ApiOperation(value = "订单支付",notes = "订单支付")
public ApiResult<ConfirmOrderDTO> pay(@Valid @RequestBody PayParam param){
Map<String,Object> map = new LinkedHashMap<>();
int uid = SecurityUtils.getUserId().intValue();
if(StrUtil.isEmpty(param.getUni())) return ApiResult.fail("参数错误");
YxStoreOrderQueryVo storeOrder = storeOrderService
.getOrderInfo(param.getUni(),uid);
if(ObjectUtil.isNull(storeOrder)) return ApiResult.fail("订单不存在");
if(storeOrder.getPaid() == 1) return ApiResult.fail("该订单已支付");
//todo 砍价
//todo 拼团
String orderId = storeOrder.getOrderId();
OrderExtendDTO orderDTO = new OrderExtendDTO();
orderDTO.setOrderId(orderId);
map.put("status","SUCCESS");
map.put("result",orderDTO);
//开始处理支付
if(StrUtil.isNotEmpty(orderId)){
switch (param.getPaytype()){
case "weixin":
if(param.getFrom().equals("weixinh5")){
throw new ErrorRequestException("H5模式不支持微信支付请用公众号演示");
}
try {
map.put("status","WECHAT_PAY");
WxPayMpOrderResult wxPayMpOrderResult = storeOrderService
.wxPay(orderId);
//重新组装
Map<String,String> jsConfig = new HashMap<>();
jsConfig.put("appId",wxPayMpOrderResult.getAppId());
jsConfig.put("timestamp",wxPayMpOrderResult.getTimeStamp());
jsConfig.put("nonceStr",wxPayMpOrderResult.getNonceStr());
jsConfig.put("package",wxPayMpOrderResult.getPackageValue());
jsConfig.put("signType",wxPayMpOrderResult.getSignType());
jsConfig.put("paySign",wxPayMpOrderResult.getPaySign());
orderDTO.setJsConfig(jsConfig);
map.put("result",orderDTO);
return ApiResult.ok(map);
} catch (WxPayException e) {
return ApiResult.fail(e.getMessage());
}
case "yue":
storeOrderService.yuePay(orderId,uid);
return ApiResult.ok(map,"余额支付成功");
}
}
return ApiResult.fail("订单生成失败");
}
/**
* 订单详情
*/

View File

@ -0,0 +1,17 @@
package co.yixiang.modules.order.web.dto;
import lombok.Data;
import java.io.Serializable;
/**
* @ClassName PayDTO
* @Author hupeng <610796224@qq.com>
* @Date 2019/11/7
**/
@Data
public class PayDTO implements Serializable {
private String from;
private String paytype;
private String uni;
}

View File

@ -0,0 +1,17 @@
package co.yixiang.modules.order.web.param;
import lombok.Data;
import java.io.Serializable;
/**
* @ClassName PayDTO
* @Author hupeng <610796224@qq.com>
* @Date 2019/11/7
**/
@Data
public class PayParam implements Serializable {
private String from;
private String paytype;
private String uni;
}

View File

@ -1,6 +1,7 @@
package co.yixiang.modules.user.entity;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import co.yixiang.common.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableId;
@ -21,112 +22,112 @@ import java.util.Date;
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="YxUser对象", description="用户表")
@ApiModel(value = "YxUser对象", description = "用户表")
public class YxUser extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "用户id")
@TableId(value = "uid", type = IdType.AUTO)
private Integer uid;
@ApiModelProperty(value = "用户id")
@TableId(value = "uid", type = IdType.AUTO)
private Integer uid;
@ApiModelProperty(value = "用户账户(跟accout一样)")
private String username;
@ApiModelProperty(value = "用户账户(跟accout一样)")
private String username;
@ApiModelProperty(value = "用户账号")
private String account;
@ApiModelProperty(value = "用户账号")
private String account;
@ApiModelProperty(value = "用户密码跟pwd")
private String password;
@ApiModelProperty(value = "用户密码跟pwd")
private String password;
@ApiModelProperty(value = "用户密码")
private String pwd;
@ApiModelProperty(value = "用户密码")
private String pwd;
@ApiModelProperty(value = "真实姓名")
private String realName;
@ApiModelProperty(value = "真实姓名")
private String realName;
@ApiModelProperty(value = "生日")
private Integer birthday;
@ApiModelProperty(value = "生日")
private Integer birthday;
@ApiModelProperty(value = "身份证号码")
private String cardId;
@ApiModelProperty(value = "身份证号码")
private String cardId;
@ApiModelProperty(value = "用户备注")
private String mark;
@ApiModelProperty(value = "用户备注")
private String mark;
@ApiModelProperty(value = "合伙人id")
private Integer partnerId;
@ApiModelProperty(value = "合伙人id")
private Integer partnerId;
@ApiModelProperty(value = "用户分组id")
private Integer groupId;
@ApiModelProperty(value = "用户分组id")
private Integer groupId;
@ApiModelProperty(value = "用户昵称")
private String nickname;
@ApiModelProperty(value = "用户昵称")
private String nickname;
@ApiModelProperty(value = "用户头像")
private String avatar;
@ApiModelProperty(value = "用户头像")
private String avatar;
@ApiModelProperty(value = "手机号码")
private String phone;
@ApiModelProperty(value = "手机号码")
private String phone;
@ApiModelProperty(value = "添加时间")
private Integer addTime;
@ApiModelProperty(value = "添加时间")
private Integer addTime;
@ApiModelProperty(value = "添加ip")
private String addIp;
@ApiModelProperty(value = "添加ip")
private String addIp;
@ApiModelProperty(value = "最后一次登录时间")
private Integer lastTime;
@ApiModelProperty(value = "最后一次登录时间")
private Integer lastTime;
@ApiModelProperty(value = "最后一次登录ip")
private String lastIp;
@ApiModelProperty(value = "最后一次登录ip")
private String lastIp;
@ApiModelProperty(value = "用户余额")
private BigDecimal nowMoney;
@ApiModelProperty(value = "用户余额")
private BigDecimal nowMoney;
@ApiModelProperty(value = "佣金金额")
private BigDecimal brokeragePrice;
@ApiModelProperty(value = "佣金金额")
private BigDecimal brokeragePrice;
@ApiModelProperty(value = "用户剩余积分")
private BigDecimal integral;
@ApiModelProperty(value = "用户剩余积分")
private BigDecimal integral;
@ApiModelProperty(value = "连续签到天数")
private Integer signNum;
@ApiModelProperty(value = "连续签到天数")
private Integer signNum;
@ApiModelProperty(value = "1为正常0为禁止")
private Boolean status;
@ApiModelProperty(value = "1为正常0为禁止")
private Boolean status;
@ApiModelProperty(value = "等级")
private Integer level;
@ApiModelProperty(value = "等级")
private Integer level;
@ApiModelProperty(value = "推广元id")
private Integer spreadUid;
@ApiModelProperty(value = "推广元id")
private Integer spreadUid;
@ApiModelProperty(value = "推广员关联时间")
private Integer spreadTime;
@ApiModelProperty(value = "推广员关联时间")
private Integer spreadTime;
@ApiModelProperty(value = "用户类型")
private String userType;
@ApiModelProperty(value = "用户类型")
private String userType;
@ApiModelProperty(value = "是否为推广员")
private Boolean isPromoter;
@ApiModelProperty(value = "是否为推广员")
private Boolean isPromoter;
@ApiModelProperty(value = "用户购买次数")
private Integer payCount;
@ApiModelProperty(value = "用户购买次数")
private Integer payCount;
@ApiModelProperty(value = "下级人数")
private Integer spreadCount;
@ApiModelProperty(value = "下级人数")
private Integer spreadCount;
@ApiModelProperty(value = "清理会员时间")
private Integer cleanTime;
@ApiModelProperty(value = "清理会员时间")
private Integer cleanTime;
@ApiModelProperty(value = "详细地址")
private String addres;
@ApiModelProperty(value = "详细地址")
private String addres;
@ApiModelProperty(value = "管理员编号 ")
private Integer adminid;
@ApiModelProperty(value = "管理员编号 ")
private Integer adminid;
@ApiModelProperty(value = "用户登陆类型h5,wechat,routine")
private String loginType;
@ApiModelProperty(value = "用户登陆类型h5,wechat,routine")
private String loginType;
}

View File

@ -28,7 +28,7 @@ public class YxWechatUser extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "微信用户id")
@TableId(value = "uid", type = IdType.AUTO)
@TableId(value = "uid", type = IdType.INPUT)
private Integer uid;
@ApiModelProperty(value = "只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段")

View File

@ -11,6 +11,7 @@ import co.yixiang.modules.security.security.JwtUser;
import co.yixiang.modules.security.utils.JwtTokenUtil;
import co.yixiang.modules.user.entity.YxUser;
import co.yixiang.modules.user.entity.YxWechatUser;
import co.yixiang.modules.user.mapper.YxUserMapper;
import co.yixiang.modules.user.service.YxUserService;
import co.yixiang.modules.user.service.YxWechatUserService;
import co.yixiang.utils.EncryptUtils;
@ -92,9 +93,30 @@ public class WechatController extends BaseController {
if(ObjectUtil.isNotNull(wechatUser)){
jwtUser = (JwtUser) userDetailsService.loadUserByUsername(wechatUser.getNickname());
}else{
//用户保存
YxUser user = new YxUser();
user.setAccount(wxMpUser.getNickname());
user.setUsername(wxMpUser.getNickname());
user.setPassword(EncryptUtils.encryptPassword("123456"));
user.setPwd(EncryptUtils.encryptPassword("123456"));
user.setPhone("");
user.setUserType("wechat");
user.setAddTime(OrderUtil.getSecondTimestampTwo());
user.setLastTime(OrderUtil.getSecondTimestampTwo());
user.setNickname(wxMpUser.getNickname());
user.setAvatar(wxMpUser.getHeadImgUrl());
user.setNowMoney(BigDecimal.ZERO);
user.setBrokeragePrice(BigDecimal.ZERO);
user.setIntegral(BigDecimal.ZERO);
userService.save(user);
//保存微信用户
YxWechatUser yxWechatUser = new YxWechatUser();
// System.out.println("wxMpUser:"+wxMpUser);
// System.out.println("wxMpUser:"+wxMpUser);
yxWechatUser.setAddTime(OrderUtil.getSecondTimestampTwo());
yxWechatUser.setNickname(wxMpUser.getNickname());
yxWechatUser.setOpenid(wxMpUser.getOpenId());
@ -119,27 +141,11 @@ public class WechatController extends BaseController {
if(ObjectUtil.isNotEmpty(wxMpUser.getGroupId())){
yxWechatUser.setGroupid(wxMpUser.getGroupId());
}
yxWechatUser.setUid(user.getUid());
wechatUserService.save(yxWechatUser);
//用户保存
YxUser user = new YxUser();
user.setAccount(wxMpUser.getNickname());
user.setUsername(wxMpUser.getNickname());
user.setPassword(EncryptUtils.encryptPassword("123456"));
user.setPwd(EncryptUtils.encryptPassword("123456"));
user.setPhone("");
user.setUserType("wechat");
user.setAddTime(OrderUtil.getSecondTimestampTwo());
user.setLastTime(OrderUtil.getSecondTimestampTwo());
user.setNickname(wxMpUser.getNickname());
user.setAvatar(wxMpUser.getHeadImgUrl());
user.setNowMoney(BigDecimal.ZERO);
user.setBrokeragePrice(BigDecimal.ZERO);
user.setIntegral(BigDecimal.ZERO);
user.setUid(yxWechatUser.getUid());
userService.save(user);
jwtUser = (JwtUser) userDetailsService.loadUserByUsername(wxMpUser.getNickname());
}

View File

@ -6,7 +6,7 @@ spring:
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
url: jdbc:log4jdbc:mysql://localhost:3306/yshop?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
username: yshop
password: yshoP@2019#yx
password:
# 初始化配置
initial-size: 3
@ -48,7 +48,7 @@ spring:
database: 0
host: 127.0.0.1
port: 6379
password: yshop2019@yxtw
password:
#连接超时时间
timeout: 5000