Commit e1cf3116 by chongli

买券活动后台配置

parent c73bf791
......@@ -187,3 +187,4 @@ $RECYCLE.BIN/
# Mac desktop service store files
.DS_Store
/target
package com.ctrip.fun.admin.controller.basic;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.ctrip.fun.admin.form.PaginationForm;
import com.ctrip.fun.admin.service.basic.BuyVoucherActivityService;
import com.ctrip.fun.common.core.util.DateUtil;
import com.ctrip.fun.common.vo.PagedResponseBean;
import com.ctrip.fun.common.vo.basic.BuyVoucherActivityBean;
import com.ctrip.fun.common.vo.basic.BuyVoucherActivityQuery;
@Controller
@RequestMapping("/buyVoucherActivity")
public class BuyVoucherActivityController {
@Autowired
private BuyVoucherActivityService buyVoucherActivityService;
@RequestMapping(value = "queryList", method = RequestMethod.GET)
public String queryList(HttpServletRequest request,
@ModelAttribute("dto") BuyVoucherActivityQuery query, ModelMap model) {
int currentPage = 0;
int pageSize;
int total;
int pageCount;
if (null != request.getParameter("page")) {
try {
currentPage = Integer.parseInt(request.getParameter("page"));
} catch (Exception e) {
}
}
query.setPagerOffset(currentPage * query.getPagerPerPage());
PagedResponseBean<BuyVoucherActivityBean> response = buyVoucherActivityService.queryList(query);
pageSize = query.getPagerPerPage();
total = response.getCount();
pageCount = (0 == total % pageSize) ? (total / pageSize) : (total / pageSize + 1);
model.put("list", response.getResult());
model.put("paginationData", new PaginationForm(currentPage, pageSize, pageCount, total));
return "basic/buyVoucherActivity/list";
}
@RequestMapping(value = "create", method = RequestMethod.GET)
public String toCreateBuyVoucherActivity(@ModelAttribute("dto") BuyVoucherActivityBean dto, ModelMap model) {
model.put("action", "/buyVoucherActivity/create");
return "basic/buyVoucherActivity/form";
}
@RequestMapping(value = "create", method = RequestMethod.POST)
public String createBuyVoucherActivity(@Valid @ModelAttribute("dto") BuyVoucherActivityBean dto,
BindingResult bindingResult, ModelMap model) {
buyVoucherActivityService.saveBuyVoucherActivity("", dto);
return "redirect:queryList";
}
@RequestMapping(value = "update", method = RequestMethod.GET)
public String updateBuyVoucherActivity(HttpServletRequest request, @ModelAttribute("id") int id,
ModelMap model) {
BuyVoucherActivityBean bean = buyVoucherActivityService.getById(id);
model.put("action", "/buyVoucherActivity/update");
model.addAttribute("dto", bean);
model.addAttribute("page", request.getParameter("page"));
return "basic/buyVoucherActivity/form";
}
@RequestMapping(value = "update", method = RequestMethod.POST)
public String updateBuyVoucherActivity(@Valid @ModelAttribute("dto") BuyVoucherActivityBean dto,
BindingResult bindingResult, ModelMap model) {
buyVoucherActivityService.updateBuyVoucherActivity("", dto);
return "redirect:queryList";
}
}
package com.ctrip.fun.admin.service.basic;
import java.util.ArrayList;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.web.client.RestClientException;
import com.ctrip.fun.admin.service.BaseService;
import com.ctrip.fun.common.vo.PagedResponseBean;
import com.ctrip.fun.common.vo.Request;
import com.ctrip.fun.common.vo.Response;
import com.ctrip.fun.common.vo.ResponseStatusEnum;
import com.ctrip.fun.common.vo.basic.BuyVoucherActivityBean;
import com.ctrip.fun.common.vo.basic.BuyVoucherActivityQuery;
public class BuyVoucherActivityService extends BaseService {
private static final Logger logger = LoggerFactory.getLogger(BuyVoucherActivityService.class);
/**
* 获取买券活动列表
*/
public PagedResponseBean<BuyVoucherActivityBean> queryList(BuyVoucherActivityQuery query) {
PagedResponseBean<BuyVoucherActivityBean> responseBean = new PagedResponseBean<BuyVoucherActivityBean>(0,
new ArrayList<BuyVoucherActivityBean>());
String uri = super.getServiceUri("uri.buyVoucherActivity.list");
Request<BuyVoucherActivityQuery> request = new Request<BuyVoucherActivityQuery>("", query);
HttpEntity<Request<BuyVoucherActivityQuery>> entity = new HttpEntity<Request<BuyVoucherActivityQuery>>(
request);
Response<PagedResponseBean<BuyVoucherActivityBean>> response = null;
try {
response = super.exchange(uri, HttpMethod.POST, entity,
new ParameterizedTypeReference<Response<PagedResponseBean<BuyVoucherActivityBean>>>() {
}).getBody();
} catch (RestClientException e) {
logger.error(e.getMessage());
}
if (null != response && response.getStatus() == ResponseStatusEnum.SUCCESS.getValue()) {
responseBean = response.getBody();
} else {
logger.error("{} status: {}, msg: {}", "获取现金券规则列表异常", response.getStatus(),
response.getMessage());
}
return responseBean;
}
/**
* 增加买券活动
*/
public boolean saveBuyVoucherActivity(String uid, BuyVoucherActivityBean bean) {
String uri = super.getServiceUri("uri.buyVoucherActivity.add");
boolean success = true;
Request<BuyVoucherActivityBean> request = new Request<BuyVoucherActivityBean>(uid, bean);
HttpEntity<Request<BuyVoucherActivityBean>> entity = new HttpEntity<Request<BuyVoucherActivityBean>>(
request);
Response<Integer> response = super.exchange(uri, HttpMethod.POST, entity,
new ParameterizedTypeReference<Response<Integer>>() {
}).getBody();
if (response == null || response.getStatus() != ResponseStatusEnum.SUCCESS.getValue()) {
success = false;
logger.error("增加买券活动规则失败");
}
return success;
}
/**
* 获取指定的买券活动
*/
public BuyVoucherActivityBean getById(Integer id) {
String uri = super.getServiceUri("uri.buyVoucherActivity.get");
BuyVoucherActivityBean bean = new BuyVoucherActivityBean();
Request<Integer> request = new Request<Integer>("", id);
HttpEntity<Request<Integer>> entity = new HttpEntity<Request<Integer>>(request);
Response<BuyVoucherActivityBean> response = super.exchange(uri, HttpMethod.POST, entity,
new ParameterizedTypeReference<Response<BuyVoucherActivityBean>>() {
}).getBody();
if (response != null && response.getStatus() == ResponseStatusEnum.SUCCESS.getValue()) {
bean = response.getBody();
} else {
logger.error("获取买券活动详细失败");
}
return bean;
}
/**
* 增加买券活动
*/
public boolean updateBuyVoucherActivity(String uid, BuyVoucherActivityBean bean) {
String uri = super.getServiceUri("uri.buyVoucherActivity.update");
boolean success = true;
Request<BuyVoucherActivityBean> request = new Request<BuyVoucherActivityBean>(uid, bean);
HttpEntity<Request<BuyVoucherActivityBean>> entity = new HttpEntity<Request<BuyVoucherActivityBean>>(
request);
Response<Integer> response = super.exchange(uri, HttpMethod.POST, entity,
new ParameterizedTypeReference<Response<Integer>>() {
}).getBody();
if (response == null || response.getStatus() != ResponseStatusEnum.SUCCESS.getValue()) {
success = false;
logger.error("更新买券活动规则失败");
}
return success;
}
}
......@@ -254,6 +254,11 @@
<!-- 现金券 -->
<bean name="voucherRuleService" class="com.ctrip.fun.admin.service.basic.VoucherRuleService"
parent="baseService" />
<!-- 买券活动-->
<bean name="buyVoucherActivityService" class="com.ctrip.fun.admin.service.basic.BuyVoucherActivityService"
parent="baseService" />
<!-- 现金券分享记录 -->
<bean name="voucherShareLogService" class="com.ctrip.fun.admin.service.basic.VoucherShareLogService" parent="baseService" />
<!-- Finance -->
......
imageEndpoint=http\://7x2w1g.com1.z0.glb.clouddn.com/
dImageEndpoint=http://7x2w1g.com1.z0.glb.clouddn.com/
accessKey=s_FZUyzvhxv10JMRzJOBwy5rObZWYlEwwNC9rVt2
secretKey=flCPDL5VVrWx4n9VnzSr6zN1wN4XZega_3cWPqmH
imageEndpoint=http://img.iwanoutdoor.com/
dImageEndpoint=http://img.iwanoutdoor.com/
accessKey=s56-PMBhHGrK1KCnWsmAKlh6X5X5NHqhvD0QE024
secretKey=hNIZ_7THzWQMleYtLZdHE0Fiw6J78LIa0gx06RJw
bucketName=ofrog
#proxy do not fill but necessary
......
imageEndpoint=http\://7x2w1g.com1.z0.glb.clouddn.com/
dImageEndpoint=http://7x2w1g.com1.z0.glb.clouddn.com/
accessKey=s_FZUyzvhxv10JMRzJOBwy5rObZWYlEwwNC9rVt2
secretKey=flCPDL5VVrWx4n9VnzSr6zN1wN4XZega_3cWPqmH
imageEndpoint=http://img.iwanoutdoor.com/
dImageEndpoint=http://img.iwanoutdoor.com/
accessKey=s56-PMBhHGrK1KCnWsmAKlh6X5X5NHqhvD0QE024
secretKey=hNIZ_7THzWQMleYtLZdHE0Fiw6J78LIa0gx06RJw
bucketName=ofrog
#proxy do not fill but necessary
......
......@@ -437,6 +437,12 @@ uri.voucherRule.modify=/fun-golf-service/voucherRule/modify
uri.voucherRule.updateValidFlag=/fun-golf-service/voucherRule/updateValidFlag
uri.voucherRule.addVoucherRoleUsers=/fun-golf-service/voucherRule/addVoucherRoleUsers/{id}
#buyVoucherActivity
uri.buyVoucherActivity.list=/fun-golf-service/buyVoucherActivity/list
uri.buyVoucherActivity.add=/fun-golf-service/buyVoucherActivity/add
uri.buyVoucherActivity.get=/fun-golf-service/buyVoucherActivity/get
uri.buyVoucherActivity.update=/fun-golf-service/buyVoucherActivity/update
#voucherShareLog
uri.vouchershareLog.queryList=/fun-golf-service/voucherShareLog/queryList
uri.vouchershareLog.getVouchersByShareId=/fun-golf-service/voucherShareLog/getVouchersByShareId
......
imageEndpoint=http\://7x2w1g.com1.z0.glb.clouddn.com/
dImageEndpoint=http://7x2w1g.com1.z0.glb.clouddn.com/
accessKey=s_FZUyzvhxv10JMRzJOBwy5rObZWYlEwwNC9rVt2
secretKey=flCPDL5VVrWx4n9VnzSr6zN1wN4XZega_3cWPqmH
imageEndpoint=http://img.iwanoutdoor.com/
dImageEndpoint=http://img.iwanoutdoor.com/
accessKey=s56-PMBhHGrK1KCnWsmAKlh6X5X5NHqhvD0QE024
secretKey=hNIZ_7THzWQMleYtLZdHE0Fiw6J78LIa0gx06RJw
bucketName=ofrog
#proxy do not fill but necessary
......
<#assign pageJsContent>
<script>
<@flash_message />
</script>
</#assign>
<#assign pageCssContent>
<style>
.table th, .table td{ text-align:center;vertical-align:middle;}
.widthShow {
width: 1100px;
}
</style>
</#assign>
<@com.layout title="查询现金券规则" module="marketing" current="buyVoucherActivity_list" pageCss=pageCssContent pageJs=pageJsContent>
<form class="form-inline search-box widthShow" action="" method="get" autocomplete="off" >
<@com.textInput "dto.id" "style=\"margin-left: 5px;\"" "活动ID"/>
<@com.textInput "dto.activityName" "style=\"margin-left: 5px;\"" "活动名称"/>
<@com.textInputTwoDate "dto.createdTimeStart" "dto.createdTimeEnd" "style=\"margin-left: 5px;\"" "创建时间"/>
<button type="submit" class="btn btn-primary">查询</button>
<button type="button" class="btn btn-success" onclick="javascript:location.href='/buyVoucherActivity/queryList';" style="margin-left:20px;">重置</button>
</form>
<table class="table table-bordered table-striped widthShow">
<thead>
<tr>
<th style="width:5%">ID</th>
<th style="width:13%">活动名称</th>
<th style="width:10%">社员价</th>
<th style="width:10%">嘉宾价</th>
<th style="width:10%">购买限制</th>
<th style="width:6%">是否有效</th>
<th style="width:4%">限制购买次数</th>
<th style="width:15%">创建日期</th>
<th style="width:5%">操作</th>
</tr>
</thead>
<tbody>
<#list list as item>
<tr>
<td>${item.id!}</td>
<td>${item.activityName!}</td>
<td>${item.communePrice!}</td>
<td>${item.guestPrice!}</td>
<#switch item.userLimit>
<#case 2>
<td>社员</td>
<#break>
<#case 1>
<td>嘉宾</td>
<#break>
<#case 0>
<td>不限</td>
<#break>
<#default>
未知
</#switch>
<td>
<#if item.valid==0>
<#else>
</#if>
</td>
<td>${item.buyLimitTimes!}</td>
<td>${item.createdTime?string("yyyy-MM-dd HH:mm:ss")}</td>
<td><a href="/buyVoucherActivity/update?id=${item.id!}&page=${paginationData.pageNumber!}">编辑</a></td>
</tr>
</#list>
</tbody>
</table>
<div class="pagination pagination-right widthShow">
<ul>
<@paginator.first />
<@paginator.previous />
<@paginator.numbers separator=""/>
<@paginator.next />
<@paginator.last />
</ul>
<@paginator.statistics />
</div>
</@com.layout>
\ No newline at end of file
<#assign pageJsContent>
<script type="text/javascript" src="${staticServer}/js/lib/ui.js"></script>
<script type="text/javascript" src="${staticServer}/js/lib/dropZone.js"></script>
<script type="text/javascript" src="${staticServer}/js/lib/main.js"></script>
<script type="text/javascript" src="${staticServer}/js/lib/qiniu.js"></script>
<script type="text/javascript" src="${staticServer}/js/lib/bootstrap.min.js"></script>
<script type="text/javascript" src="${staticServer}/js/lib/plupload.full.min.js"></script>
<script type="text/javascript" src="${staticServer}/js/lib/zh_CN.js"></script>
<script type="text/javascript" src="${staticServer}/js/lib/highlight.js"></script>
<style type="text/css">
#imagePathShow .currentImage img {
width:220px;
height:220px;
margin-right:10px;
}
</style>
<script>
$(function(){
$('#labelSelectedBtn').on("click",function(){
var selectedJsonArray = [];
var chooseChecked = $(".choose.checked");
var html = '';
var labels = '';
for(var i=0;i< chooseChecked.length;i++){
html+='<span class="tag label label-info" data-id="'+chooseChecked[i].getAttribute("data-id")+'"> '+chooseChecked[i].innerHTML+'<span data-role="remove"></span></span>';
labels+=chooseChecked[i].getAttribute("data-id")+' ';
}
//将selectedJsonArray 信息保存到 搜索栏文本框
$(".bootstrap-tagsinput").html(html);
labels = labels.trim();
$("#labels").val(labels);
$('#tagSelectModal').modal('hide');
});
});
function submitFun(){
handlerData();
$("#submitButton").click();
}
var imageServer=$("#imageServer").val();
function uploadOneImage(hashCode,link){
console.log(this);
addImage(hashCode,link);
}
function uploadImageCompleted(){
$("#imageFsUploadProgress").parents("table").eq(0).css("display","none");
}
function addImage(hashCode,link){
var currentImage = $("#imagePathShow .currentImage");
if(currentImage.text()=="无"){
currentImage.html("");
}
$("#imagePathShow .currentImage").append("<img src='"+imageServer+link+"'/>");
var trId=link.split(".")[0];
$("#imageFsUploadProgress tr[id="+trId+"] ").remove();
}
function validateForm(){
if($("#imagePathShow .currentImage").children("img").length<1){
showError(null,"请上传【奖项图片】!");
return false;
}
return true;
}
function handlerData(){
$("#imageHiddenTable").empty();
var imageSmall=$("#imagePathShow .currentImage").children("img").eq(0);
var imageBig=$("#imagePathShow .currentImage").children("img").eq(1);
var imageSmall_src=imageSmall.attr("src");
var imageBig_src=imageBig.attr("src");
if(typeof(imageBig_src) != "undefined"){
var hiddenHtml="<input type='hidden' name='imagePath' value='"+imageBig_src+"' />";
$("#imageHiddenTable").append(hiddenHtml);
}
if(typeof(imageSmall_src) != "undefined"){
var hiddenHtml="<input type='hidden' name='thumPath' value='"+imageSmall_src+"' />";
$("#imageHiddenTable").append(hiddenHtml);
}
}
function showError(_jQueryObj,errorMsg){
alert(errorMsg);
if(_jQueryObj){
_jQueryObj.focus();
}
}
function openTagModel(){
$('#tagSelectModal').modal('show');
}
$('#tagSelectModal').on('show.bs.modal', function (e) {
//查询所有的标签
$.get("/communeservice/communeAdm/labels/list",{},function(data){
//返回找出所有的会服
var html='';
for(var i=0;i<data.length;i++){
var classhtml = 'choose';
var labels = $("#labels").val();
if(labels!='undefinded' && labels!=null){
var labelArray = labels.split(' ');
for(var j =0;j< labelArray.length;j++){
if(data[i].id == labelArray[j]){
classhtml = 'choose checked';
break;
}
}
}
html+='<span class="'+classhtml+'" data-id="'+data[i].id+'" >'+data[i].labelName+'</span>';
}
$(".contentTxt").html(html);
$(".choose").on("click",function(e){
var $cur = $(e.currentTarget)
if($cur.hasClass("checked")){
$cur.removeClass("checked");
}else{
$cur.addClass("checked");
}
});
});
});
</script>
</#assign>
<@com.layout title="新建买券活动" module="marketing" current="buyVoucherActivity_create" pageJs=pageJsContent pageCss=pageCssContent>
<form id="voucherRulForm" class="form-inline form-horizontal" action="/buyVoucherActivity/create" method="post">
<#if returnPage??>
<input type="hidden" id="returnPage" name="returnPage" value="${returnPage}"/>
</#if>
<div id="course_container">
<div class="row-fluid show-grid">
<h3 class="open span12" data-collapse-summary="" aria-expanded="true">新建买券活动</h3>
<div class="feature_content">
<@form.textInput path="dto.activityName" attributes="class=\"input-medium\"" label="活动名称" required = true />
<@form.textInput path="dto.communePrice" attributes="class=\"input-medium\"" label="社员价" required = true />
<@form.textInput path="dto.guestPrice" attributes="class=\"input-medium\"" label="嘉宾价" required = true />
<@form.textInput path="dto.buyLimitTimes" attributes="class=\"input-medium\"" label="限制购买数量" required = true />
<@form.textInput path="dto.voucherIds" attributes="class=\"input-medium\"" label="券ID拼接(英文逗号分割)" required = true />
<@form.textInputTwoDate path1="dto.activityStart" path2="dto.activityEnd" attributes="" label="活动时间" required = true/>
<@form.textArea path="dto.miniAppMessage" attributes="class=\"input-medium\" required rows=\"3\"" label="提示拼接(英文分号分割)" required = true />
<div class="long_content_div control-group" id="voucherRuleTypeValue1show">
<label class="control-label" for="type">购买限制</label>
<div class="controls">
<input style="margin-bottom: 5px;" type="radio" name="userLimit" value="2" checked>
<span style="padding-right: 20px;">社员</span>
<input style="margin-bottom: 5px;" type="radio" name="userLimit" value="1">
<span style="padding-right: 20px;">嘉宾</span>
<input style="margin-bottom: 5px;" type="radio" name="userLimit" value="0">
<span style="padding-right: 20px;">不限</span>
</div>
</div>
<div class="long_content_div control-group" id="voucherRuleTypeValue1show">
<label class="control-label" for="type">是否有效</label>
<div class="controls">
<input style="margin-bottom: 5px;" type="radio" name="valid" value="0" checked>
<span style="padding-right: 20px;">否</span>
<input style="margin-bottom: 5px;" type="radio" name="valid" value="1">
<span style="padding-right: 20px;">是</span>
</div>
</div>
</div>
<div class="long_content_div control-group ">
<input type="hidden" id="domain" value="${imageServer}">
<input type="hidden" id="imageServer" value="${imageServer}">
<input type="hidden" id="uptoken_url" value="/tools/uptoken">
<label class="control-label" for="remark">活动图片</label>
<div class="information">
<div id="imagePathShow">
<#if dto.imagePath?? && dto.imagePath!=''>
<div class="currentImage"><img src="${dto.thumPath!}"/> <img src="${dto.imagePath!}"/> </div>
<#else>
<div class="currentImage"><div class="noneImage">请上传两张(第一张缩略图;第二张大图)</div></div>
</#if>
</div>
<div class="body" style="margin-top:20px;">
<div class="col-md-12">
<div id="container">
<a class="btn btn-success" id="J_Add_image" href="javascript:void(0);"><span>选择图片</span></a>
<a class="btn btn-primary" id="J_AddConfirm_image"><span>开始上传</span></a>
<a class="btn btn-warning" id="J_AddCancel_image"><span>取消上传</span></a>
</div>
</div>
<div class="col-md-12 ">
<table class="table table-striped table-hover text-left" style="margin-top:10px;display:none">
<thead>
<tr>
<th class="col-md-4" style="width:300px">文件名</th>
<th class="col-md-2" style="width:150px">文件尺寸</th>
<th class="col-md-6">文件详情</th>
</tr>
</thead>
<tbody id="imageFsUploadProgress">
</tbody>
</table>
</div>
</div>
<div id="imageHiddenTable" class="none">
</div>
</div>
</div>
<button type="button" class="btn btn-primary pull-left bottom_margin" onclick="submitFun()">提交</button>
<button type="submit" id="submitButton" style="display:none;"></button>
</form>
</@com.layout>
......@@ -250,6 +250,16 @@ ${pageCss}
<a href="/voucherShareLog/queryList">现金券分享记录</a>
</li>
<li class="nav-header">买券活动</li>
<li <#if current == "buyVoucherActivity_create">class="active"</#if>>
<a href="/buyVoucherActivity/create">新建</a>
</li>
<li <#if current == "buyVoucherActivity_list">class="active"</#if>>
<a href="/buyVoucherActivity/queryList">列表</a>
</li>
<li class="nav-header">签到</li>
<li <#if current == "sign_get">class="active"</#if>>
<a href="/sign/get">签到设置</a>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment