package com.gustz.dove.web.menu; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import com.gustz.dove.web.base.ExtBaseController; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import com.sinovatech.fw.api.vo.Order; import com.sinovatech.fw.util.New; import com.sinovatech.rd.wcsb.api.dict.service.DictService; import com.sinovatech.rd.wcsb.api.dict.vo.ErrorVo; import com.sinovatech.rd.wcsb.api.menu.AppMenuConstants; import com.sinovatech.rd.wcsb.api.menu.service.AppMenuService; import com.sinovatech.rd.wcsb.api.menu.service.AppMenuService.IDeployMenu; import com.sinovatech.rd.wcsb.api.menu.vo.AppMenuVo; import com.sinovatech.rd.wcsb.cli.api.menu.req.MenuReq; import com.sinovatech.rd.wcsb.cli.api.menu.vo.Menu; import com.sinovatech.rd.wcsb.cli.api.service.util.JsonMapper; import com.sinovatech.rd.wcsb.cli.api.service.vo.CommRsp; import com.sinovatech.rd.wcsb.cpcli.api.menu.service.MenuCpService; import com.sinovatech.rd.wcsb.mpcli.api.menu.service.MenuMpService; import com.sinovatech.rd.wcsb.repo.account.AccConstants; /** * * TODO: 应用菜单C * * @author ZHENFENG ZHANG * @since [Jan 27, 2015] */ @Controller @RequestMapping("/menu/appMenu/*") public class AppMenuController extends ExtBaseController<AppMenuVo, AppMenuVo> { private final Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private MenuCpService menuCpService; @Autowired private MenuMpService menuMpService; @Autowired private DictService dictService; private AppMenuService service; @Autowired public void needService(AppMenuService service) { super.setDataService(service); this.service = service; } @Override public int doCount(AppMenuVo searchForm) throws Exception { return this.service.ecCount(searchForm); } @Override public List<?> doList(AppMenuVo searchForm, int start, int limit, List<Order> orders) throws Exception { return this.service.ecList(searchForm, start, limit, orders); } /** * 应用菜单的列表页 * * @param model * @return * @throws Exception */ @RequestMapping("listAppMenu") public String list(HttpServletRequest request) throws Exception { Map<String, Object> _map = new HashMap<String, Object>(); // 状态 _map.put("APP_MENU_STATUS", dictService.mapGroup(AppMenuConstants.StatusGc.APP_MENU_STATUS)); // return this.forward(request, _map); } /** * 是否存在菜单编码 * * @param request * @param id * @param wecAppId * @return * @throws Exception */ @RequestMapping("isExistMenuCode") public @ResponseBody Map<?, ?> isExistMenuCode(HttpServletRequest request, @RequestParam("id") String id, @RequestParam("appMenuCode") String appMenuCode) throws Exception { if (StringUtils.isNotBlank(appMenuCode)) { appMenuCode = this.base64ToStr(request, appMenuCode); } return New.chainMap().add(TAG_SUCCESS, true).add(TAG_DATA, this.service.isExistMenuCode(id, appMenuCode)); } /** * 发布应用菜单 * * @param id * @return * @throws Exception */ @RequestMapping("deployAppMenu") public @ResponseBody Map<?, ?> deployAppMenu(@RequestParam("id") String id) throws Exception { final ErrorVo vo = this.service.deployMenu(id, new IDeployMenu() { @Override public ErrorVo doDeployMenu(final AppMenuVo appMenuVo) throws Exception { ErrorVo errorVo = new ErrorVo(); try { // 菜单主体 final Menu body = JsonMapper.getObjectMapper().readValue(appMenuVo.getContent(), Menu.class); final MenuReq req = new MenuReq(appMenuVo.getAccountCode(), body); // CommRsp rsp = null; final long sn = System.currentTimeMillis(); final String cliAppCode = appMenuVo.getCliAppCode(); if (AccConstants.TypeGc.T2.name().equals(appMenuVo.getAccountType())) { // 企业号 rsp = menuCpService.createMenu(sn, cliAppCode, req); } else { // 订阅号/服务号 rsp = menuMpService.createMenu(sn, cliAppCode, req); } // errorVo.setErrCode(rsp.getBody().getErrCode()); errorVo.setErrMsg(rsp.getBody().getErrMsg()); } catch (Exception e) { logger.warn("", e); throw e; } return errorVo; } }); // return New.chainMap().add(TAG_SUCCESS, vo.isSuccess()).add(TAG_DATA, vo.getErrMsg()); } }