zq-erp/src/main/java/com/matrix/system/hive/action/MoneyCardUseController.java
@@ -1,5 +1,6 @@
package com.matrix.system.hive.action;
import com.matrix.component.rabbitmq.RabiitMqTemplate;
import com.matrix.core.constance.MatrixConstance;
import com.matrix.core.exception.GlobleException;
import com.matrix.core.pojo.AjaxResult;
@@ -8,21 +9,22 @@
import com.matrix.core.tools.WebUtil;
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.constance.Dictionary;
import com.matrix.system.constance.SystemConstance;
import com.matrix.system.hive.bean.*;
import com.matrix.system.hive.dao.MoneyCardUseDao;
import com.matrix.system.hive.dao.MoneyCardUseFlowDao;
import com.matrix.core.tools.DateUtil;
import com.matrix.system.hive.pojo.CzXkVo;
import com.matrix.system.hive.service.*;
import com.matrix.system.shopXcx.mqTask.MQTaskRouting;
import com.matrix.system.wechart.templateMsg.UniformMsgParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
@@ -50,34 +52,31 @@
    @Resource
    private SysVipInfoService vipInfoService;
    @Autowired
    @Resource
    private MoneyCardUseFlowDao moneyCardUseFlowDao;
    @Autowired
    @Resource
    private   MoneyCardUseDao moneyCardUseDao;
    @Value("${evn}")
    private  String evn;
    @Autowired
    private RabiitMqTemplate rabiitMqTemplate;
    /**
     * 跳转 充值页面
     *
     * @author jyy
     */
    @RequestMapping(value = "/editFormCz")
    public String editFormCz() {
        SysVipInfo info =
                (SysVipInfo) WebUtil.getSession().getAttribute(SystemConstance.CURRENT_CUSTOMER);
        MoneyCardUse cardUseInfo = cardUseService.findByVipId(info.getId());
    public String editFormCz(Long id) {
        MoneyCardUse cardUseInfo = cardUseService.findByVipId(id);
        if (cardUseInfo == null) {
            cardUseInfo = new MoneyCardUse();
            cardUseInfo.setVipId(info.getId());
            cardUseInfo.setCardName("储值卡");
            cardUseInfo.setIsVipCar(Dictionary.FLAG_YES_Y);
            cardUseInfo.setRealMoney(0D);
            cardUseInfo.setGiftMoney(0D);
            cardUseInfo.setSource("-");
            cardUseInfo.setFailTime(DateUtil.stringToDate("2050-01-01 00:00",DateUtil.DATE_FORMAT_MM));
            cardUseInfo.setStatus(Dictionary.MONEYCARD_STATUS_YX);
            moneyCardUseDao.insert(cardUseInfo);
            cardUseInfo=vipInfoService.addVipDefaultCard(id);
        }
        WebUtil.getRequest().setAttribute("obj", cardUseInfo);
        return "admin/hive/beautySalon/cz-form";
    }
@@ -89,9 +88,15 @@
     */
    @RequestMapping(value = "/cz")
    public @ResponseBody
    AjaxResult cz(CzXkVo czVo) {
    AjaxResult cz(@RequestBody CzXkVo czVo) {
        SysOrder order=  orderService.updateAddCardMoney(czVo);
        AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, "充值成功");
        //发送微信公众号提醒
        UniformMsgParam uniformMsgParam=new UniformMsgParam(order.getCompanyId(),UniformMsgParam.GZH_CZCG);
        uniformMsgParam.put("orderId",order.getId());
        rabiitMqTemplate.sendMsg(MQTaskRouting.SEND_UNIFORM_TEMPLATE_MSG+evn,uniformMsgParam.toJSONString());
        result.putInMap("orderId",order.getId());
        return result;
    }
@@ -181,23 +186,14 @@
     * @author jyy
     */
    @RequestMapping(value = "/toBj")
    public String toBj(Long id, HttpServletRequest request) {
    public String toBj(Long id) {
        // 根据id查到对应的订单信息
        SysOrder order = orderService.findById(id);
        WebUtil.getRequest().setAttribute("order", order);
        SysOrderItem item = new SysOrderItem();
        item.setOrderId(order.getId());
        item.setStatus(Dictionary.ORDER_STATU_QK);
        order.setItems(orderItemService.findByModel(item));
        MoneyCardUse moneyCardUse = new MoneyCardUse();
        moneyCardUse.setVipId(order.getVipId());
        moneyCardUse.setStatus(Dictionary.MONEYCARD_STATUS_YX);
        List<MoneyCardUse> cards = cardUseService.findByModel(moneyCardUse);
        WebUtil.getRequest().setAttribute("cards", cards);
        List<SysOrderItem> items = orderItemService.findByModel(item);
        order.setItems(items);
        WebUtil.getRequest().setAttribute("order", order);
        return "admin/hive/beautySalon/bj-form";
    }
@@ -227,7 +223,7 @@
     */
    @RequestMapping(value = "/bj")
    public @ResponseBody
    AjaxResult bj(SysOrder order) throws GlobleException {
    AjaxResult bj(@RequestBody SysOrder order) throws GlobleException {
        orderService.updateAfterMoney(order);
        return new AjaxResult(AjaxResult.STATUS_SUCCESS, "补交成功");
@@ -283,9 +279,9 @@
    @RequestMapping(value = "/active")
    public @ResponseBody
    AjaxResult active(MoneyCardUse moneyCardUse) {
        MoneyCardUse proj = moneyCardUseDao.selectById(moneyCardUse.getId());
        String status = proj.getStatus();
        Date failTime = proj.getFailTime();
        MoneyCardUse cardUse = moneyCardUseDao.selectById(moneyCardUse.getId());
        String status = cardUse.getStatus();
        Date failTime = cardUse.getFailTime();
        Date today = new Date();
        Date newDate = null;
        newDate = moneyCardUse.getFailTime();
@@ -304,14 +300,27 @@
            //如果是冻结状态则要算出冻结的天数,延长有效期
            case Dictionary.TAOCAN_STATUS_DJ:
                MoneyCardUseFreeze freeze = new MoneyCardUseFreeze();
                freeze = moneyCardUseFreezeService.findByMoneyCardUseId(proj.getId());
                proj.setFailTime(DateUtil.nextNDate(failTime, freeze.getGapDays()));
                freeze = moneyCardUseFreezeService.findByMoneyCardUseId(cardUse.getId());
                cardUse.setFailTime(DateUtil.nextNDate(failTime, freeze.getGapDays()));
                break;
            default:
                return new AjaxResult(AjaxResult.STATUS_FAIL, "请选择无效或者冻结的充值卡");
        }
        proj.setFailTime(moneyCardUse.getFailTime());
        cardUseService.active(proj);
        cardUse.setFailTime(moneyCardUse.getFailTime());
        cardUseService.active(cardUse);
        MoneyCardUseFlow moneyCardUseFlow = new MoneyCardUseFlow();
        SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
        moneyCardUseFlow.setCarUseId(cardUse.getId());
        moneyCardUseFlow.setVipId(cardUse.getVipId());
        moneyCardUseFlow.setType(MoneyCardUseFlow.USE_TYPE_CARD_MODIFY);
        moneyCardUseFlow.setCreateTime(new Date());
        moneyCardUseFlow.setOperationId(user.getSuId());
        moneyCardUseFlow.setContent("设置为有效");
        moneyCardUseFlowDao.insert(moneyCardUseFlow);
        return new AjaxResult(AjaxResult.STATUS_SUCCESS, "已设置为有效");
    }
@@ -324,9 +333,9 @@
    @RequestMapping(value = "/invalid")
    public @ResponseBody
    AjaxResult invalidTc(MoneyCardUse moneyCardUse) {
        MoneyCardUse proj = cardUseService.findById(moneyCardUse.getId());
        MoneyCardUse cardUse = cardUseService.findById(moneyCardUse.getId());
        //以及转让或者退款的不能在设置为无效
        String status = proj.getStatus();
        String status = cardUse.getStatus();
        switch (status) {
            case Dictionary.TAOCAN_STATUS_TK:
                return new AjaxResult(AjaxResult.STATUS_FAIL, "充值卡已退款");
@@ -335,7 +344,16 @@
            case Dictionary.TAOCAN_STATUS_DJ:
                return new AjaxResult(AjaxResult.STATUS_FAIL, "充值卡已冻结");
        }
        cardUseService.invalid(proj);
        cardUseService.invalid(cardUse);
        MoneyCardUseFlow moneyCardUseFlow = new MoneyCardUseFlow();
        SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
        moneyCardUseFlow.setCarUseId(cardUse.getId());
        moneyCardUseFlow.setVipId(cardUse.getVipId());
        moneyCardUseFlow.setType(MoneyCardUseFlow.USE_TYPE_CARD_MODIFY);
        moneyCardUseFlow.setCreateTime(new Date());
        moneyCardUseFlow.setOperationId(user.getSuId());
        moneyCardUseFlow.setContent("设置为无效");
        moneyCardUseFlowDao.insert(moneyCardUseFlow);
        return new AjaxResult(AjaxResult.STATUS_SUCCESS, "已设置为无效");
    }
@@ -366,63 +384,25 @@
    public @ResponseBody
    AjaxResult freeze(MoneyCardUse moneyCardUse) {
        int i = cardUseService.freeze(moneyCardUse);
        cardUseService.invalid(moneyCardUse);
        MoneyCardUse cardUse = cardUseService.findById(moneyCardUse.getId());
        MoneyCardUseFlow moneyCardUseFlow = new MoneyCardUseFlow();
        SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
        moneyCardUseFlow.setCarUseId(cardUse.getId());
        moneyCardUseFlow.setVipId(cardUse.getVipId());
        moneyCardUseFlow.setType(MoneyCardUseFlow.USE_TYPE_CARD_MODIFY);
        moneyCardUseFlow.setCreateTime(new Date());
        moneyCardUseFlow.setOperationId(user.getSuId());
        moneyCardUseFlow.setContent("冻结会员卡");
        moneyCardUseFlowDao.insert(moneyCardUseFlow);
        if (i > 0) {
            return new AjaxResult(AjaxResult.STATUS_SUCCESS, "冻结成功");
        }
        return new AjaxResult(AjaxResult.STATUS_FAIL, "冻结失败");
    }
    /**
     * 退款
     *
     * @return
     */
    @RequestMapping(value = "getEffectCard")
    public @ResponseBody
    AjaxResult getEffectCard(MoneyCardUse moneyCardUse) {
        AjaxResult result = AjaxResult.buildSuccessInstance("");
        //要退款的充值卡
        MoneyCardUse srcCardUse = cardUseService.findById(moneyCardUse.getId());
        if (!srcCardUse.getStatus().equals(Dictionary.TAOCAN_STATUS_YX)) {
            throw new GlobleException("不是有效充值卡");
        }
        //该会员是否有有效会籍卡
        MoneyCardUse targetCardUse = cardUseService.findByVipId(moneyCardUse.getVipId());
        double money = srcCardUse.getRealMoney();
        if (targetCardUse != null) {
            targetCardUse.setRealMoney(money);
            List<MoneyCardUse> list = Arrays.asList(targetCardUse);
            if (targetCardUse.getId().equals(srcCardUse.getId())) {
                result.setInfo("会籍卡退款只能退现金");
                result.setRows(list);
            } else {
                result.setInfo("有有效会籍卡");
                result.setRows(list);
            }
        } else {
            //无会员卡则new一个,为了把钱传递到前台
            targetCardUse = new MoneyCardUse();
            targetCardUse.setRealMoney(money);
            List<MoneyCardUse> list1 = Arrays.asList(targetCardUse);
            result.setInfo("无有效会籍卡,退现金");
            result.setRows(list1);
        }
        return result;
    }
    @RequestMapping(value = "/returnMoney")
    public @ResponseBody
    AjaxResult returnMoney(MoneyCardUse moneyCardUse, Long hjkId, String tcRemark, Long
            shopId, Double money
            , String tcName) {
        int i = cardUseService.returnMoney(moneyCardUse, hjkId);
        if (i > 0) {
            return new AjaxResult(AjaxResult.STATUS_SUCCESS, "退款成功");
        }
        return new AjaxResult(AjaxResult.STATUS_FAIL, "冻结失败");
    }
}