xiaoyong931011
2021-04-12 a13a93a493e7e94e28b2225c26e7e13b52d3288c
zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopBizUserScoreAction.java
@@ -1,25 +1,10 @@
package com.matrix.system.shopXcx.action;
import com.matrix.biz.bean.BizUser;
import com.matrix.biz.service.BizUserService;
import com.matrix.core.anotations.RemoveRequestToken;
import com.matrix.core.anotations.SaveRequestToken;
import com.matrix.core.constance.MatrixConstance;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.core.tools.StringUtils;
import com.matrix.core.tools.WebUtil;
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.shopXcx.bean.ShopScoreExchange;
import com.matrix.system.hive.service.SysVipInfoService;
import com.matrix.system.shopXcx.dao.ShopScoreExchangeDao;
import com.matrix.system.shopXcx.pojo.ExchangeScorePOJO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import java.util.Date;
/**
@@ -32,7 +17,7 @@
public class ShopBizUserScoreAction {
    @Autowired
    private BizUserService bizUserService;
    private SysVipInfoService sysVipInfoService;
    @Autowired
    private ShopScoreExchangeDao shopScoreExchangeDao;
@@ -40,75 +25,6 @@
     * 记录编辑前的值Before_Edit_Value
     */
    public static final String BEV = "ShopBizUserScore_BEV";
    /**
     * 进入积分兑换界面
     */
    @SaveRequestToken
    @RequestMapping(value = "/intoExchangePage")
    public ModelAndView exchangeScore(String userId) {
        BizUser bizUser = new BizUser();
        ModelAndView modelAndView = new ModelAndView("admin/shop/user-score-exchange");
        if (StringUtils.isNotBlank(userId)) {
            bizUser = bizUserService.findById(userId);
            if (bizUser.getCurrentScore() == null) {
                bizUser.setCurrentScore(0);
            }
        }
        modelAndView.addObject("obj", bizUser);
        return modelAndView;
    }
    /**
     * 兑换积分
     */
    @Transactional(rollbackFor = Exception.class)
    @RemoveRequestToken
    @RequestMapping(value = "/exchangeScore")
    public @ResponseBody
    AjaxResult exchangeScore(ExchangeScorePOJO pojo) {
        //校验参数中用户ID和用户兑换积分是否有效
        if (pojo == null || StringUtils.isBlank(pojo.getUserId())
                || pojo.getScore() == null || pojo.getScore() == 0) {
            return new AjaxResult(AjaxResult.STATUS_FAIL, "提交参数有误!");
        }
        //兑换积分用户信息
        BizUser bizUser = bizUserService.findById(pojo.getUserId());
        if (bizUser == null) {
            return new AjaxResult(AjaxResult.STATUS_FAIL, "没有查询到相应用户!");
        }
        if (bizUser.getCurrentScore() == null) {
            bizUser.setCurrentScore(0);
        }
        //如果兑换积分大于用户当前积分
        if (pojo.getScore() > bizUser.getCurrentScore()) {
            return new AjaxResult(AjaxResult.STATUS_FAIL, "兑换积分大于用户当前积分!");
        }
        //剩余积分 = 当前积分 - 兑换积分
        Integer remainScore = bizUser.getCurrentScore() - pojo.getScore();
        //当前操作用户信息
        SysUsers loginUser = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
        //修改用户剩余积分
        BizUser updateModel = new BizUser();
        updateModel.setUserId(bizUser.getUserId());
        updateModel.setCurrentScore(remainScore);
        updateModel.setUpdateBy(loginUser.getSuName());
        updateModel.setUpdateTime(new Date());
        bizUserService.modifyByModel(updateModel);
        //添加积分兑换记录
        ShopScoreExchange insertExchange = new ShopScoreExchange();
        insertExchange.setCreateBy(loginUser.getSuName());
        insertExchange.setUpdateBy(loginUser.getSuName());
        insertExchange.setUserId(bizUser.getOpenId());
        insertExchange.setExchangeScore(pojo.getScore());
        insertExchange.setOperateId(loginUser.getSuId());
        insertExchange.setRemark(pojo.getRemarks());
        shopScoreExchangeDao.insert(insertExchange);
        return new AjaxResult(AjaxResult.STATUS_SUCCESS, "兑换成功!");
    }
}