package cn.webank.cfpd.cpmm.adm.controller;
import cn.webank.cfpd.cpmm.adm.base.BusinessException;
import cn.webank.cfpd.cpmm.adm.service.activity.ActivityPageManageService;
import cn.webank.cfpd.cpmm.adm.service.activity.ActivityPageQueryService;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;
import cn.webank.cfpd.commons.seq.IdGenerator;
import cn.webank.cfpd.cpmm.adm.base.Constant;
import cn.webank.cfpd.cpmm.adm.base.ConstantCode;
import cn.webank.cfpd.cpmm.adm.controller.base.BaseController;
import cn.webank.cfpd.cpmm.adm.dao.activity.ActivityBaseInfoDao;
import cn.webank.cfpd.cpmm.adm.dao.outbound.ActivityPageConfDao;
import cn.webank.cfpd.cpmm.adm.dao.outbound.ActivityPageModuleConfDao;
import cn.webank.cfpd.cpmm.adm.dao.outbound.PageBannerConfDao;
import cn.webank.cfpd.cpmm.adm.dto.ActivityBaseInfoDTO;
import cn.webank.cfpd.cpmm.adm.dto.ActivityPageDTO;
import cn.webank.cfpd.cpmm.adm.dto.ActivityPageModuleConfDTO;
import cn.webank.cfpd.cpmm.adm.dto.PageBannerConfDTO;
import cn.webank.cfpd.cpmm.adm.dto.PageBannerMappingDTO;
import cn.webank.cfpd.cpmm.adm.dto.base.BasePageRsp;
import cn.webank.cfpd.cpmm.adm.dto.base.BaseResponse;
import cn.webank.cfpd.cpmm.adm.entity.ActivityPageConfEntity;
import cn.webank.cfpd.cpmm.adm.entity.ActivityPageModuleConfEntity;
import cn.webank.cfpd.cpmm.adm.entity.PageBannerConfEntity;
import cn.webank.cfpd.cpmm.adm.infra.anno.DumbLogger;
import cn.webank.cfpd.cpmm.adm.rmb.specified.DictInfo;
import cn.webank.cfpd.cpmm.adm.rmb.specified.Req_querySpecifiedPage_01;
import cn.webank.cfpd.cpmm.adm.rmb.specified.Rsp_querySpecifiedPage_01;
import cn.webank.cfpd.cpmm.adm.service.caller.QuerySpecifiedPage;
import cn.webank.framework.dto.BizErrors;
import cn.webank.weup.base.log.OpLogUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
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.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSONObject;
import javax.servlet.http.HttpSession;
@Slf4j
@RestController
@RequestMapping("/actPage")
public class ActivityPageController extends BaseController {
@Autowired
private PageBannerConfDao pageBannerConfDao ;
@Autowired
private ActivityPageModuleConfDao activityPageModuleConfDao;
@Autowired
private ActivityPageConfDao activityPageConfDao;
@Autowired
private IdGenerator idGenerator;
@Autowired
private ActivityBaseInfoDao activityBaseInfoDao;
@Autowired
private QuerySpecifiedPage querySpecifiedPage;
@Autowired
private ActivityPageQueryService activityPageQueryService;
@Autowired
private ActivityPageManageService activityPageManageService;
//获取banner列表
@RequestMapping(value = "/getBannerPageList.json", method = RequestMethod.POST)
public BaseResponse getBannerPageList(HttpSession session,@RequestBody PageBannerConfDTO req) {
BaseResponse br = new BaseResponse(0);
BasePageRsp<PageBannerConfDTO> bp = new BasePageRsp<>();
try {
List<PageBannerConfDTO> list = pageBannerConfDao.getBannerList(req);
this.activityPageQueryService.fillBannerPageBelong(list);
for (PageBannerConfDTO pageBannerConfDTO : list) {
if ("ALL".equals(pageBannerConfDTO.getTarget_flag())) {
pageBannerConfDTO.setTarget_flag_bak("全部");
} else if("CUSTOMER_GROUP".equals(pageBannerConfDTO.getTarget_flag())){
pageBannerConfDTO.setTarget_flag_bak("指定分组");
}else {
pageBannerConfDTO.setTarget_flag_bak("");
}
if ("1".equals(pageBannerConfDTO.getBanner_status_flag())) {
pageBannerConfDTO.setBanner_status_flag_bak("上线");
}else {
pageBannerConfDTO.setBanner_status_flag_bak("下线");
}
}
log.info("入参{}",list.toString());
int total = pageBannerConfDao.getBannerListCount(req);
bp.setTotal(total);
bp.setList(list);
bp.setPageNumber(req.getPageNumber());
bp.setPageSize(req.getPageSize());
bp.setStart(req.getStart());
br.setData(bp);
} catch (Exception e) {
log.error("getActivityConfList error msg:{}", e);
br.setFromRetCode(ConstantCode.SYS_ERROR);
}
return br;
}
//保存banner配置
@RequestMapping(value = "/saveBannerPage.json", method = RequestMethod.POST)
public BaseResponse saveBannerPage(@Validated @RequestBody PageBannerConfEntity req,HttpSession session) {
BaseResponse br = new BaseResponse(0);
try {
//req.setEndTime(DateUtils.convertEndFullDate(req.getEndTime()));
if (StringUtils.isNotEmpty(req.getId())) {
req.setTargetId(StringUtils.join(req.getTargetIds(),","));
log.info("进入修改{}",req);
pageBannerConfDao.updateByPrimaryKeySelective(req);
}else {
PageBannerConfEntity pa = pageBannerConfDao.getBannerName(req);
if (pa != null) {
br.setMsg("banner名称不能重复");
br.setStatus(1000);
return br;
}
String modified_peo = (String) session.getAttribute(Constant.USER_SESSION_KEY); // 获取用户信息
req.setTargetId(StringUtils.join(req.getTargetIds(),","));
log.info("getTargetIds{}",StringUtils.join(req.getTargetIds(),","));
if (req.getSpecificFlag() == 1) {
req.setSpecificTargetId(StringUtils.join(req.getSpecificTargetIds(),","));
}
req.setCreator(modified_peo);
req.setId(idGenerator.getBizSeq());
log.info("入参{}",req);
pageBannerConfDao.insertSelective(req);
}
} catch (Exception e) {
log.error("saveBannerPage error msg:{}", e);
br.setFromRetCode(ConstantCode.SYS_ERROR);
}
return br;
}
//删除banner配置
@RequestMapping(value = "/delBannerPage.json", method = RequestMethod.POST)
@DumbLogger
public BaseResponse delBannerPage(@Validated @RequestBody PageBannerConfEntity req){
BaseResponse br = new BaseResponse();
try {
PageBannerMappingDTO getBannerId = activityPageModuleConfDao.getBannerId(req);
log.info("getBannerId{}",getBannerId);
if (getBannerId != null) {
br.setMsg("该BN被模块关联了,不可删除!");
br.setStatus(1000);
return br;
}
pageBannerConfDao.deleteByPrimaryKey(req.getId());
} catch (Exception e) {
// TODO: handle exception
br.setFromRetCode(ConstantCode.SYS_ERROR);
log.error("delBannerPage error msg:{}", e);
}
return br;
}
//保存活动模块配置
@RequestMapping(value = "/saveModelSet.json", method = RequestMethod.POST)
public BaseResponse saveModelSet (@Validated @RequestBody ActivityPageModuleConfEntity req, HttpSession session){
BaseResponse br = new BaseResponse();
PageBannerMappingDTO pbm = new PageBannerMappingDTO();
String modified_peo = (String) session.getAttribute(Constant.USER_SESSION_KEY);
try {
if (StringUtils.isNotEmpty(req.getId())) {
log.info("进入修改{}",req);
activityPageModuleConfDao.deleteByPrimaryKeyPageBannerMapping(req);
activityPageModuleConfDao.updateByPrimaryKeySelective(req);
for(int i = 0; i < req.getBannerId().length;i++){
if (StringUtils.isNotEmpty(req.getBannerId()[i])) {
pbm.setBanner_id(req.getBannerId()[i]);
pbm.setModule_id(req.getId());
pbm.setCreator(modified_peo);
activityPageModuleConfDao.insertPageBannerMapping(pbm);
}
}
}else {
req.setCreator(modified_peo);
req.setId(idGenerator.getBizSeq());
req.setModuleTemplateId("MODULE_BANNER");
log.info("活动模块配置入参{}",req);
activityPageModuleConfDao.insertSelective(req);
for(int i = 0; i < req.getBannerId().length;i++){
if (StringUtils.isNotEmpty(req.getBannerId()[i])) {
pbm.setBanner_id(req.getBannerId()[i]);
pbm.setModule_id(req.getId());
pbm.setCreator(modified_peo);
activityPageModuleConfDao.insertPageBannerMapping(pbm);
}
}
}
} catch (Exception e) {
// TODO: handle exception
log.error("saveModelSet error msg:{}",e);
br.setFromRetCode(ConstantCode.SYS_ERROR);
}
return br;
}
//获取活动模块配置列表
@RequestMapping(value = "/getModelSetList.json", method = RequestMethod.POST)
public BaseResponse getModelSetList(HttpSession session,@RequestBody ActivityPageModuleConfDTO req) {
BaseResponse br = new BaseResponse(0);
BasePageRsp<ActivityPageModuleConfDTO> bp = new BasePageRsp<>();
PageBannerMappingDTO pbm = new PageBannerMappingDTO();
List<PageBannerMappingDTO> bannerId = null;
pbm.setModule_id(req.getId());
try {
List<ActivityPageModuleConfDTO> list = activityPageModuleConfDao.getModuleList(req);
/* for (ActivityPageModuleConfDTO activityPageModuleConfDTO : list) {
}*/
bannerId = activityPageModuleConfDao.selectBannerIdMapping(pbm);
log.info("活动模块配置列表入参{}",bannerId.toString());
int total = activityPageModuleConfDao.getModuleListCount(req);
bp.setTotal(total);
bp.setList(list);
bp.setPageNumber(req.getPageNumber());
bp.setPageSize(req.getPageSize());
bp.setStart(req.getStart());
br.setData(bp);
} catch (Exception e) {
log.error("getActivityConfList error msg:{}", e);
br.setFromRetCode(ConstantCode.SYS_ERROR);
}
return br;
}
/**
* 查询Banner
* @return
*/
@RequestMapping(value = "/getBannerSetList.json", method = RequestMethod.POST)
public List<Map<String, String>> getBannerSetList() {
try {
List<Map<String, String>> banner = pageBannerConfDao.selectBanner();
String jsonString = JSONObject.toJSONString(banner);
log.info("查询Banner{}",jsonString);
return banner;
} catch (Exception e) {
OpLogUtil.logOpStepException(Thread.currentThread().getStackTrace()[1].getMethodName(),"查询Banner异常", e);
return null;
}
}
//删除模块配置
@RequestMapping(value = "/delModelSet.json", method = RequestMethod.POST)
@DumbLogger
public BaseResponse delModelSet(@Validated @RequestBody ActivityPageModuleConfEntity req){
BaseResponse br = new BaseResponse();
try {
ActivityPageModuleConfDTO getPageId = activityPageModuleConfDao.getActivityPageId(req);
if (getPageId != null) {
br.setMsg("该模块被页面关联了,不可删除!");
br.setStatus(1000);
return br;
}
activityPageModuleConfDao.deleteByPrimaryKey(req.getId());
} catch (Exception e) {
// TODO: handle exception
br.setFromRetCode(ConstantCode.SYS_ERROR);
log.error("delBannerPage error msg:{}", e);
}
return br;
}
//保存活动页面配置
@RequestMapping(value = "/saveActivityPage.json", method = RequestMethod.POST)
public BaseResponse saveActivityPage(@Validated @RequestBody ActivityPageConfEntity req,HttpSession session) {
BaseResponse br = new BaseResponse(0);
ActivityPageConfEntity newReq = new ActivityPageConfEntity();
ActivityPageConfEntity pageModule = new ActivityPageConfEntity();
ActivityPageModuleConfEntity activityPageModuleConfEntity = new ActivityPageModuleConfEntity();
Date date = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.YEAR, 100);
ActivityBaseInfoDTO activityBaseInfo = new ActivityBaseInfoDTO();
try {
if (StringUtils.isNotEmpty(req.getId())) {
log.info("进入修改{}",req);
activityPageConfDao.cleanActivityPageId(req);
newReq.setId(req.getId());
if ("企业爱普页面".equals(req.getPageChannel())) {
newReq.setPageChannel("AIPU");
}
//newReq.setActivityId(activityBaseInfo.getActivity_id());
newReq.setPageId(req.getPageId());
newReq.setPageTemplateId(req.getPageTemplateId());
newReq.setPageTitle(req.getPageTitle());
newReq.setHeadBannerUrls(req.getHeadBannerUrls());
newReq.setPageBgColor(req.getPageBgColor());
activityPageConfDao.updateByPrimaryKeySelective(newReq);
for(int i = 0; i < req.getActivityPageId().length;i++){
if (StringUtils.isNotEmpty(req.getActivityPageId()[i])) {
pageModule.setActivityPageIdBak(newReq.getId());
pageModule.setId(req.getActivityPageId()[i]);
activityPageModuleConfDao.updatePageModule(pageModule);
}
}
activityBaseInfo.setActivity_id(req.getActivityId());
activityBaseInfo.setActivity_name(req.getPageTitleBak());
activityBaseInfoDao.update(activityBaseInfo);
}else {
ActivityPageConfEntity getPageId = null;
for (int i = 0; i < req.getActivityPageId().length; i++) {
activityPageModuleConfEntity.setId(StringUtils.join(req.getActivityPageId()[i]));
getPageId = activityPageModuleConfDao.getPageId(activityPageModuleConfEntity);
if (getPageId != null) {
br.setMsg("选中的模块中有一个或者多个被其他活动页面关联!");
br.setStatus(1000);
return br;
}
}
activityBaseInfo.setActivity_name(req.getPageTitleBak());
activityBaseInfo.setActivity_id(idGenerator.getBizSeq());
activityBaseInfo.setApproval_status(Constant.APPROVAL_STATUS_HAD_CHECK);
activityBaseInfo.setActivity_status(Constant.ACTIVITY_STATUS_NOTSEND);
activityBaseInfo.setBegin_time(date);
activityBaseInfo.setEnd_time(cal.getTime());
activityBaseInfo.setActivity_type(Constant.ACTIVITY_TYPE_APP_CPMM);
activityBaseInfo.setProduct_cd(req.getProduct_cd());
log.info("活动副标题{}",req.getPageTitleBak());
activityBaseInfoDao.insert(activityBaseInfo);
String modified_peo = (String) session.getAttribute(Constant.USER_SESSION_KEY); // 获取用户信息
newReq.setCreator(modified_peo);
newReq.setId(idGenerator.getBizSeq());
if ("企业爱普页面".equals(req.getPageChannel())) {
newReq.setPageChannel("AIPU");
}
newReq.setActivityId(activityBaseInfo.getActivity_id());
newReq.setPageId(req.getPageId());
newReq.setPageTemplateId(req.getPageTemplateId());
newReq.setPageTitle(req.getPageTitle());
newReq.setHeadBannerUrls(req.getHeadBannerUrls());
newReq.setPageBgColor(req.getPageBgColor());
log.info("活动页面配置入参{}",newReq);
activityPageConfDao.insertSelective(newReq);
for(int i = 0; i < req.getActivityPageId().length;i++){
if (StringUtils.isNotEmpty(req.getActivityPageId()[i])) {
pageModule.setActivityPageIdBak(newReq.getId());
pageModule.setId(req.getActivityPageId()[i]);
activityPageModuleConfDao.updatePageModule(pageModule);
}
}
}
} catch (Exception e) {
log.error("saveBannerPage error msg:{}", e);
br.setFromRetCode(ConstantCode.SYS_ERROR);
}
return br;
}
//获取活动页面列表
@RequestMapping(value = "/getActivityPageList.json", method = RequestMethod.POST)
public BaseResponse getActivityPageList(HttpSession session,@RequestBody ActivityPageDTO req) {
BaseResponse br = new BaseResponse(0);
BasePageRsp<ActivityPageDTO> bp = new BasePageRsp<>();
try {
List<ActivityPageDTO> list = activityPageConfDao.getActivityList(req);
this.activityPageQueryService.fillSubConfigs(list);
for (ActivityPageDTO activityPageDTO : list) {
if ("AIPU".equals(activityPageDTO.getPage_channel())) {
activityPageDTO.setPage_channel_bak("企业爱普页面");
}else {
activityPageDTO.setPage_channel_bak("");
}
if ("1".equals(activityPageDTO.getActivityStatus())) {
activityPageDTO.setActivityStatusBak("上线");
}else {
activityPageDTO.setActivityStatusBak("下线");
}
}
log.info("活动模块配置列表入参{}",list.toString());
int total = activityPageConfDao.getActivityListCount(req);
bp.setTotal(total);
bp.setList(list);
bp.setPageNumber(req.getPageNumber());
bp.setPageSize(req.getPageSize());
bp.setStart(req.getStart());
br.setData(bp);
} catch (Exception e) {
log.error("getActivityConfList error msg:{}", e);
br.setFromRetCode(ConstantCode.SYS_ERROR);
}
return br;
}
//删除页面配置
@RequestMapping(value = "/delActivityPage.json", method = RequestMethod.POST)
@DumbLogger
public BaseResponse delActivityPage(@Validated @RequestBody ActivityPageConfEntity req){
BaseResponse br = new BaseResponse();
try {
activityPageConfDao.deleteByPrimaryKey(req.getId());
log.info("删除{}",br);
} catch (Exception e) {
// TODO: handle exception
br.setFromRetCode(ConstantCode.SYS_ERROR);
log.error("delBannerPage error msg:{}", e);
}
return br;
}
/**
* 查询页面关联模块
* @return
*/
@RequestMapping(value = "/getPageSetList.json", method = RequestMethod.POST)
public List<Map<String, String>> getPageSetList() {
try {
List<Map<String, String>> activityList = activityPageModuleConfDao.selectActivityPage();
String jsonString = JSONObject.toJSONString(activityList);
log.info("查询Banner{}",jsonString);
return activityList;
} catch (Exception e) {
OpLogUtil.logOpStepException(Thread.currentThread().getStackTrace()[1].getMethodName(),"查询Banner异常", e);
return null;
}
}
//banner上线
@RequestMapping(value = "/updateBannerStatusFlagUp.json", method = RequestMethod.POST)
@DumbLogger
public BaseResponse updateBannerStatusFlagUp(@Validated @RequestBody PageBannerConfEntity req){
BaseResponse br = new BaseResponse();
try {
pageBannerConfDao.updateStatusUp(req);
log.info("上线{}",br);
} catch (Exception e) {
br.setFromRetCode(ConstantCode.SYS_ERROR);
log.error("delBannerPage error msg:{}", e);
}
return br;
}
//banner下线
@RequestMapping(value = "/updateBannerStatusFlagDown.json", method = RequestMethod.POST)
@DumbLogger
public BaseResponse updateBannerStatusFlagDown(@Validated @RequestBody PageBannerConfEntity req){
BaseResponse br = new BaseResponse();
try {
pageBannerConfDao.updateStatusDown(req);
log.info("下线{}",br);
} catch (Exception e) {
br.setFromRetCode(ConstantCode.SYS_ERROR);
log.error("delBannerPage error msg:{}", e);
}
return br;
}
/**
* 爱普APP内页面下拉列表接口
* @return
*/
@RequestMapping(value = "/getSpecifiedPage.json", method = RequestMethod.POST)
public List<DictInfo> getSpecifiedPage() {
try {
Req_querySpecifiedPage_01 req = new Req_querySpecifiedPage_01();
Rsp_querySpecifiedPage_01 rsp_querySpecifiedPage_01 = querySpecifiedPage.querySpecifiedPage(req, new BizErrors());
List<DictInfo> dictInfoList = null;
if (rsp_querySpecifiedPage_01 != null) {
dictInfoList = rsp_querySpecifiedPage_01.getDictInfoList();
}
/*List<DictInfo> dictInfoList = new ArrayList<>();
DictInfo dictInfo = new DictInfo();
dictInfo.setDict("specified_page");
dictInfo.setItemKey("1");
dictInfo.setItemOrder(1);
dictInfo.setItemValue("实名认证");
dictInfoList.add(dictInfo);*/
log.info("爱普APP内页面下拉列表接口{}",dictInfoList.toString());
return dictInfoList;
} catch (Exception e) {
OpLogUtil.logOpStepException(Thread.currentThread().getStackTrace()[1].getMethodName(),"查询爱普APP异常", e);
return null;
}
}
//活动页面上线
@RequestMapping(value = "/onlinePage.json", method = RequestMethod.POST)
@DumbLogger
//public BaseResponse onlinePage(@RequestParam("id") String pageId){
public BaseResponse onlinePage(@Validated @RequestBody ActivityPageConfEntity req){
BaseResponse br = new BaseResponse();
String pageId = req.getId();
try {
this.activityPageManageService.onlinePage(pageId);
log.info("上线活动页面|pageId {}", pageId);
} catch (BusinessException e){
br.setStatus(e.getRetCode().getCode());
br.setMsg(e.getRetCode().getMsg());
log.warn("上线页面|业务异常|ex {}", e.toString());
}catch (Exception e) {
br.setFromRetCode(ConstantCode.SYS_ERROR);
log.error("onlinePage error|pageId {}| msg:{}", pageId, e);
}
return br;
}
//活动页面上线
@RequestMapping(value = "/offlinePage.json", method = RequestMethod.POST)
@DumbLogger
//public BaseResponse offlinePage(@RequestParam("id") String pageId){
public BaseResponse offlinePage(@Validated @RequestBody ActivityPageConfEntity req){
BaseResponse br = new BaseResponse();
String pageId = req.getId();
try {
this.activityPageManageService.offlinePage(pageId);
log.info("下线活动页面|pageId {}", pageId);
} catch (BusinessException e){
br.setStatus(e.getRetCode().getCode());
br.setMsg(e.getRetCode().getMsg());
log.warn("下线页面|业务异常|ex {}", e.toString());
}catch (Exception e) {
br.setFromRetCode(ConstantCode.SYS_ERROR);
log.error("offlinePage error|pageId {}| msg:{}", pageId, e);
}
return br;
}
}
package cn.webank.cfpd.cpmm.adm.dto.base;
import cn.webank.cfpd.cpmm.adm.base.RetCode;
/**
* 通用http响应报文格式
* JSON格式:{"status":0,"msg":"","data":Object}
*/
public class BaseResponse {
private final static String SUCCESS_MSG = "SUCCESSED";
private final static String FAILURE_MSG = "FAILURE";
private int status;
private String msg;
private Object data;
public BaseResponse() {
}
public BaseResponse(int status) {
this.status = status;
if (status == 0) {
msg = SUCCESS_MSG;
} else {
msg = FAILURE_MSG;
}
}
public BaseResponse(int status,Object data) {
this.status = status;
this.data = data;
if (status == 0) {
msg = SUCCESS_MSG;
} else {
msg = FAILURE_MSG;
}
}
public BaseResponse(int status, String msg) {
this.status = status;
this.msg = msg;
}
public BaseResponse(int status, String msg, Object data) {
this.status = status;
this.msg = msg;
this.data = data;
}
public BaseResponse(RetCode retCode) {
this.status = retCode.getCode();
this.msg = retCode.getMsg();
}
public void setStatus(int status) {
this.status = status;
}
public void setMsg(String msg) {
this.msg = msg;
}
public void setData(Object data) {
this.data = data;
}
public int getStatus() {
return status;
}
public String getMsg() {
return msg;
}
public Object getData() {
return data;
}
public void setFromRetCode(RetCode retCode) {
this.status = retCode.getCode();
this.msg = retCode.getMsg();
}
}