ソースを参照

Merge remote-tracking branch 'origin/developerA' into developerA

chao 3 年 前
コミット
57248161c9

+ 6 - 0
src/main/java/com/caimei365/user/controller/BaseApi.java

@@ -161,12 +161,18 @@ public class BaseApi {
     public ResponseJson findVipHistory(Integer userId,
                                        @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
                                        @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
+        if (null == userId) {
+            return ResponseJson.error("参数异常:用户Id不能为空!", null);
+        }
         return baseService.findVipHistory(userId, pageNum, pageSize);
     }
 
     @ApiOperation("超级会员会员中心")
     @GetMapping("super/center")
     public ResponseJson<Map<String, Object>> superCenter(Integer userId) {
+        if (null == userId) {
+            return ResponseJson.error("参数异常:用户Id不能为空!", null);
+        }
         return baseService.superCenter(userId);
     }
 }

+ 3 - 1
src/main/java/com/caimei365/user/model/dto/SuperVipDto.java

@@ -1,5 +1,7 @@
 package com.caimei365.user.model.dto;
 
+import com.caimei365.user.model.po.SuperVipPo;
+import com.caimei365.user.model.po.VipPayHistoryPo;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -15,7 +17,7 @@ import java.util.Date;
 @Data
 @NoArgsConstructor
 @AllArgsConstructor
-public class SuperVipDto implements Serializable {
+public class SuperVipDto extends VipPayHistoryPo implements Serializable {
 
 
     @ApiModelProperty("用户Id")

+ 31 - 22
src/main/java/com/caimei365/user/service/impl/BaseServiceImpl.java

@@ -459,39 +459,48 @@ public class BaseServiceImpl implements BaseService {
      * @return
      */
     @Override
-    public ResponseJson findVipHistory(Integer userId, Integer pageNum, Integer pageSize) {
-        if (null == userId) {
-            return ResponseJson.error("参数异常:用户Id不能为空!", null);
-        }
+    public ResponseJson<Map<String, Object>> findVipHistory(Integer userId, Integer pageNum, Integer pageSize) {
         PageHelper.startPage(pageNum, pageSize);
         List<VipPayHistoryPo> vipHistory = vipMapper.findVipHistory(userId);
-        PageInfo<VipPayHistoryPo> pageInfo = new PageInfo<>(vipHistory);
-        return ResponseJson.success(pageInfo);
+        PageInfo<VipPayHistoryPo> historyPageInfo = new PageInfo<>(vipHistory);
+        HashMap<String, Object> map = new HashMap<>(2);
+        //购买记录存入map
+        map.put("history", historyPageInfo);
+        //查过期时间
+        SuperVipDto vipEnd = findEnd(userId);
+        map.put("vip",vipEnd);
+        return ResponseJson.success(map);
     }
 
     @Override
     public ResponseJson<Map<String, Object>> superCenter(Integer userId) {
-        if (null == userId) {
-            return ResponseJson.error("参数异常:用户Id不能为空!", null);
-        }
         //1.封装vipDto看超级会员是否过期,0未开通,-1过期,1未过期
-        SuperVipPo superVip = vipMapper.findSuperVip(userId);
-        SuperVipDto superVipDto = new SuperVipDto();
-        if (superVip == null) {
-            superVipDto.setVipFlag(0);
-        }
-        SuperVipPo endTime = vipMapper.findEndTime(userId);
-        if (endTime == null) {
-            superVipDto.setVipFlag(-1);
-            superVipDto.setEndTime(superVip.getEndTime());
-        }
-        superVipDto.setVipFlag(1);
-        superVipDto.setEndTime(endTime.getEndTime());
+        SuperVipDto vipEnd = findEnd(userId);
         Map<String, Object> map = new HashMap(3);
-        map.put("vip", superVipDto);
+        map.put("vip", vipEnd);
         //todo 2.查专属优惠卷
 
         //todo 3.查专属商品
         return ResponseJson.success(map);
     }
+
+    /**
+     * 根据userId查是否过期,返回dto对象,flag=0未买过,-1过期,1有效,endTime过期时间
+     */
+    private SuperVipDto findEnd(Integer userId) {
+        SuperVipPo superVip = vipMapper.findSuperVip(userId);
+        SuperVipDto superVipDto = new SuperVipDto();
+        if (superVip == null) {
+            superVipDto.setVipFlag(0);
+        } else {
+            SuperVipPo endTime = vipMapper.findEndTime(userId);
+            if (endTime == null) {
+                superVipDto.setVipFlag(-1);
+                superVipDto.setEndTime(superVip.getEndTime());
+            }
+            superVipDto.setVipFlag(1);
+            superVipDto.setEndTime(endTime.getEndTime());
+        }
+        return superVipDto;
+    }
 }

+ 64 - 40
src/main/java/com/caimei365/user/service/impl/RegisterServiceImpl.java

@@ -963,13 +963,13 @@ public class RegisterServiceImpl implements RegisterService {
     @Override
     public ResponseJson superVipUpByBeans(SuperVipDto vipDto, HttpHeaders headers) {
         Integer userId = vipDto.getUserId();
-        SuperVipPo superVip = vipMapper.findSuperVip(userId);
-        //库里没有则新增
-        if (null == superVip) {
-            //1.查用户采美豆,够就用采美豆下单,不够就返回信息
+        SuperVipDto endFlag = findEnd(userId);
+        //过期和没买过都是生效时间重置,到期时间=现在+套餐时间
+        if (endFlag.getVipFlag() == 0 || endFlag.getVipFlag()==-1) {
             Integer userBeans = vipMapper.findUserBeans(userId);
             Integer userPackage = vipDto.getUserPackage();
             Double price = vipMapper.findUserPackage(userPackage);
+            //1.查用户采美豆,够就用采美豆下单,不够就返回信息
             if (Double.valueOf(userBeans) >= (price * 100)) {
                 //用户采美豆>=套餐需要的采美豆,调用采美豆支付方法
                 //传空表示新客户
@@ -978,20 +978,32 @@ public class RegisterServiceImpl implements RegisterService {
             }
             return ResponseJson.error("用户采美豆不足,请确认后再支付", null);
         }
-        if (superVip.getDelFlag() != 0) {
-            return ResponseJson.error("用户信息已删除,请确认后重试", null);
+        else{
+            //续费生效时间不变,原到期时间+套餐时间
+            beanPay(vipDto, endFlag.getEndTime(), 1);
+            return ResponseJson.success("支付采美豆购买成功", null);
         }
-        //库里有用户信息,查是否过期,没过期续费,过期重买
-        // 设置日期时间格式
-        Long current = System.currentTimeMillis();
-        Long endTime = superVip.getEndTime().getTime();
-        //现在时间大于过期时间则重买,重买begintime=now,不是重买的话begintime=supervip.getendtime否则续费
-        if (current >= endTime) {
-            beanPay(vipDto, null, 0);
+    }
+
+
+    /**
+     * 根据userId查是否过期,返回dto对象,flag=0未买过,-1过期,1有效,endTime过期时间
+     */
+    private SuperVipDto findEnd(Integer userId) {
+        SuperVipPo superVip = vipMapper.findSuperVip(userId);
+        SuperVipDto superVipDto = new SuperVipDto();
+        if (superVip == null) {
+            superVipDto.setVipFlag(0);
         } else {
-            beanPay(vipDto, superVip.getEndTime(), 1);
+            SuperVipPo endTime = vipMapper.findEndTime(userId);
+            if (endTime == null) {
+                superVipDto.setVipFlag(-1);
+                superVipDto.setEndTime(superVip.getEndTime());
+            }
+            superVipDto.setVipFlag(1);
+            superVipDto.setEndTime(endTime.getEndTime());
         }
-        return ResponseJson.success("支付采美豆购买成功", null);
+        return superVipDto;
     }
 
     /**
@@ -1007,20 +1019,47 @@ public class RegisterServiceImpl implements RegisterService {
         Double price = vipMapper.findUserPackage(userPackageId);
         Integer userBeans = vipMapper.findUserBeans(userId);
         vipMapper.updateUserBeans(vipDto.getUserId(), Integer.valueOf(String.valueOf(userBeans - price * 100)));
-        //2.改user权限
-        vipMapper.updateUserPermission(userId, 7);
-        vipMapper.updateUserIdentity(userId, 7);
-        //3.超级会员表更改
-        SuperVipPo superVip = vipMapper.findSuperVip(userId);
-        //重买标记是0生效时间就是now
+        //采美豆消费表记录
+        vipMapper.updateUserBeansHistory(userId, Integer.valueOf((int) (price * 100)));
         if (repayFlag == 0) {
+            SuperVipPo superVip = new SuperVipPo();
             beginTime = new Date();
             superVip.setBeginTime(beginTime);
+            superVip.setUpdateTime(beginTime);
+            superVip.setDelFlag(0);
+            superVip.setUserId(userId);
+            Calendar cal = Calendar.getInstance();
+            cal.setTime(beginTime);
+            Integer userPackageTime = vipMapper.findUserPackageTime(userPackageId);
+            cal.add(Calendar.MONTH, userPackageTime);
+            superVip.setEndTime(beginTime);
+            //2.超级会员表更改,重买标记是0生效时间就是now
+            vipMapper.addVip(superVip);
+            //购买记录表加数据
+            setHistory(userId,price,userPackageId,beginTime);
+        }else{
+            SuperVipPo superVip = vipMapper.findSuperVip(userId);
+            superVip.setUpdateTime(new Date());
+            Calendar cal = Calendar.getInstance();
+            //续费加时间
+            cal.setTime(beginTime);
+            Integer userPackageTime = vipMapper.findUserPackageTime(userPackageId);
+            cal.add(Calendar.MONTH, userPackageTime);
+            superVip.setEndTime(beginTime);
+            vipMapper.updateVip(superVip);
+            //购买记录表加数据
+            setHistory(userId,price,userPackageId,beginTime);
         }
-        superVip.setDelFlag(0);
-        superVip.setUserId(userId);
-        superVip.setUpdateTime(beginTime);
-        //4.改采美豆历史表和会员购买记录
+    }
+
+    /**
+     * 修改超级会员记录表
+     * @param userId
+     * @param price
+     * @param userPackageId
+     * @param beginTime
+     */
+    private void setHistory(Integer userId,Double price,Integer userPackageId,Date beginTime){
         VipPayHistoryPo payHistory = new VipPayHistoryPo();
         payHistory.setUserId(userId);
         payHistory.setUserBeans(price * 100);
@@ -1029,22 +1068,7 @@ public class RegisterServiceImpl implements RegisterService {
         payHistory.setPackageId(userPackageId);
         payHistory.setPrice(0.00);
         payHistory.setBeginTime(beginTime);
-        //给begintime加上套餐的时间变成到期时间
-        Calendar cal = Calendar.getInstance();
-        cal.setTime(beginTime);
-        Integer userPackageTime = vipMapper.findUserPackageTime(userPackageId);
-        cal.add(Calendar.MONTH, userPackageTime);
-        payHistory.setEndTime(beginTime);
-        superVip.setEndTime(beginTime);
-        //加入超级会员表,重买标记是1,修改表
-        if (repayFlag == 1) {
-            vipMapper.updateVip(superVip);
-        }
-        vipMapper.addVip(superVip);
-        //加入会员购买记录
         vipMapper.addPayHistory(payHistory);
-        //采美豆变更加入采美豆历史表
-        vipMapper.updateUserBeansHistory(userId, Integer.valueOf((int) (price * 100)));
     }
 }
 

+ 3 - 1
src/main/resources/mapper/SuperVipMapper.xml

@@ -82,7 +82,9 @@
         <if test="delFlag != null and delFlag != ''">
             delFlag=#{delFlag},
         </if>
-        endTime = #{endTime}
+        <if test="endTime!=null and endTime!=''">
+            endTime = #{endTime}
+        </if>
         where userId = #{userId}
     </update>