Althars123 3 年之前
父節點
當前提交
c8e199dd26

+ 21 - 7
twzd-admin/src/main/java/com/miaxis/app/controller/wx/WxController.java

@@ -7,7 +7,9 @@ import com.miaxis.common.config.WxpayConfig;
 import com.miaxis.common.constant.Constants;
 import com.miaxis.common.core.controller.BaseController;
 import com.miaxis.common.core.domain.Response;
+import com.miaxis.common.core.domain.entity.SysDictData;
 import com.miaxis.common.core.domain.entity.UserInfo;
+import com.miaxis.common.enums.OrderStatusEnum;
 import com.miaxis.common.exception.CustomException;
 import com.miaxis.common.utils.SecurityUtils;
 import com.miaxis.common.utils.uuid.CommonUtils;
@@ -99,18 +101,29 @@ public class WxController extends BaseController {
     @ApiOperation("微信支付下单")
     public Response<JSONObject> getPrepareOrder(@RequestBody WxOrderDTO wxOrderDTO) throws Exception{
 
+
+        SysDictData sysDictData = dictDataService.selectDictDataById(wxOrderDTO.getDictCode());
+        String[] values = sysDictData.getDictValue().split(",");
         //创建本地微信订单
+        WxOrder order = createOrder(values);
+        wxOrderService.save(order);
+        return Response.success(placeWxOrder(order, sysDictData.getDictLabel(),notifyUrl));
+
+
+    }
+
+    private WxOrder createOrder(String[] values) {
         WxOrder order = new WxOrder();
         UserInfo student = SecurityUtils.getLoginUser().getStudent();
         String orderCode = getOrderCode(student.getId());
         order.setOutTradeNo(orderCode);
         order.setOpenid(student.getOpenid());
-        order.setGoodsType("1");
-        wxOrderService.createVipOrder(order);
-        wxOrderService.save(order);
-        return Response.success(placeWxOrder(order, "学车vip充值",notifyUrl));
-
-
+        order.setOrderStatus(OrderStatusEnum.PROCESSING.getCode());
+        Double dprice = Double.valueOf(values[0]);
+        Double v =dprice* 100;
+        order.setTotal(v.intValue());
+        order.setOrderDataJson(values[2]);
+        return order;
     }
 
     /**
@@ -120,6 +133,7 @@ public class WxController extends BaseController {
     @ApiOperation("微信支付下单-测试")
     public Response<JSONObject> getPrepareOrderTest() throws Exception{
 
+
         //创建本地微信订单
         WxOrder order = new WxOrder();
         UserInfo student = SecurityUtils.getLoginUser().getStudent();
@@ -128,7 +142,7 @@ public class WxController extends BaseController {
         order.setOpenid(student.getOpenid());
         order.setGoodsType("1");
         wxOrderService.createVipOrder(order);
-        wxOrderService.save(order);
+        //wxOrderService.save(order);
         return Response.success(placeWxOrder(order, "学车vip充值", "http://jpcj-h5.zzxcx.net.zzxcx.net/prod-api/open-api/wx/notify/wxpay1"));
 
 

+ 28 - 4
twzd-admin/src/main/java/com/miaxis/app/controller/wx/WxNotifyController.java

@@ -2,10 +2,13 @@ package com.miaxis.app.controller.wx;
 
 
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.miaxis.common.config.WxpayConfig;
 import com.miaxis.common.constant.Constants;
+import com.miaxis.common.core.domain.entity.UserInfo;
 import com.miaxis.common.exception.CustomException;
 import com.miaxis.common.utils.AesUtil;
+import com.miaxis.user.service.IUserInfoService;
 import com.miaxis.wx.domain.RefundRecord;
 import com.miaxis.wx.domain.WxOrder;
 import com.miaxis.wx.dto.WxNotifyReturnDTO;
@@ -31,6 +34,7 @@ import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.security.*;
 import java.security.cert.X509Certificate;
+import java.util.Date;
 import java.util.Random;
 
 @RestController
@@ -49,7 +53,8 @@ public class WxNotifyController {
     private IWxOrderService wxOrderService;
 
 
-
+    @Autowired
+    private IUserInfoService userInfoService;
 
     @Autowired
     private  IRefundRecordService  refundRecordService;
@@ -69,10 +74,10 @@ public class WxNotifyController {
             throw new CustomException("签名失败");
         }
         String resourceString = getSourString(wxpayNotifyDTO);
-        log.info(resourceString);
+        log.info("微信支付回调数据"+resourceString);
         JSONObject jsonObject = JSONObject.parseObject(resourceString);
-        //将回调数据写入数据库
-        String outTradeNo = writeNotifyDataToDb(jsonObject);
+        //将回调数据写入数据库, 并成为会员
+        writeNotifyDataToDb(jsonObject);
         WxNotifyReturnDTO wxNotifyReturnDTO = new WxNotifyReturnDTO();
         wxNotifyReturnDTO.setCode("SUCCESS");
         wxNotifyReturnDTO.setMessage("成功");
@@ -205,6 +210,25 @@ public class WxNotifyController {
             wxOrder.setDeviceId(sceneInfo.getString("device_id"));
         }
         wxOrderService.updateById(wxOrder);
+
+        //成为会员
+        String data = wxOrder.getOrderDataJson();
+        int days;
+        try{
+            days = Integer.valueOf(data);
+        }catch (Exception e){
+            throw new CustomException("参数值转化异常,请检查数据是否为数值类型");
+        }
+        long timeMillis = days*1440*60*1000l;
+        UserInfo userinfo = userInfoService.getOne(new QueryWrapper<UserInfo>().eq("openid", wxOrder.getOpenid()));
+        Date expireTime = userinfo.getExpireTime();
+        if (expireTime == null && expireTime.getTime()< System.currentTimeMillis()){
+            userinfo.setExpireTime(new Date(System.currentTimeMillis()+timeMillis));
+        }else{
+            userinfo.setExpireTime(new Date(expireTime.getTime()+timeMillis));
+        }
+
+        userInfoService.updateById(userinfo);
         return outTradeNo;
 
     }

+ 10 - 7
twzd-common/src/main/java/com/miaxis/common/core/domain/entity/UserInfo.java

@@ -9,8 +9,6 @@ import com.miaxis.common.core.domain.BaseBusinessEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 
 import java.util.Date;
 /**
@@ -72,11 +70,11 @@ public class UserInfo extends BaseBusinessEntity{
     @ApiModelProperty(value = "0 启用 1禁用")
     private Integer status;
 
-    /** 0 否 1是 */
-    @Excel(name = "是否是vip 0 否 1")
-    @TableField("is_vip")
-    @ApiModelProperty(value = "是否是vip 0 否 1是")
-    private Integer isVip;
+//    /** 0 否 1是 */
+//    @Excel(name = "是否是vip 0 否 1")
+//    @TableField("is_vip")
+//    @ApiModelProperty(value = "是否是vip 0 否 1是")
+//    private Integer isVip;
 
 
     /** 驾校班型Id */
@@ -86,5 +84,10 @@ public class UserInfo extends BaseBusinessEntity{
     private String unionId;
 
 
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" )
+    @ApiModelProperty(value = "过期时间")
+    private Date expireTime;
+
+
 
 }

+ 3 - 3
twzd-common/src/main/java/com/miaxis/common/core/domain/model/LoginUser.java

@@ -272,9 +272,9 @@ public class LoginUser implements UserDetails
             List<SimpleGrantedAuthority> roleList = new ArrayList<SimpleGrantedAuthority>();
             roleList.add(new SimpleGrantedAuthority("ROLE_STUDENT"));
             //如果已激活,是vip的话
-            if (this.getStudent().getIsVip() == 1){
-                roleList.add(new SimpleGrantedAuthority("ROLE_VIP"));
-            }
+//            if (this.getStudent().getIsVip() == 1){
+//                roleList.add(new SimpleGrantedAuthority("ROLE_VIP"));
+//            }
             return roleList;
         }else {
             return null;

+ 22 - 0
twzd-service/src/main/java/com/miaxis/user/mapper/UserInfoMapper.java

@@ -0,0 +1,22 @@
+package com.miaxis.user.mapper;
+
+import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.miaxis.common.core.domain.entity.UserInfo;
+
+/**
+ * 用户Mapper接口
+ *
+ * @author miaxis
+ * @date 2021-08-18
+ */
+public interface UserInfoMapper extends BaseMapper<UserInfo> {
+    /**
+     * 查询用户列表
+     *
+     * @param userInfo 用户
+     * @return 用户集合
+     */
+    public List<UserInfo> selectUserInfoList(UserInfo userInfo);
+
+}

+ 22 - 0
twzd-service/src/main/java/com/miaxis/user/service/IUserInfoService.java

@@ -0,0 +1,22 @@
+package com.miaxis.user.service;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.miaxis.common.core.domain.entity.UserInfo;
+
+/**
+ * 用户Service接口
+ *
+ * @author miaxis
+ * @date 2021-08-18
+ */
+public interface IUserInfoService extends IService<UserInfo>{
+    /**
+     * 查询用户列表
+     *
+     * @param userInfo 用户
+     * @return 用户集合
+     */
+    public List<UserInfo> selectUserInfoList(UserInfo userInfo);
+}

+ 37 - 0
twzd-service/src/main/java/com/miaxis/user/service/impl/UserInfoServiceImpl.java

@@ -0,0 +1,37 @@
+package com.miaxis.user.service.impl;
+
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.miaxis.common.core.domain.entity.UserInfo;
+import com.miaxis.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.apache.commons.lang3.StringUtils;
+import com.miaxis.user.mapper.UserInfoMapper;
+
+import com.miaxis.user.service.IUserInfoService;
+
+/**
+ * 用户Service业务层处理
+ *
+ * @author miaxis
+ * @date 2021-08-18
+ */
+@Service
+public class UserInfoServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo> implements IUserInfoService {
+    @Autowired
+    private UserInfoMapper userInfoMapper;
+
+    /**
+     * 查询用户列表
+     *
+     * @param userInfo 用户
+     * @return 用户
+     */
+    @Override
+    public List<UserInfo> selectUserInfoList(UserInfo userInfo){
+        return userInfoMapper.selectUserInfoList(userInfo);
+    }
+}

+ 27 - 0
twzd-service/src/main/java/com/miaxis/user/vo/UserVipInfoVO.java

@@ -0,0 +1,27 @@
+package com.miaxis.user.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+@Data
+public class UserVipInfoVO {
+
+
+
+    /** 微信openid */
+    @ApiModelProperty(value = "微信openid")
+    private String openid;
+
+    /** 0 否 1是 */
+
+    @ApiModelProperty(value = "是否是vip 0 否 1是")
+    private Integer isVip;
+
+
+
+    @ApiModelProperty(value = "签名")
+    private String sign;
+
+
+}

+ 1 - 1
twzd-service/src/main/java/com/miaxis/wx/dto/WxOrderDTO.java

@@ -9,7 +9,7 @@ public class WxOrderDTO {
 
 
 
-    @ApiModelProperty(value = "商品字典编码")
+    @ApiModelProperty(value = "商品字典编码",required = true)
     private Long dictCode;
 
 

+ 1 - 2
twzd-service/src/main/java/com/miaxis/wx/service/impl/WxOrderServiceImpl.java

@@ -1,7 +1,6 @@
 package com.miaxis.wx.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.miaxis.common.enums.OrderStatusEnum;
 import com.miaxis.system.service.ISysConfigService;
 import com.miaxis.wx.domain.WxOrder;
 import com.miaxis.wx.mapper.WxOrderMapper;
@@ -36,7 +35,7 @@ public class WxOrderServiceImpl extends ServiceImpl<WxOrderMapper, WxOrder> impl
         Double dprice = Double.valueOf(price);
         Double v =dprice* 100;
         wxOrder.setTotal(v.intValue());
-        wxOrder.setOrderStatus(OrderStatusEnum.PROCESSING.getCode());
+
 
     }
     @Override

+ 39 - 0
twzd-service/src/main/resources/mapper/user/UserInfoMapper.xml

@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.miaxis.user.mapper.UserInfoMapper">
+
+    <resultMap type="UserInfo" id="UserInfoResult">
+        <result property="id"    column="id"    />
+        <result property="phone"    column="phone"    />
+        <result property="wechar"    column="wechar"    />
+        <result property="headImage"    column="head_image"    />
+        <result property="nickName"    column="nick_name"    />
+        <result property="openid"    column="openid"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="status"    column="status"    />
+        <result property="isVip"    column="is_vip"    />
+        <result property="unionId"    column="union_id"    />
+    </resultMap>
+
+    <sql id="selectUserInfoVo">
+        select * from user_info
+    </sql>
+
+    <select id="selectUserInfoList" parameterType="UserInfo" resultMap="UserInfoResult">
+        <include refid="selectUserInfoVo"/>
+        <where>
+            <if test="phone != null  and phone != ''"> and phone = #{phone}</if>
+            <if test="wechar != null  and wechar != ''"> and wechar = #{wechar}</if>
+            <if test="headImage != null  and headImage != ''"> and head_image = #{headImage}</if>
+            <if test="nickName != null  and nickName != ''"> and nick_name like concat('%', #{nickName}, '%')</if>
+            <if test="openid != null  and openid != ''"> and openid = #{openid}</if>
+            <if test="status != null "> and status = #{status}</if>
+            <if test="isVip != null "> and is_vip = #{isVip}</if>
+            <if test="unionId != null  and unionId != ''"> and union_id = #{unionId}</if>
+        </where>
+    </select>
+
+</mapper>