浏览代码

调整与前端接口

阿伏兔 4 年之前
父节点
当前提交
6ff4c5d6fe

+ 17 - 8
ruoyi-admin/src/main/java/com/ruoyi/web/controller/hotel/SvipItemsController.java

@@ -3,18 +3,16 @@ package com.ruoyi.web.controller.hotel;
 import java.util.List;
 import java.util.Map;
 
+import com.ruoyi.common.core.domain.model.LoginUser;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.ServletUtils;
+import com.ruoyi.common.utils.spring.SpringUtils;
+import com.ruoyi.framework.web.service.TokenService;
 import com.ruoyi.hotel.domain.SvipIccards;
 import com.ruoyi.hotel.service.ISellbillsService;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
@@ -81,6 +79,17 @@ public class SvipItemsController extends BaseController {
     }
 
     /**
+     * 消费保存
+     */
+    @RequestMapping("/bookkeepingSales")
+    public AjaxResult saveSales(
+            @RequestParam("sellbills") String tdSalesDto,
+            @RequestParam("iccards") String svipIccardsDto) {
+        LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
+        return svipItemsService.bookkeepingSales(tdSalesDto, svipIccardsDto, loginUser.getUser());
+    }
+
+    /**
      * 修改会员卡类型
      */
     @PreAuthorize("@ss.hasPermi('svip:svipItems:edit')")

+ 1 - 1
ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/impl/SameUrlDataInterceptor.java

@@ -40,7 +40,7 @@ public class SameUrlDataInterceptor extends RepeatSubmitInterceptor
      * 
      * 两次相同参数的请求,如果间隔时间大于该参数,系统不会认定为重复提交的数据
      */
-    private int intervalTime = 10;
+    private int intervalTime = 3;
 
     public void setIntervalTime(int intervalTime)
     {

+ 16 - 0
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java

@@ -1,6 +1,8 @@
 package com.ruoyi.framework.web.service;
 
 import javax.annotation.Resource;
+
+import com.ruoyi.common.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.authentication.AuthenticationManager;
 import org.springframework.security.authentication.BadCredentialsException;
@@ -18,6 +20,8 @@ import com.ruoyi.common.utils.MessageUtils;
 import com.ruoyi.framework.manager.AsyncManager;
 import com.ruoyi.framework.manager.factory.AsyncFactory;
 
+import java.util.Collection;
+
 /**
  * 登录校验方法
  * 
@@ -80,6 +84,18 @@ public class SysLoginService
                 throw new CustomException(e.getMessage());
             }
         }
+        Collection<String> keys = redisCache.keys(Constants.LOGIN_TOKEN_KEY + "*");
+        for (String key : keys) {
+            LoginUser user = redisCache.getCacheObject(key);
+            if (StringUtils.isNotEmpty(username) && StringUtils.isNotNull(user.getUser()))
+            {
+                if (StringUtils.equals(username, user.getUsername()))
+                {
+                    // 若发现有其他用户登录,顶替掉其他用户
+                    redisCache.deleteObject(Constants.LOGIN_TOKEN_KEY + user.getToken());
+                }
+            }
+        }
         AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
         LoginUser loginUser = (LoginUser) authentication.getPrincipal();
         // 生成token

+ 4 - 0
ruoyi-hotel/src/main/java/com/ruoyi/hotel/service/ISvipItemsService.java

@@ -3,6 +3,8 @@ package com.ruoyi.hotel.service;
 import java.util.List;
 import java.util.Map;
 
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.hotel.domain.SvipItems;
 
 /**
@@ -61,4 +63,6 @@ public interface ISvipItemsService {
     public int deleteSvipItemsById(Long itemId);
 
     List<SvipItems> selectSvipItemsMapList(SvipItems svipItems);
+
+    AjaxResult bookkeepingSales(String tdSalesDto, String svipIccardsDto, SysUser user);
 }

+ 2 - 9
ruoyi-hotel/src/main/java/com/ruoyi/hotel/service/impl/SellbillsServiceImpl.java

@@ -139,11 +139,6 @@ public class SellbillsServiceImpl implements ISellbillsService {
             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
             return AjaxResult.error("未找到用户信息");
         }
-        SysDept sysDept = sysDeptMapper.selectDeptById(user.getDeptId());
-        if (StringUtils.isNull(sysDept)) {
-            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-            return AjaxResult.error("未找到部门信息");
-        }
         //获取当前年月
         Calendar cal = Calendar.getInstance();
         long year = cal.get(Calendar.YEAR);
@@ -161,7 +156,7 @@ public class SellbillsServiceImpl implements ISellbillsService {
         sellbills.setUserBane(userDto.getUserName());
         sellbills.setActId(410L);
         sellbills.setBillStatus(6L);
-        sellbills.setDeptId(sysDept.getDeptId());
+        sellbills.setDeptId(userDto.getDeptId());
         sellbills.setPrintTime(new Date());
         sellbills.setCardId(iccards.getId());
         sellbills.setCardNo(iccards.getCardNo());
@@ -231,8 +226,6 @@ public class SellbillsServiceImpl implements ISellbillsService {
         int newIccardsUpdat = svipIccardsMapper.updateSvipIccards(svipIccards);
         iccards.setStatus("S");
         int iccardsUpdate = svipIccardsMapper.updateSvipIccards(iccards);
-        SysUser sysUser = sysUserMapper.selectUserById(iccards.getGrantId());
-        SysDept sysDept = sysDeptMapper.selectDeptByUser(sysUser);
         //获取当前年月
         Calendar cal = Calendar.getInstance();
         long year = cal.get(Calendar.YEAR);
@@ -250,7 +243,7 @@ public class SellbillsServiceImpl implements ISellbillsService {
         sellbills.setUserBane(userDto.getUserName());
         sellbills.setActId(210L);
         sellbills.setBillStatus(6L);
-        sellbills.setDeptId(sysDept.getDeptId());
+        sellbills.setDeptId(userDto.getDeptId());
         sellbills.setPrintTime(new Date());
         sellbills.setCardId(iccards.getId());
         sellbills.setCardNo(iccards.getCardNo());

+ 2 - 8
ruoyi-hotel/src/main/java/com/ruoyi/hotel/service/impl/SvipIccardsServiceImpl.java

@@ -198,9 +198,6 @@ public class SvipIccardsServiceImpl implements ISvipIccardsService {
         svipIccardsDto.setGrantDate(new Date());
         svipIccardsDto.setGrantOpname(userDto.getUserName());
         svipIccardsDto.setVipBlc(svipIccardsDto.getVipDr());
-        SysUser user = new SysUser();
-        user.setUserId(svipIccardsDto.getGrantId());
-        SysDept sysDept = sysDeptMapper.selectDeptByUser(user);
         //获取当前年月
         Calendar cal = Calendar.getInstance();
         long year = cal.get(Calendar.YEAR);
@@ -218,7 +215,7 @@ public class SvipIccardsServiceImpl implements ISvipIccardsService {
         sellbills.setUserBane(userDto.getUserName());
         sellbills.setActId(101L);
         sellbills.setBillStatus(6L);
-        sellbills.setDeptId(sysDept.getDeptId());
+        sellbills.setDeptId(userDto.getDeptId());
         sellbills.setPrintTime(new Date());
         sellbills.setCardId(svipIccardsDto.getId());
         sellbills.setCardNo(svipIccardsDto.getCardNo());
@@ -254,9 +251,6 @@ public class SvipIccardsServiceImpl implements ISvipIccardsService {
         if ("S".equals(iccards.getStatus())) {
             return AjaxResult.error("操作失败,该会员卡已被停用");
         }
-        SysUser sysUser = new SysUser();
-        sysUser.setUserId(iccards.getGrantId());
-        SysDept sysDept = sysDeptMapper.selectDeptByUser(sysUser);
         //获取当前年月
         Calendar cal = Calendar.getInstance();
         long year = cal.get(Calendar.YEAR);
@@ -274,7 +268,7 @@ public class SvipIccardsServiceImpl implements ISvipIccardsService {
         sellbills.setUserBane(user.getUserName());
         sellbills.setActId(310L);
         sellbills.setBillStatus(6L);
-        sellbills.setDeptId(sysDept.getDeptId());
+        sellbills.setDeptId(user.getDeptId());
         sellbills.setPrintTime(new Date());
         sellbills.setCardId(iccards.getId());
         sellbills.setCardNo(iccards.getCardNo());

+ 81 - 2
ruoyi-hotel/src/main/java/com/ruoyi/hotel/service/impl/SvipItemsServiceImpl.java

@@ -1,13 +1,23 @@
 package com.ruoyi.hotel.service.impl;
 
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
+import com.alibaba.fastjson.JSONArray;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.hotel.domain.Sellbills;
+import com.ruoyi.hotel.domain.SvipIccards;
+import com.ruoyi.hotel.mapper.SellbillsMapper;
+import com.ruoyi.hotel.mapper.SvipIccardsMapper;
+import com.ruoyi.system.mapper.SysDeptMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ruoyi.hotel.mapper.SvipItemsMapper;
 import com.ruoyi.hotel.domain.SvipItems;
 import com.ruoyi.hotel.service.ISvipItemsService;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 /**
  * 会员卡类型Service业务层处理
@@ -18,8 +28,17 @@ import com.ruoyi.hotel.service.ISvipItemsService;
 @Service
 public class SvipItemsServiceImpl implements ISvipItemsService {
     @Autowired
+    private SvipIccardsMapper svipIccardsMapper;
+
+    @Autowired
     private SvipItemsMapper svipItemsMapper;
 
+    @Autowired
+    private SellbillsMapper sellbillsMapper;
+
+    @Autowired
+    private SysDeptMapper sysDeptMapper;
+
     /**
      * 查询会员卡类型
      *
@@ -90,4 +109,64 @@ public class SvipItemsServiceImpl implements ISvipItemsService {
     public List<SvipItems> selectSvipItemsMapList(SvipItems svipItems) {
         return svipItemsMapper.selectSvipItemsList(svipItems);
     }
+
+    /**
+     * 消费保存
+     */
+    @Override
+    @Transactional
+    public AjaxResult bookkeepingSales(String tdSalesDto, String svipIccardsDto, SysUser user) {
+        //获取当前年月
+        Calendar cal = Calendar.getInstance();
+        long year = cal.get(Calendar.YEAR);
+        int month = cal.get(Calendar.MONTH) + 1;
+        SvipIccards svipIccards = JSONArray.parseObject(svipIccardsDto, SvipIccards.class);
+        SvipIccards iccard = new SvipIccards();
+        iccard.setCardId(svipIccards.getCardId());
+        iccard.setCardNo(svipIccards.getCardNo());
+        List<SvipIccards> iccardList = svipIccardsMapper.selectSvipIccardsList(iccard);
+        if (Objects.equals(iccardList.size(), 0) || iccardList.size() > 1) {
+            return AjaxResult.error("会员卡信息有误,请联系管理员");
+        }
+        SvipIccards iccards = iccardList.get(0);
+        if ("S".equals(iccards.getStatus())) {
+            return AjaxResult.error("未找到会员卡或会员卡无效");
+        }
+        if (iccards.getVipBlc() < svipIccards.getVipCr()) {
+            return AjaxResult.error("会员卡余额不足");
+        }
+        svipIccards.setRemarks(iccards.getRemarks());
+        svipIccards.setVipCr(svipIccards.getVipCr() + iccards.getVipCr());
+        int iccardUpdate = svipIccardsMapper.updateSvipIccards(svipIccards);
+        svipIccards.setId(iccards.getId());
+        Sellbills sellbills = JSONArray.parseObject(tdSalesDto, Sellbills.class);
+        sellbills.setAccYear(year);
+        sellbills.setAccMonth(month);
+        sellbills.setCreateDate(new Date());
+        sellbills.setBillDate(new Date());
+        sellbills.setApplyDate(new Date());
+        sellbills.setAuditDate(new Date());
+        sellbills.setPostDate(new Date());
+        sellbills.setUserBane(user.getUserName());
+        sellbills.setActId(110L);
+        sellbills.setBillStatus(6L);
+        sellbills.setDeptId(user.getDeptId());
+        sellbills.setCardId(iccards.getId());
+        sellbills.setCardNo(iccards.getCardNo());
+        sellbills.setItemId(iccards.getItemId());
+        sellbills.setItemType(iccards.getItemType());
+        sellbills.setVipDr(svipIccards.getVipDr());
+        sellbills.setVipBlc(iccards.getVipBlc());
+        sellbills.setCorpName(iccards.getCorpName());
+        sellbills.setCorpTel(iccards.getCorpTel());
+        sellbills.setCorpAddr(iccards.getCorpAddr());
+        sellbills.setCorpidCardno(iccards.getCorpIdcardNo());
+        sellbills.setRemarks(svipIccards.getRemarks());
+        int sellInsert = sellbillsMapper.insertSellbills(sellbills);
+        if (iccardUpdate <= 0 || sellInsert <= 0) {
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            return AjaxResult.error("更新数据失败,请联系管理员");
+        }
+        return AjaxResult.success();
+    }
 }