EcEntrustAction.java 8.42 KB
package com.cjs.site.action.ec;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang3.StringUtils;
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 com.cjs.site.biz.ec.EcEntrustBiz;
import com.cjs.site.biz.pub.CommonBiz;
import com.cjs.site.biz.user.fund.FundBiz;
import com.cjs.site.dao.entrust.EntrustDataDao;
import com.cjs.site.dao.user.interact.UserAttentionDao;
import com.cjs.site.model.user.UserAttentionInfo;
import com.cjs.site.model.user.account.UserInfo;
import com.cjs.site.util.lang.JsonUtil;
import com.cjs.site.util.lang.StringUtil;
import com.cjs.site.util.web.ActionUtil;
import com.cjs.site.util.web.PageUtils;

/**
 * 藏品详情页
 * 
 * @author tongyufu
 *
 */
@Controller
public class EcEntrustAction {

    Logger                   log = LogManager.getLogger();

    @Autowired
    private EcEntrustBiz     ecEntrustBiz;
    @Autowired
    private FundBiz          fundBiz;
    @Autowired
    private EntrustDataDao   entrustDao;
    @Autowired
    private CommonBiz        commonBiz;
    @Autowired
    private UserAttentionDao userAttentionDao;

    /**藏品详细页*/
    @RequestMapping("/ec/entrust/detail/{otcCode:\\d{6}}")
    public String entrustDetail(@PathVariable("otcCode") String otcCode, Model model) {
        UserInfo user = ActionUtil.getUser();
        boolean attentioned = false;
        if (user != null) {
            List<UserAttentionInfo> attentions = userAttentionDao.queryByUserId(user.getUserId());
            for (UserAttentionInfo attention : attentions) {
                if (StringUtils.equals(otcCode, attention.getOtcCode())) {
                    attentioned = true;
                }
            }
            model.addAttribute("attentions", attentions);
        }
        model.addAttribute("attentioned", attentioned);
        model.addAttribute("entrustInfo", entrustDao.searchInfo(otcCode));
        return "entrust/entrustDetail.jsp";
    }

    /**
     * 藏品详情页_查询持仓
     * @param otcCode
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/ec/entrust/position", method = RequestMethod.GET)
    public String queryUserPosition(String otcCode) {
        return JsonUtil.toJson(ecEntrustBiz.queryUserPosition(otcCode));
    }

    /**
     * 藏品详情页_当日委托查询
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/ec/entrust", method = RequestMethod.GET)
    public String queryUserEntrust() {
        return ecEntrustBiz.queryUserEntrust();
    }

    /**
     * 可撤订单查询
     * @param otcCode
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/user/ec/reversibility", method = RequestMethod.GET)
    public String queryReversibility() {
        return ecEntrustBiz.queryReversibility();
    }

    /**
     * 藏品详情页_用户当日成交查询
     * @param otcCode
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/ec/entrust/transaction", method = RequestMethod.GET)
    public String queryUserTransaction() {
        return JsonUtil.toJson(ecEntrustBiz.queryUserTransaction());
    }

    /**
     * 买卖记录_当日成交_汇总
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/ec/entrust/transaction/total", method = RequestMethod.GET)
    public String queryUserTransactionTotal() {
        return JsonUtil.toJson(ecEntrustBiz.queryUserTransactionTotal());
    }

    /**
     * 委托交易_买入弹窗
     * @param otcCode
     * @param sellPrice
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/user/ec/buy/view", method = RequestMethod.GET)
    public String queryBuyView(String otcCode, String sellPrice) {
        UserInfo userInfo = ActionUtil.getUser();
        Map<String, Object> outmap = new HashMap<String, Object>();
        outmap.put("useful", fundBiz.checkEntrustUseful());
        outmap.put("enableBalance", fundBiz.balance(userInfo.getUserId()).get("enable_balance"));
        if (StringUtil.isBlank(sellPrice)) {
            sellPrice = ecEntrustBiz.queryClosePrice(otcCode);
        }
        try {
            outmap.put("enableAmount", (int) Double.parseDouble(ecEntrustBiz
                .queryMaxBuyAmount(otcCode, sellPrice).get("enable_amount").toString()));
        } catch (Exception e) {
            outmap.put("enableAmount", "");
        }
        outmap.put("sellPrice", sellPrice);
        return JsonUtil.toJson(outmap);
    }

    /**
     * 委托交易_卖出弹窗
     * @param otcCode
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/user/ec/sell/view", method = RequestMethod.GET)
    public String querySellView(String otcCode, String buyPrice) {
        Map<String, Object> outmap = new HashMap<String, Object>();
        outmap.put("useful", fundBiz.checkEntrustUseful());
        if (StringUtil.isBlank(buyPrice)) {
            buyPrice = ecEntrustBiz.queryClosePrice(otcCode);
        }
        outmap.put("buyPrice", buyPrice);
        List<Map<String, Object>> list = ecEntrustBiz.queryUserPosition(otcCode);
        if (list.size() > 0) {
            outmap.put("enableAmount",
                (int) Double.parseDouble(list.get(0).get("enable_amount").toString()));
        }
        return JsonUtil.toJson(outmap);
    }

    /**
     * 委托交易
     * @param params
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/user/entrust", method = RequestMethod.POST)
    public String entrust(@RequestParam Map<String, Object> params) {
        UserInfo userInfo = ActionUtil.getUser();
        Map<String, Object> outmap = new HashMap<String, Object>();

        outmap.put("resultCode", "0");
        if (commonBiz.checkMarketStatus() != 2) {
            outmap.put("resultMsg", "当前非交易时间");
            return JsonUtil.toJson(outmap);
        }

        if ("0B0".equals(params.get("prop"))) {
            outmap = ecEntrustBiz.buy(userInfo.getClient_id(), userInfo.getPassword(),
                userInfo.getOtc_account(), params.get("otcCode").toString(),
                Integer.parseInt(params.get("amount").toString()),
                Double.parseDouble(params.get("price").toString()));
        } else if ("0S0".equals(params.get("prop"))) {
            outmap = ecEntrustBiz.sell(userInfo.getClient_id(), userInfo.getPassword(),
                userInfo.getOtc_account(), params.get("otcCode").toString(),
                Integer.parseInt(params.get("amount").toString()),
                Double.parseDouble(params.get("price").toString()));
        } else {
            outmap.put("resultMsg", "无效的交易类别");
        }
        return JsonUtil.toJson(outmap);
    }

    /**
     * 撤单委托
     * @param entrustNo
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/user/withdraw", method = RequestMethod.POST)
    public String withdraw(String entrustNo) {
        return JsonUtil.toJson("resultCode", ecEntrustBiz.withdraw(entrustNo));
    }

    /**
     * 查询藏品信息
     * @param otcCode
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/ec/entrust/instruction/{otcCode}", method = RequestMethod.GET)
    public String queryContent(@PathVariable("otcCode") String otcCode) {
        return JsonUtil.toJson(entrustDao.searchInfo(otcCode));
    }

    /**
     * 查询指定藏品当日所有成交记录
     * @param otcCode
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/ec/entrust/transaction/{otcCode}", method = RequestMethod.GET)
    public String queryAllTransactionToday(@PathVariable("otcCode") String otcCode) {
        return ecEntrustBiz.queryAllTransactionToday(otcCode);
    }

    /**
     * 查询用户历史委托订单
     * @param params
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/user/ec/transaction/his", method = RequestMethod.GET)
    public String queryUserHisTransaction(@RequestParam Map<String, Object> params) {
        PageUtils.processOralcePage(params);
        return JsonUtil.toJson(ecEntrustBiz.queryUserHisTransaction(params));
    }

}