Althars123 пре 2 година
родитељ
комит
38059fae6f

+ 27 - 23
sdjk-admin/src/main/java/com/miaxis/app/controller/wx/WxController.java

@@ -7,12 +7,15 @@ 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.exception.CustomException;
 import com.miaxis.common.utils.SecurityUtils;
 import com.miaxis.common.utils.uuid.CommonUtils;
 import com.miaxis.system.domain.SysConfig;
 import com.miaxis.system.service.ISysConfigService;
+import com.miaxis.system.service.ISysDictDataService;
+import com.miaxis.system.service.ISysDictTypeService;
 import com.miaxis.system.service.ISysUserService;
 import com.miaxis.wx.domain.WxOrder;
 import com.miaxis.wx.service.IWxOrderService;
@@ -38,6 +41,7 @@ import java.io.File;
 import java.security.PrivateKey;
 import java.security.Signature;
 import java.util.Base64;
+import java.util.List;
 
 import static com.miaxis.common.utils.OrderCodeFactory.getOrderCode;
 
@@ -70,6 +74,9 @@ public class WxController extends BaseController {
     @Autowired
     private ISysConfigService sysConfigService;
 
+    @Autowired
+    private ISysDictDataService sysDictDataService;
+
     @Value("${app.appid}")
     private String appid;
     @Value("${wxpay.notifyUrl}")
@@ -100,12 +107,12 @@ public class WxController extends BaseController {
      */
     @PostMapping(value = "/prepareOrder")
     @ApiOperation("app端微信支付下单")
-    public Response<WxParamEntity> getPrepareOrder( @ApiParam(name="type",value="1-超级vip 2-普通vip 3-升级高级vip")Integer type) throws Exception{
+    public Response<WxParamEntity> getPrepareOrder(@RequestParam @ApiParam(name="dictCode",value="字典编码")Long dictCode) throws Exception{
 
         //兼容线上,app上线后删除
-        if (type == null){
-            type = 1;
-        }
+//        if (type == null){
+//            type = 1;
+//        }
         //创建本地微信订单
         WxOrder order = new WxOrder();
         UserInfo student = SecurityUtils.getLoginUser().getStudent();
@@ -113,15 +120,12 @@ public class WxController extends BaseController {
         order.setOutTradeNo(orderCode);
         order.setAppOpenid(student.getAppOpenid());
         order.setUnionId(student.getUnionId());
-        String key =  getKeyByType(type);
-        SysConfig config = sysConfigService.selectConfigObjByKey(key);
-        String goodsName = config.getConfigName();
-        order.setGoodsName(goodsName);
-        order.setOrderDataJson(Integer.valueOf(type).toString());
-        wxOrderService.createVipOrder(order,type);
+
+        SysDictData sysDictData = sysDictDataService.selectDictDataById(dictCode);
+        wxOrderService.createVipOrder(order,sysDictData);
         wxOrderService.save(order);
 
-        return Response.success(placeWxOrder(order, goodsName));
+        return Response.success(placeWxOrder(order, order.getGoodsName()));
 
 
     }
@@ -143,18 +147,18 @@ public class WxController extends BaseController {
     }
 
 
-    /**
-     * 查询是否存在推荐码
-     */
-    @GetMapping(value = "/{referralCode}")
-    @ApiOperation("查询是否存在推荐码")
-    public Response<Boolean> getInfo(
-            @ApiParam(name = "referralCode", value = "推荐码", required = true)
-            @PathVariable("referralCode") String referralCode
-    ){
-
-        return Response.success(sysUserService.selectUserByReferralCode(referralCode)!= null ? true :false);
-    }
+//    /**
+//     * 查询是否存在推荐码
+//     */
+//    @GetMapping(value = "/{referralCode}")
+//    @ApiOperation("查询是否存在推荐码")
+//    public Response<Boolean> getInfo(
+//            @ApiParam(name = "referralCode", value = "推荐码", required = true)
+//            @PathVariable("referralCode") String referralCode
+//    ){
+//
+//        return Response.success(sysUserService.selectUserByReferralCode(referralCode)!= null ? true :false);
+//    }
 
 
     //下单

+ 11 - 12
sdjk-admin/src/main/java/com/miaxis/app/controller/wx/WxNotifyController.java

@@ -88,10 +88,7 @@ public class WxNotifyController {
         JSONObject jsonObject = JSONObject.parseObject(resourceString);
         //将回调数据写入数据库
         String outTradeNo = writeNotifyDataToDb(jsonObject);
-        //创建兑换码
-        String code = createCode();
-        //激活用户
-        avtivityCode(outTradeNo,code);
+
 
         WxNotifyReturnDTO wxNotifyReturnDTO = new WxNotifyReturnDTO();
         wxNotifyReturnDTO.setCode("SUCCESS");
@@ -121,14 +118,7 @@ public class WxNotifyController {
         vipCodeEntity.setActivationUserId(userInfo.getId());
         vipCodeEntity.setActivationTime(new Date());
         vipCodeService.updateById(vipCodeEntity);
-        String s = wxOrder.getOrderDataJson();
-        Integer type = Integer.valueOf(s);
-        if (type == 1 || type ==3){
-            userInfo.setIsVip(1);
-        }
-        if (type == 2){
-            userInfo.setIsVip(2);
-        }
+
 
         userInfoService.updateById(userInfo);
 
@@ -272,6 +262,15 @@ public class WxNotifyController {
             wxOrder.setDeviceId(sceneInfo.getString("device_id"));
         }
         wxOrderService.updateById(wxOrder);
+        //如果回调是订单状态是SUCCESS的话
+        if ("SUCCESS".equals(wxOrder.getTradeState())){
+            UserInfo userInfo = userInfoService.getOne(new QueryWrapper<UserInfo>().eq("union_id", wxOrder.getUnionId()));
+            //根据下单时候留下的备注信息(vip信息)来更新用户vip信息
+            String s = wxOrder.getOrderDataJson();
+            Integer isVip = Integer.valueOf(s);
+            userInfo.setIsVip(isVip);
+            userInfoService.updateById(userInfo);
+        }
         return outTradeNo;
 
     }

+ 2 - 1
sdjk-service/src/main/java/com/miaxis/wx/service/IWxOrderService.java

@@ -1,6 +1,7 @@
 package com.miaxis.wx.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.miaxis.common.core.domain.entity.SysDictData;
 import com.miaxis.wx.domain.WxOrder;
 import com.miaxis.wx.dto.*;
 
@@ -12,7 +13,7 @@ public interface IWxOrderService extends IService<WxOrder>{
 
 
 
-    void createVipOrder(WxOrder order, Integer type);
+    void createVipOrder(WxOrder order, SysDictData sysDictData);
 
     WxOrder getByOutTradeNo(String outTradeNo);
 

+ 28 - 8
sdjk-service/src/main/java/com/miaxis/wx/service/impl/WxOrderServiceImpl.java

@@ -8,6 +8,7 @@ import com.github.wxpay.sdk.WXPayConstants;
 import com.github.wxpay.sdk.WXPayUtil;
 import com.miaxis.common.config.WxPayConfigImpl;
 import com.miaxis.common.config.WxpayConfig;
+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;
@@ -74,27 +75,46 @@ public class WxOrderServiceImpl extends ServiceImpl<WxOrderMapper, WxOrder> impl
 
 
     @Override
-    public void createVipOrder(WxOrder wxOrder, Integer type) {
+    public void createVipOrder(WxOrder wxOrder, SysDictData sysDictData) {
         String price = null ;
-        if (type == 1){
-            price = configService.selectConfigByKey("vip_price");
-        }
         UserInfo student = SecurityUtils.getLoginUser().getStudent();
         UserInfo userInfo = userInfoService.getById(student.getId());
-        if (type == 2){
+        //兼容线上版本
+        if (sysDictData == null){
+            price = configService.selectConfigByKey("vip_price");
+            wxOrder.setGoodsName("速达驾考超级vip");
+            //成为高级vip
+            wxOrder.setOrderDataJson("1");
+        }else if ("sdjk_vip".equals(sysDictData.getDictLabel())){
             if (userInfo.getBindRecommendCode()!=null){
-                price = configService.selectConfigByKey("vip_price_recommend");
+                price = sysDictData.getDictValue().split(",")[0];
                 //根据绑定的推荐码获取推荐主播
                 QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
                 queryWrapper.eq("recommend_code",userInfo.getBindRecommendCode());
                 UserInfo zhubo = userInfoService.getOne(queryWrapper);
                 wxOrder.setReferralUserId(zhubo.getId());
+                wxOrder.setGoodsName(sysDictData.getRemark());
+                //成为高级vip
+                wxOrder.setOrderDataJson("1");
             }else{
                 throw new CustomException("该学员未绑定推荐码,不能使用此套餐");
             }
+        }else if ("sdjk_up_sp_vip".equals(sysDictData.getDictLabel())){
+            if (userInfo.getIsVip()==2){
+                price = sysDictData.getDictValue().split(",")[0];
+                wxOrder.setGoodsName(sysDictData.getRemark());
+                //成为普通vip
+                wxOrder.setOrderDataJson("2");
+            }else {
+                throw new CustomException("该学员还不是普通会员,不能使用升级套餐");
+            }
+
         }
-        if (type == 3){
-            price = configService.selectConfigByKey("vip_price_upgrade");
+        else if ("sdjk_sp_vip".equals(sysDictData.getDictLabel())){
+            price = sysDictData.getDictValue().split(",")[0];
+            wxOrder.setGoodsName(sysDictData.getRemark());
+            //成为高级vip
+            wxOrder.setOrderDataJson("1");
         }