EntrustAction.java 5.48 KB
package com.cjs.site.action.user.entrust;

import java.security.SecureRandom;
import java.util.Map;

import javax.servlet.http.HttpSession;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import com.cjs.site.biz.ServiceException;
import com.cjs.site.biz.pub.ZhaoonlineBiz;
import com.cjs.site.biz.user.account.UserBiz;
import com.cjs.site.biz.user.entrust.EntrustBiz;
import com.cjs.site.dao.user.account.UserAddressDao;
import com.cjs.site.dao.user.pick.WarehouseDao;
import com.cjs.site.dao.user.ration.OtcTrusteeCodeDao;
import com.cjs.site.model.user.account.UserInfo;
import com.cjs.site.model.user.ration.OtcTrusteeCodeInfo;
import com.cjs.site.util.lang.JsonUtil;
import com.cjs.site.util.web.ActionUtil;
import com.cjs.site.util.web.Token;

/**
 * 托管
 * 
 * @author tongyufu
 *
 */
@Controller
public class EntrustAction {

    Logger                    log = LogManager.getLogger();
    @Autowired
    private UserBiz           userBiz;
    @Autowired
    private EntrustBiz        entrustBiz;
    @Autowired
    private UserAddressDao    addressDao;
    @Autowired
    private ZhaoonlineBiz     zhaoonlineBiz;
    @Autowired
    private WarehouseDao      warehouseDao;
    @Autowired
    private OtcTrusteeCodeDao otcTrusteeCodeDao;

    /**
     * 托管申请列表
     */
    @RequestMapping("/entrust/list")
    public String entrustListView(Model model) {
        model.addAttribute("entrusts", entrustBiz.entrustList());
        model.addAttribute("supplements", entrustBiz.supplementList());
        return "entrust/entrustList.jsp";
    }

    /**
     * 再托管申请列表
     */
    @RequestMapping("/entrust/quota")
    public String entrustQuotaView(Model model) {
        model.addAttribute("entrusts", entrustBiz.entrustList());
        return "entrust/entrustQuota.jsp";
    }

    /**
     * 托管申请详情页
     * 
     * @param stockId 藏品代码
     */
    @Token(save = true, group = "entrust")
    @RequestMapping(value = "/user/entrust", method = RequestMethod.GET)
    public String entrustView(String stockId, HttpSession session, Model model) {
        try {
            UserInfo userInfo = ActionUtil.getUser();
            String userId = userInfo.getClient_id();
            String password = userInfo.getPassword();
            session.setAttribute(UserInfo.USER, userInfo);
            //用户基本信息
            model.addAttribute("user", userBiz.queryUserDetail(userId, password));
            //藏品信息
            model.addAttribute("entrust", entrustBiz.queryById(stockId));
            model.addAttribute("random", new SecureRandom().nextInt());
            //用户地址信息
            model.addAttribute("userAddress", addressDao.queryByUserId(userInfo.getUserId()));
            //仓库列表
            model.addAttribute("warehouses", warehouseDao.queryByOtcCode(stockId));
        } catch (Exception e) {
            model.addAttribute("msg", e.getMessage());
            log.error("", e);
        }
        return "entrust/entrust.jsp";
    }

    /**托管申请*/
    @Token(remove = true, group = "entrust")
    @ResponseBody
    @RequestMapping(value = "/entrust", method = RequestMethod.POST)
    public String entrust(@RequestParam Map<String, Object> params, Model model,
                          RedirectAttributes redirectAttributes) {
        String result = JsonUtil.toFormJson("", true);
        try {
            UserInfo userInfo = ActionUtil.getUser();
            if (userInfo == null) {
                return JsonUtil.toFormJson("用户信息不存在,请重新登录", false);
            }
            log.info("托管申请params:" + params);
            boolean isOpenTime = entrustBiz.entrust(params, userInfo);
            if (!isOpenTime) {
                String msg = "托管申请已提交,请保持账户资金充足,系统会在交易时间审核,请在交易时间进入用户中心查询相关托管进程,详询400-969-0800。";
                result = JsonUtil.toFormJson(msg, false);
            }
        } catch (Exception e) {
            if (e instanceof ServiceException) {
                log.error(e.getMessage());
            } else {
                log.error("", e);
            }
            result = JsonUtil.toFormJson(e.getMessage(), false);
        }
        return result;
    }

    /**委托详细信息*/
    @ResponseBody
    @RequestMapping("/entrust/detail/{otcCode}")
    public OtcTrusteeCodeInfo detail(@PathVariable("otcCode") String otcCode) {
        return otcTrusteeCodeDao.queryByOtcCode(otcCode);
    }

    /**托管申请成功*/
    @RequestMapping("/entrust/success")
    public String entrustSuccess() {
        return "entrust/success.jsp";
    }

    /**
     * 检查赵涌在线账号是否存在
     * 
     * @param userId 赵涌在线用户ID
     * @return
     */
    @ResponseBody
    @RequestMapping("/entrust/zhaoonline/id")
    public Map<String, Object> checkZhaoonlineId(String userId) {
        return zhaoonlineBiz.checkZhaoonlineId(userId);
    }
}