Просмотр исходного кода

分配及开卡,结算续费卡,卡用户信息保存

mingfu 1 месяц назад
Родитель
Сommit
804f1d14a9

+ 17 - 4
ie-admin/src/main/java/com/ruoyi/web/controller/dz/DzCardsController.java

@@ -6,6 +6,7 @@ import java.util.stream.Collectors;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.ValidationException;
 
+import com.alibaba.fastjson2.JSONObject;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.enums.ExamType;
 import com.ruoyi.common.enums.UserRegStatus;
@@ -18,8 +19,10 @@ import com.ruoyi.enums.CardAction;
 import com.ruoyi.enums.CardType;
 import com.ruoyi.enums.UserTypeEnum;
 import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.web.domain.CardUserBody;
 import com.ruoyi.web.domain.DzCardExport;
 import com.ruoyi.web.service.SysLoginService;
+import com.ruoyi.web.service.SysRegisterService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -56,6 +59,8 @@ public class DzCardsController extends BaseController
     private ISysUserService sysUserService;
     @Autowired
     private SysLoginService sysLoginService;
+    @Autowired
+    private SysRegisterService sysRegisterService;
 
     /**
      * 查询学习卡列表
@@ -166,9 +171,9 @@ public class DzCardsController extends BaseController
         return AjaxResult.success();
     }
 
-    @Log(title = "分配卡", businessType = BusinessType.INSERT)
+    @Log(title = "分配卡", businessType = BusinessType.INSERT)
     @PostMapping("/assignCard")
-    @ApiOperation("分配卡")
+    @ApiOperation("分配即开卡")
     public AjaxResult assignCard(@ApiParam("代理商") @RequestParam Long agentId, @ApiParam("卡类型") String type, @ApiParam(value = "卡类型") Integer cardType,
                                  @ApiParam("开始号") @RequestParam String begin, @ApiParam("结束号") @RequestParam String end,
                                  @ApiParam("省份") @RequestParam(required = false) String location,
@@ -201,7 +206,7 @@ public class DzCardsController extends BaseController
     public AjaxResult openCard(@ApiParam("代理商") Long agentId, @ApiParam("省份") String location, @ApiParam("学校") Long schoolId, @ApiParam("开始号") String begin, @ApiParam("结束号") String end,
                                @ApiParam("有效天数") @RequestParam(required = false) Integer days)
     {
-        return AjaxResult.success(dzCardsService.openCard(agentId, location, schoolId, begin, end, days));
+        return AjaxResult.error("暂不支持,现在分配即开卡"); // success(dzCardsService.openCard(agentId, location, schoolId, begin, end, days));
     }
 
     @Log(title = "分配校区", businessType = BusinessType.INSERT)
@@ -214,7 +219,7 @@ public class DzCardsController extends BaseController
 
     @Log(title = "修改卡", businessType = BusinessType.UPDATE)
     @PostMapping("/changeCard")
-    @ApiOperation("修改卡 重卡/关卡/支付")
+    @ApiOperation("修改卡 重卡/关卡/支付/续费/结算")
     public AjaxResult changeCard(@ApiParam("操作") @RequestParam CardAction action, @ApiParam("卡ID") @RequestParam Long[] cardIds)
     {
         dzCardsService.changeCard(action, cardIds);
@@ -235,6 +240,14 @@ public class DzCardsController extends BaseController
         return AjaxResult.success();
     }
 
+    @Log(title = "修改卡用户信息", businessType = BusinessType.UPDATE)
+    @PostMapping("/updateCardUser")
+    @ApiOperation("修改卡用户信息")
+    public AjaxResult updateCardUser(@RequestBody CardUserBody cardUserBody) {
+        sysRegisterService.improve(cardUserBody);
+        return AjaxResult.success();
+    }
+
 
     private CardType getCardType(Long institutionId, String type) {
         if(!NumberUtils.isNumeric(type)) {

+ 1 - 1
ie-admin/src/main/java/com/ruoyi/web/controller/front/UserController.java

@@ -398,7 +398,7 @@ public class UserController extends BaseController {
 //            return AjaxResult.error("卡已使用");
 //        }
 
-        if(!CardStatus.Paid.getVal().equals(cards.getStatus())) {
+        if(!CardStatus.Open.getVal().equals(cards.getStatus()) || !CardStatus.Paid.getVal().equals(cards.getStatus())) {
             return AjaxResult.error("无效卡");
         }
         if(null != cards.getAssignSchoolId()) {

+ 16 - 0
ie-admin/src/main/java/com/ruoyi/web/domain/CardUserBody.java

@@ -0,0 +1,16 @@
+package com.ruoyi.web.domain;
+
+import com.alibaba.fastjson2.JSONArray;
+import com.ruoyi.common.core.domain.model.RegisterBody;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel("卡用户信息")
+public class CardUserBody extends RegisterBody {
+    @ApiModelProperty(value = "学生ID", example = "1")
+    Long cardId;
+    @ApiModelProperty(value = "目标院校", example = "")
+    JSONArray directionStudy;
+}

+ 51 - 3
ie-admin/src/main/java/com/ruoyi/web/service/SysRegisterService.java

@@ -1,7 +1,7 @@
 package com.ruoyi.web.service;
 
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.domain.model.LoginCard;
+import com.alibaba.fastjson2.JSONObject;
+import com.google.common.collect.Lists;
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.enums.UserRegStatus;
 import com.ruoyi.common.exception.base.BaseException;
@@ -13,6 +13,9 @@ import com.ruoyi.enums.UserTypeEnum;
 import com.ruoyi.framework.web.service.TokenService;
 import com.ruoyi.learn.domain.LearnStudent;
 import com.ruoyi.learn.mapper.LearnStudentMapper;
+import com.ruoyi.system.mapper.SysUserMapper;
+import com.ruoyi.web.domain.CardUserBody;
+import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import com.ruoyi.common.constant.CacheConstants;
@@ -29,7 +32,9 @@ import com.ruoyi.system.service.ISysConfigService;
 import com.ruoyi.system.service.ISysUserService;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.validation.ValidationException;
 import java.text.ParseException;
+import java.util.List;
 
 /**
  * 注册校验方法
@@ -55,6 +60,10 @@ public class SysRegisterService
     private TokenService tokenService;
     @Autowired
     private LearnStudentMapper learnStudentMapper;
+    @Autowired
+    private SysUserMapper sysUserMapper;
+    @Autowired
+    private LearnTeacherService learnTeacherService;
 
     /**
      * 注册
@@ -140,6 +149,45 @@ public class SysRegisterService
         return "";
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    public void improve(CardUserBody cardUserBody) {
+        DzCards card = cardsService.selectDzCardsByCardId(cardUserBody.getCardId());
+        if(null == card) {
+            throw new ValidationException("卡用户不存在");
+        }
+        List<SysUser> sysUserList = sysUserMapper.selectUserByCardIds(Lists.newArrayList(card.getCardId()));
+        if(CollectionUtils.isEmpty(sysUserList)) {
+            throw new ValidationException("卡用户不存在");
+        }
+        Long userId = sysUserList.get(0).getUserId();
+
+        SysUser upUser = new SysUser();
+        upUser.setUserId(userId);
+        upUser.setNickName(cardUserBody.getNickName());
+        upUser.setLocation(cardUserBody.getLocation());
+        upUser.setExamType(cardUserBody.getExamType());
+        upUser.setEndYear(cardUserBody.getEndYear());
+        upUser.setScores(cardUserBody.getScores());
+        upUser.setSchoolId(cardUserBody.getSchoolId());
+        upUser.setClassId(cardUserBody.getClassId());
+
+
+        JSONObject directed = cardUserBody.getDirectionStudy().getJSONObject(0);
+        Long planId = directed.getLongValue("majorId");
+        Long universityId = directed.getLongValue("universityId");
+        directed.put("notice", learnTeacherService.updateDirected(userId, universityId, planId));
+        cardUserBody.getDirectionStudy().set(0, directed);
+        upUser.setDirectedStudy(cardUserBody.getDirectionStudy().toJSONString());
+
+        DzCards upCard = new DzCards();
+        upCard.setCardId(card.getCardId());
+        upCard.setSchoolId(cardUserBody.getSchoolId());
+        upCard.setClassId(cardUserBody.getClassId());
+        upCard.setCampusId(cardUserBody.getCampusSchoolId());
+        upCard.setCampusClassId(cardUserBody.getCampusClassId());
+        cardsService.updateDzCards(upCard);
+    }
+
     private void saveInfo(SysUser user, DzCards card, RegisterBody register) {
         user.setNickName(register.getNickName());
         user.setLocation(register.getLocation());
@@ -159,7 +207,7 @@ public class SysRegisterService
             card.setClassId(register.getClassId());
 
             if(null == user.getCardId() || !user.getCardId().equals(card.getCardId())) { // 未绑定或换绑时激活卡
-                if(!CardStatus.Paid.getVal().equals(card.getStatus())) {
+                if(!CardStatus.Paid.getVal().equals(card.getStatus()) && !CardStatus.Open.getVal().equals(card.getStatus())) {
                     throw new RuntimeException("无效卡");
                 }
                 user.setEvalCounts("{\"1\":1,\"2\":1,\"3\":1,\"11\":1,\"0\":0}");

+ 5 - 0
ie-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java

@@ -31,4 +31,9 @@ public class RegisterBody extends LoginBody
     Long schoolId;
     @ApiModelProperty(value = "班级ID", example = "1")
     Long classId;
+    @ApiModelProperty(value = "培训学校ID", example = "1")
+    Long campusSchoolId;
+    @ApiModelProperty(value = "培训班级ID", example = "1")
+    Long campusClassId;
+
 }

+ 14 - 4
ie-system/src/main/java/com/ruoyi/dz/service/impl/DzCardsServiceImpl.java

@@ -248,8 +248,8 @@ public class DzCardsServiceImpl implements IDzCardsService
             dzCards.setAssignExamType(null != examType ? examType.name() : null);
             dzCards.setAssignSchoolId(schoolId);
             dzCards.setDistributeStatus(CardDistributeStatus.Assign.getVal());
-            dzCards.setPayStatus(PayStatus.Paid.getVal()); // TODO 暂时分配即开卡
-            dzCards.setStatus(CardStatus.Paid.getVal());
+            dzCards.setPayStatus(PayStatus.UnPay.getVal()); // TODO 暂时分配即开卡
+            dzCards.setStatus(CardStatus.Open.getVal());
             dzCards.setDays(days);
             dzCardsMapper.updateDzCards(dzCards);
         });
@@ -394,11 +394,21 @@ public class DzCardsServiceImpl implements IDzCardsService
             up.setDistributeStatus(CardDistributeStatus.Close.getVal());
             up.setPayStatus(PayStatus.Refund.getVal());
             up.setRefundTime(DateUtils.getNowDate());
+        } else if(CardAction.Settlement.equals(action)) {
+            if(cards.stream().filter(t -> null != t.getIsSettlement() && t.getIsSettlement().equals(1)).count() > 0) {
+                throw new ValidationException("有卡已经结算: " + StringUtils.join(cardIds, ","));
+            }
+            up.setSettlementTime(DateUtils.getNowDate());
+            up.setIsSettlement(1);
+        } else if(CardAction.Renew.equals(action)) {
         } else {
             throw new ValidationException("无效操作");
         }
-        for(Long cardId : cardIds) {
-            up.setCardId(cardId);
+        for(DzCards card : cards) {
+            up.setCardId(card.getCardId());
+            if(CardAction.Renew.equals(action)) {
+                card.setOutDate(DateUtils.addYears(card.getOutDate(), 3)); // TODO 暂时都续费三年?
+            }
             dzCardsMapper.updateDzCards(up);
         }
     }

+ 1 - 1
ie-system/src/main/java/com/ruoyi/enums/CardAction.java

@@ -6,5 +6,5 @@ import lombok.Getter;
 @Getter
 @AllArgsConstructor
 public enum CardAction {
-    Pay, Open, Close, ReOpen, Refund;
+    Pay, Open, Close, ReOpen, Refund, Settlement, Renew;
 }