Commit ccaac867 by chongli

会服亲密度推荐功能

parent 00764816
......@@ -25,6 +25,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.Errors;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
......@@ -38,6 +39,8 @@ import org.springframework.web.bind.annotation.ResponseStatus;
import com.ctrip.fun.admin.form.PaginationForm;
import com.ctrip.fun.admin.form.golf.ResourceInventoryForm;
import com.ctrip.fun.admin.form.golf.ResourcePriceForm;
import com.ctrip.fun.admin.form.market.EventGameGroupForm;
import com.ctrip.fun.admin.form.market.EventGamePlayerForm;
import com.ctrip.fun.admin.form.operation.SupplierQueryForm;
import com.ctrip.fun.admin.service.basic.DistrictService;
import com.ctrip.fun.admin.service.basic.EntityImageService;
......@@ -51,6 +54,8 @@ import com.ctrip.fun.admin.service.golf.CourseProductService;
import com.ctrip.fun.admin.service.golf.CourseResourceService;
import com.ctrip.fun.admin.service.golf.CourseService;
import com.ctrip.fun.admin.service.golf.GameService;
import com.ctrip.fun.admin.service.market.EventGameGroupService;
import com.ctrip.fun.admin.service.market.EventGamePlayerService;
import com.ctrip.fun.admin.service.membership.CardTypeService;
import com.ctrip.fun.admin.service.membership.CourseCardsService;
import com.ctrip.fun.admin.service.notification.EventService;
......@@ -97,8 +102,13 @@ import com.ctrip.fun.common.vo.basic.SubDistrictQuery;
import com.ctrip.fun.common.vo.basic.SysCodeBean;
import com.ctrip.fun.common.vo.basic.SysCodeQuery;
import com.ctrip.fun.common.vo.basic.TagBean;
import com.ctrip.fun.common.vo.basic.UserExtQuery;
import com.ctrip.fun.common.vo.basic.UserPrepayCardInfoBean;
import com.ctrip.fun.common.vo.basic.UserPrepayCardLogQuery;
import com.ctrip.fun.common.vo.market.EventGameGroupBean;
import com.ctrip.fun.common.vo.market.EventGameGroupQuery;
import com.ctrip.fun.common.vo.market.EventGamePlayerBean;
import com.ctrip.fun.common.vo.market.EventGamePlayerQuery;
import com.ctrip.fun.common.vo.membership.CardTypeBean;
import com.ctrip.fun.common.vo.membership.MbsOrderQueryBean;
import com.ctrip.fun.common.vo.notification.EventQuery;
......@@ -112,6 +122,8 @@ import com.ctrip.fun.common.vo.order.CourseOrderListBean;
import com.ctrip.fun.common.vo.order.CourseOrderProcessBean;
import com.ctrip.fun.common.vo.order.CustomerBean;
import com.ctrip.fun.common.vo.order.EventActivityOrderProcessBean;
import com.ctrip.fun.common.vo.order.EventCustomerInfoBean;
import com.ctrip.fun.common.vo.order.EventCustomerInfoQuery;
import com.ctrip.fun.common.vo.order.OrderProcessEnum;
import com.ctrip.fun.common.vo.order.OrderProcessLogBean;
import com.ctrip.fun.common.vo.order.TourOrderListBean;
......@@ -154,6 +166,7 @@ import com.ctrip.fun.common.vo.user.TransferOutsideUserAmtBean;
import com.ctrip.fun.common.vo.user.UserConractsBean;
import com.ctrip.fun.common.vo.user.UserConractsQuery;
import com.ctrip.fun.common.vo.user.UserExtBean;
import com.ctrip.fun.admin.service.golf.EventCustomerInfoService;
/**
* Created by pat on 14-5-30.
......@@ -227,6 +240,15 @@ public class JsonController {
@Autowired
private CourseOrderStatisticsService courseOrderStatisticsService;
@Autowired
private EventGamePlayerService eventGamePlayerService = null;
@Autowired
private EventGameGroupService eventGameGroupService = null;
@Autowired
private EventCustomerInfoService eventCustomerInfoService = null;
@Value("${imageEndpoint}")
private String imageEndpoint;
......@@ -2273,4 +2295,107 @@ public class JsonController {
response.setBody(userContractsBeanList);
return response;
}
@RequestMapping(value = "/updatePlayer", method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public Response<Serializable> playerUpdate(HttpServletRequest request, @ModelAttribute("eventGamePlayerForm") EventGamePlayerForm eventGamePlayerForm,ModelMap model) {
EventGamePlayerQuery query =new EventGamePlayerQuery();
query.setId(eventGamePlayerForm.getId());
query.setSortField("id");
PagedResponseBean<EventGamePlayerBean> players = eventGamePlayerService.list("", query);
if(players.getResult()!=null&&players.getResult().size()>0){
List<EventGamePlayerBean> list = (ArrayList<EventGamePlayerBean>)players.getResult();
for(EventGamePlayerBean temp:list){
if(eventGamePlayerForm.getMobilePhone()!=null&&!"".equals(eventGamePlayerForm.getMobilePhone())){
temp.setMobilePhone(eventGamePlayerForm.getMobilePhone());
}
if(eventGamePlayerForm.getUid()!=null&&!"".equals(eventGamePlayerForm.getUid())){
temp.setUid(eventGamePlayerForm.getUid());
}
eventGamePlayerService.update("", temp);
}
}
Response<Serializable> response = new Response<>();
return response;
}
@RequestMapping(value = "/updateGroup", method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public Response<Serializable> GroupUpdate(HttpServletRequest request, @ModelAttribute("eventGameGroupForm") EventGameGroupForm eventGameGroupForm,ModelMap model) {
EventGameGroupQuery query =new EventGameGroupQuery();
query.setId(eventGameGroupForm.getId());
query.setSortField("id");
PagedResponseBean<EventGameGroupBean> players = eventGameGroupService.list("", query);
if(players.getResult()!=null&&players.getResult().size()>0){
List<EventGameGroupBean> list = (ArrayList<EventGameGroupBean>)players.getResult();
for(EventGameGroupBean temp:list){
if(eventGameGroupForm.getFormatTeeTime()!=null&&!"".equals(eventGameGroupForm.getFormatTeeTime())){
temp.setFormatTeeTime(eventGameGroupForm.getFormatTeeTime());
}
eventGameGroupService.update("", temp);
}
}
Response<Serializable> response = new Response<>();
return response;
}
@RequestMapping(value = "/playerInfoList", method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public Response<List<EventGamePlayerBean>> playerInfoList(HttpServletRequest request, @RequestParam(value = "playerName", required = false) String playerName) {
Response<List<EventGamePlayerBean>> response = new Response<List<EventGamePlayerBean>>();
response.setStatus(ResponseStatusEnum.SUCCESS.getValue());
response.setMessage(ResponseStatusEnum.SUCCESS.getMsg());
EventGamePlayerQuery query =new EventGamePlayerQuery();
query.setPlayerName(playerName);
PagedResponseBean<EventGamePlayerBean> responseBean = eventGamePlayerService.playerInfoList("", query);
response.setBody((List<EventGamePlayerBean>) responseBean.getResult());
return response;
}
@RequestMapping(value = "/getEventCustomerInfoByName", method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public Response<List<EventCustomerInfoBean>> getEventCustomerInfoByName(HttpServletRequest request, @RequestParam(value = "playerName", required = false) String playerName) {
Response<List<EventCustomerInfoBean>> response = new Response<List<EventCustomerInfoBean>>();
response.setStatus(ResponseStatusEnum.SUCCESS.getValue());
response.setMessage(ResponseStatusEnum.SUCCESS.getMsg());
EventCustomerInfoQuery query = new EventCustomerInfoQuery();
query.setcName(playerName);
List<EventCustomerInfoBean> list = eventCustomerInfoService.getEventCustomerInfoByName(query);
response.setBody(list);
return response;
}
@RequestMapping(value = "/getUserExtByName", method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public Response<List<UserExtBean>> getUserExtByName(HttpServletRequest request, @RequestParam(value = "playerName", required = false) String playerName) {
Response<List<UserExtBean>> response = new Response<List<UserExtBean>>();
response.setStatus(ResponseStatusEnum.SUCCESS.getValue());
response.setMessage(ResponseStatusEnum.SUCCESS.getMsg());
UserExtQuery query = new UserExtQuery();
query.setName(playerName);
PagedResponseBean<UserExtBean> pagedList = userService.getUserExtByName("", query);
response.setBody((List<UserExtBean>)pagedList.getResult());
return response;
}
@RequestMapping(value = "/getEventGamePlayerByName", method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public Response<List<EventGamePlayerBean>> getEventGamePlayerByName(HttpServletRequest request, @RequestParam(value = "playerName", required = false) String playerName) {
Response<List<EventGamePlayerBean>> response = new Response<List<EventGamePlayerBean>>();
response.setStatus(ResponseStatusEnum.SUCCESS.getValue());
response.setMessage(ResponseStatusEnum.SUCCESS.getMsg());
EventGamePlayerQuery query = new EventGamePlayerQuery();
query.setPlayerName(playerName);
query.setSortField("id");
PagedResponseBean<EventGamePlayerBean> pagedList = eventGamePlayerService.list("", query);
response.setBody((List<EventGamePlayerBean>)pagedList.getResult());
return response;
}
}
package com.ctrip.fun.admin.controller.market;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import com.ctrip.fun.admin.form.PaginationForm;
import com.ctrip.fun.admin.form.market.EventGameForm;
import com.ctrip.fun.admin.form.market.EventGameGroupForm;
import com.ctrip.fun.admin.form.market.EventGamePlayerForm;
import com.ctrip.fun.admin.form.market.EventGameQueryForm;
import com.ctrip.fun.admin.service.market.EventGameGroupService;
import com.ctrip.fun.admin.service.market.EventGamePlayerService;
import com.ctrip.fun.admin.service.market.EventGameService;
import com.ctrip.fun.common.core.util.BeanConverter;
import com.ctrip.fun.common.core.util.DateUtil;
import com.ctrip.fun.common.vo.PagedResponseBean;
import com.ctrip.fun.common.vo.SortDirectionEnum;
import com.ctrip.fun.common.vo.market.EventGameBean;
import com.ctrip.fun.common.vo.market.EventGameGroupBean;
import com.ctrip.fun.common.vo.market.EventGameGroupQuery;
import com.ctrip.fun.common.vo.market.EventGamePlayerBean;
import com.ctrip.fun.common.vo.market.EventGamePlayerQuery;
import com.ctrip.fun.common.vo.market.EventGameQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpServletRequest;
@Controller
@RequestMapping("/market/eventGame")
public class EventGameController {
@Autowired
private EventGameService service = null;
@Autowired
private EventGameGroupService eventGameGroupService = null;
@Autowired
private EventGamePlayerService eventGamePlayerService = null;
@RequestMapping(value = "/list", method = RequestMethod.GET)
public String list(HttpServletRequest request, @ModelAttribute("eventGameQueryForm") EventGameQueryForm form, ModelMap model) throws Exception {
int currentPage = 0;
if (null != request.getParameter("page")) {
currentPage = Integer.parseInt(request.getParameter("page"));
}
if(form.getPlayDateStart()==null){
Date date = new Date();//获取当前时间
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MONTH, -6);//当前时间前去一个月,即一个月前的时间
form.setPlayDateStart(calendar.getTime());
}
if(form.getPlayDateEnd()==null){
form.setPlayDateEnd(DateUtil.getToday());
}
EventGameQuery query = new EventGameQuery();
query.setCourseId(form.getCourseId());
query.setCourseName(form.getGameName());
query.setPlayDateStart(form.getPlayDateStart());
query.setPlayDateEnd(form.getPlayDateEnd());
query.setId(form.getId());
query.setPagerOffset(currentPage * query.getPagerPerPage());
query.setSortField("createTime");
PagedResponseBean<EventGameBean> response = service.list("", query);
int pageSize = query.getPagerPerPage();
int total = response.getCount();
int pageCount = (0 == total % pageSize) ? (total / pageSize) : (total / pageSize + 1);
model.put("list", response.getResult());
model.put("paginationData", new PaginationForm(currentPage, pageSize, pageCount, total));
return "market/eventGameList";
}
@RequestMapping(value = "/create", method = RequestMethod.GET)
public String formGet(@ModelAttribute("eventGameForm") EventGameForm eventGameForm, ModelMap model) {
model.put("action", "/market/eventGame/create");
return "market/eventGameForm";
}
@RequestMapping(value = "/create", method = RequestMethod.POST)
public String formPost(HttpServletRequest request, @ModelAttribute("eventGameForm") EventGameForm EventGameForm, ModelMap model) {
EventGameBean bean = new EventGameBean();
BeanConverter.copyProperties(bean, EventGameForm);
bean.setCreateUser(request.getAttribute("userName").toString());
bean.setCreateTime(new Date());
service.add(request.getAttribute("userName").toString(), bean);
return "redirect:list";
}
@RequestMapping(value = "/edit", method = RequestMethod.GET)
public String editGet(@ModelAttribute("eventGameForm") EventGameForm EventGameForm, @RequestParam(value = "id", required = true) int id, ModelMap model) {
EventGameBean bean = service.get("", id);
BeanConverter.copyProperties(EventGameForm, bean);
model.put("action", "/market/eventGame/edit");
return "market/eventGameForm";
}
@RequestMapping(value = "/edit", method = RequestMethod.POST)
public String editPost(HttpServletRequest request, @ModelAttribute("eventGameForm") EventGameForm EventGameForm, @RequestParam(value = "id", required = true) int id, ModelMap model) {
EventGameBean bean = new EventGameBean();
BeanConverter.copyProperties(bean, EventGameForm);
bean.setCreateUser(request.getAttribute("userName").toString());
bean.setCreateTime(new Date());
service.update(request.getAttribute("userName").toString(), bean);
return "redirect:list";
}
@RequestMapping(value = "/createGroupGet", method = RequestMethod.GET)
public String createGroupGet(@ModelAttribute("eventGameGroupForm") EventGameGroupForm eventGameGroupForm, ModelMap model) {
//根据gameId获取该赛事的所有group(list)
EventGameGroupQuery query = new EventGameGroupQuery();
query.setGameId(eventGameGroupForm.getGameId());
query.setSortField("groupNum");
query.setSortDirection(SortDirectionEnum.ASC);
PagedResponseBean<EventGameGroupBean> list = eventGameGroupService.list("",query);
//加载每个组中的人员信息
for(EventGameGroupBean eventGameGroupBean:list.getResult()){
EventGamePlayerQuery playerQuery = new EventGamePlayerQuery();
playerQuery.setGameId(eventGameGroupBean.getGameId());
playerQuery.setGroupNum(eventGameGroupBean.getGroupNum());
playerQuery.setSortField("id");
PagedResponseBean<EventGamePlayerBean> paged = eventGamePlayerService.list("", playerQuery);
if(paged.getResult()!=null&&paged.getResult().size()>0){
eventGameGroupBean.setPlayers((List<EventGamePlayerBean>)paged.getResult());
}
}
//model中返回list
model.put("list", list.getResult());
return "market/createGroup";
}
@RequestMapping(value = "/createGroupPost", method = RequestMethod.POST)
public String createGroupPost(HttpServletRequest request, @ModelAttribute("eventGameGroupForm") EventGameGroupForm eventGameGroupForm, ModelMap model) {
//得到同一场赛事中当前最大组号
int maxGroupNum = 0;
//得到同一场赛事中最大的组时间
int maxGroupTime = 360;
EventGameGroupQuery query_max =new EventGameGroupQuery();
query_max.setGameId(eventGameGroupForm.getGameId());
query_max.setSortField("id");
PagedResponseBean<EventGameGroupBean> groups = eventGameGroupService.list("", query_max);
if(groups.getResult()!=null&&groups.getResult().size()!=0){
List<EventGameGroupBean> temp = (List<EventGameGroupBean>) groups.getResult();
for(EventGameGroupBean bean:temp){
if(bean.getGroupNum()>maxGroupNum){
maxGroupNum=bean.getGroupNum();
}
if(bean.getGroupTime()>maxGroupTime){
maxGroupTime=bean.getGroupTime();
}
}
}
EventGamePlayerQuery query =new EventGamePlayerQuery();
for(int i=1;i<=eventGameGroupForm.getZuShu();i++){
EventGameGroupBean bean = new EventGameGroupBean();
bean.setGameId(eventGameGroupForm.getGameId());
bean.setGroupNum(maxGroupNum+i);
bean.setGroupTime(maxGroupTime+i*eventGameGroupForm.getJianGe());
int groupid = eventGameGroupService.add(request.getAttribute("userName").toString(), bean);
//更新player表中的groupID
query.setGameId(eventGameGroupForm.getGameId());
query.setGroupNum(maxGroupNum+i);
query.setSortField("id");
PagedResponseBean<EventGamePlayerBean> players = eventGamePlayerService.list("", query);
if(players.getResult()!=null&&players.getResult().size()>0){
List<EventGamePlayerBean> list = (ArrayList<EventGamePlayerBean>)players.getResult();
for(EventGamePlayerBean temp:list){
temp.setGroupId(groupid);
eventGamePlayerService.update("", temp);
}
}
}
return "redirect:createGroupGet?gameId="+eventGameGroupForm.getGameId();
}
@RequestMapping(value = "/createSingleGroupPost", method = RequestMethod.POST)
public String createSingleGroupPost(HttpServletRequest request, @ModelAttribute("eventGameGroupForm") EventGameGroupForm eventGameGroupForm, ModelMap model) {
//得到同一场赛事中当前最大组号
int maxGroupNum = 0;
EventGameGroupQuery query_max =new EventGameGroupQuery();
query_max.setGameId(eventGameGroupForm.getGameId());
query_max.setSortField("id");
PagedResponseBean<EventGameGroupBean> groups = eventGameGroupService.list("", query_max);
if(groups.getResult()!=null&&groups.getResult().size()!=0){
List<EventGameGroupBean> temp = (List<EventGameGroupBean>) groups.getResult();
for(EventGameGroupBean bean:temp){
if(bean.getGroupNum()>maxGroupNum){
maxGroupNum=bean.getGroupNum();
}
}
}
EventGamePlayerQuery query =new EventGamePlayerQuery();
EventGameGroupBean bean = new EventGameGroupBean();
bean.setGameId(eventGameGroupForm.getGameId());
bean.setGroupNum(maxGroupNum+1);
bean.setGroupTime(eventGameGroupForm.getTeeTime());
int groupid = eventGameGroupService.add(request.getAttribute("userName").toString(), bean);
//更新player表中的groupID
query.setGameId(eventGameGroupForm.getGameId());
query.setGroupNum(maxGroupNum+1);
query.setSortField("id");
PagedResponseBean<EventGamePlayerBean> players = eventGamePlayerService.list("", query);
if(players.getResult()!=null&&players.getResult().size()>0){
List<EventGamePlayerBean> list = (ArrayList<EventGamePlayerBean>)players.getResult();
for(EventGamePlayerBean temp:list){
temp.setGroupId(groupid);
eventGamePlayerService.update("", temp);
}
}
return "redirect:createGroupGet?gameId="+eventGameGroupForm.getGameId();
}
@RequestMapping(value = "/recommendPlayerGet", method = RequestMethod.GET)
public String recommendPlayerGet(ModelMap model) {
model.put("list", new ArrayList<EventGamePlayerBean>());
return "market/recommendPlayer";
}
@RequestMapping(value = "/recommendPlayerPost", method = RequestMethod.POST)
public String recommendPlayerPost(HttpServletRequest request, @RequestParam(value = "playerPhone", required = false) String playerPhone, ModelMap model) {
PagedResponseBean<EventGamePlayerBean> list = eventGamePlayerService.recommendPlayer("",playerPhone);
if(list.getResult()==null){
model.put("list", new ArrayList<EventGamePlayerBean>());
}else{
model.put("list", list.getResult());
}
model.put("playerPhone", playerPhone);
return "market/recommendPlayer";
}
public EventGameService getService() {
return service;
}
public void setService(EventGameService service) {
this.service = service;
}
public EventGameGroupService getEventGameGroupService() {
return eventGameGroupService;
}
public void setEventGameGroupService(EventGameGroupService eventGameGroupService) {
this.eventGameGroupService = eventGameGroupService;
}
public EventGamePlayerService getEventGamePlayerService() {
return eventGamePlayerService;
}
public void setEventGamePlayerService(
EventGamePlayerService eventGamePlayerService) {
this.eventGamePlayerService = eventGamePlayerService;
}
}
package com.ctrip.fun.admin.form.market;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
public class EventGameForm {
private Integer id;// 赛事id
private Integer courseId;// 球场id
private String courseName;// 球场名称
private String gameName;// 赛事名称
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date playDate;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getCourseId() {
return courseId;
}
public void setCourseId(Integer courseId) {
this.courseId = courseId;
}
public String getCourseName() {
return courseName;
}
public void setCourseName(String courseName) {
this.courseName = courseName;
}
public String getGameName() {
return gameName;
}
public void setGameName(String gameName) {
this.gameName = gameName;
}
public Date getPlayDate() {
return playDate;
}
public void setPlayDate(Date playDate) {
this.playDate = playDate;
}
}
package com.ctrip.fun.admin.form.market;
public class EventGameGroupForm {
private Integer id;// 赛事id
private Integer gameId;// 球场id
private Integer zuShu;// 批量创建时的组数
private Integer jianGe;// 批量创建时的每组间隔时间
private String formatTeeTime;//格式化TeeTime
private Integer teeTime;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getGameId() {
return gameId;
}
public void setGameId(Integer gameId) {
this.gameId = gameId;
}
public Integer getZuShu() {
return zuShu;
}
public void setZuShu(Integer zuShu) {
this.zuShu = zuShu;
}
public Integer getJianGe() {
return jianGe;
}
public void setJianGe(Integer jianGe) {
this.jianGe = jianGe;
}
public Integer getTeeTime() {
return teeTime;
}
public void setTeeTime(Integer teeTime) {
this.teeTime = teeTime;
}
public String getFormatTeeTime() {
return String.format("%02d", this.teeTime / 60) + ":" + String.format("%02d", this.teeTime % 60);
}
public void setFormatTeeTime(String formatTeeTime) {
this.formatTeeTime = formatTeeTime;
String[] segs = formatTeeTime.split(":");
this.teeTime = Integer.parseInt(segs[0]) * 60 + Integer.parseInt(segs[1]);
}
}
package com.ctrip.fun.admin.form.market;
public class EventGamePlayerForm {
private Integer id;//id
private String mobilePhone;//手机号
private String uid;// 打球人uid
private String sex;//性别
private Integer candicate;//差点
private String remark;//备注
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getMobilePhone() {
return mobilePhone;
}
public void setMobilePhone(String mobilePhone) {
this.mobilePhone = mobilePhone;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Integer getCandicate() {
return candicate;
}
public void setCandicate(Integer candicate) {
this.candicate = candicate;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}
package com.ctrip.fun.admin.form.market;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
public class EventGameQueryForm {
private Integer id;// 赛事id
private Integer courseId;// 球场id
private String courseName;// 球场名称
private String gameName;// 赛事名称
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date playDateStart;// 赛事时间查询开始日期
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date playDateEnd;// 赛事时间查询结束日期
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getCourseId() {
return courseId;
}
public void setCourseId(Integer courseId) {
this.courseId = courseId;
}
public String getCourseName() {
return courseName;
}
public void setCourseName(String courseName) {
this.courseName = courseName;
}
public String getGameName() {
return gameName;
}
public void setGameName(String gameName) {
this.gameName = gameName;
}
public Date getPlayDateStart() {
return playDateStart;
}
public void setPlayDateStart(Date playDateStart) {
this.playDateStart = playDateStart;
}
public Date getPlayDateEnd() {
return playDateEnd;
}
public void setPlayDateEnd(Date playDateEnd) {
this.playDateEnd = playDateEnd;
}
}
......@@ -49,6 +49,31 @@ public class EventCustomerInfoService extends BaseService {
return new ArrayList<OrderPlayerBean>();
}
/**
* 根据用户姓名查询其在赛事中留下的电话信息
*/
public List<EventCustomerInfoBean> getEventCustomerInfoByName(EventCustomerInfoQuery query) {
String uri = super.getServiceUri("uri.eventCustomer.getEventCustomerInfoByName");
Request<EventCustomerInfoQuery> request = new Request<EventCustomerInfoQuery>("", query);
HttpEntity<Request<EventCustomerInfoQuery>> entity = new HttpEntity<Request<EventCustomerInfoQuery>>(request);
Response<List<EventCustomerInfoBean>> response = null;
try {
response = super.exchange(uri, HttpMethod.POST, entity,
new ParameterizedTypeReference<Response<List<EventCustomerInfoBean>>>() {
}).getBody();
} catch (Exception e) {
logger.error(e.getMessage());
}
if (null != response && response.getStatus() == ResponseStatusEnum.SUCCESS.getValue()) {
return response.getBody();
} else {
logger.error("{} status: {}, msg: {}", "查询订单分组", response.getStatus(),
response.getMessage());
}
return new ArrayList<EventCustomerInfoBean>();
}
/**
* 根据赛事资源Id和活动日期获取参赛人员
*/
......
package com.ctrip.fun.admin.service.market;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
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.market.EventGameGroupBean;
import com.ctrip.fun.common.vo.market.EventGameGroupQuery;
public class EventGameGroupService extends BaseService{
private static Logger logger = LoggerFactory.getLogger(EventGameGroupService.class);
/**
* 根据ID查询模板
*
* @param userId 用户ID
* @param id 模板ID
* @return 模板实体
*/
public EventGameGroupBean get(String userId, int id) {
String uri = super.getServiceUri("uri.eventGameGroup.get");
EventGameGroupBean retBean = null;
HttpEntity<Request<Integer>> entity = new HttpEntity<Request<Integer>>(new Request<Integer>(userId, id));
Response<EventGameGroupBean> response = super.exchange(uri,
HttpMethod.POST,
entity,
new ParameterizedTypeReference<Response<EventGameGroupBean>>() {
}
).getBody();
if (null != response) {
if (response.getStatus() == 0) {
retBean = (EventGameGroupBean) response.getBody();
} else {
logger.error(String.format("[get] status: %d, msg: %s", response.getStatus(), response.getMessage()));
}
}
return retBean;
}
/**
* 创建模板
*
* @param userId 用户ID
* @param bean 模板实体
* @return 实体主键
*/
public int add(String userId, EventGameGroupBean bean) {
String uri = super.getServiceUri("uri.eventGameGroup.add");
int retKey = 0;
Request<EventGameGroupBean> request = new Request<EventGameGroupBean>();
request.setUserId(userId);
request.setBody(bean);
HttpEntity<Request<EventGameGroupBean>> entity = new HttpEntity<Request<EventGameGroupBean>>(request);
Response<Integer> response = super.exchange(uri,
HttpMethod.POST,
entity,
new ParameterizedTypeReference<Response<Integer>>() {
}
).getBody();
if (null != response) {
if (response.getStatus() == 0) {
retKey = response.getBody();
} else {
logger.error(String.format("[add] status: %d, msg: %s", response.getStatus(), response.getMessage()));
}
}
return retKey;
}
/**
* 查询供应商列表
*
* @param userId 用户ID
* @param query 查询条件
* @return 供应商列表
*/
public PagedResponseBean<EventGameGroupBean> list(String userId, EventGameGroupQuery query) {
PagedResponseBean<EventGameGroupBean> responseBean = null;
String uri = super.getServiceUri("uri.eventGameGroup.list");
Request<EventGameGroupQuery> request = new Request<EventGameGroupQuery>(userId, query);
HttpEntity<Request<EventGameGroupQuery>> entity = new HttpEntity<Request<EventGameGroupQuery>>(request);
Response<PagedResponseBean<EventGameGroupBean>> response = super.exchange(uri,
HttpMethod.POST,
entity,
new ParameterizedTypeReference<Response<PagedResponseBean<EventGameGroupBean>>>() {
}
).getBody();
if (null != response) {
if (response.getStatus() == 0) {
responseBean = response.getBody();
} else {
logger.error(String.format("[list] status: %d, msg: %s", response.getStatus(), response.getMessage()));
}
}
return responseBean;
}
/**
* 更新模板
*
* @param userId 用户ID
* @param bean 模板实体
* @return 实体主键
*/
public boolean update(String userId, EventGameGroupBean bean) {
String uri = super.getServiceUri("uri.eventGameGroup.update");
boolean retVal = false;
Request<EventGameGroupBean> request = new Request<EventGameGroupBean>();
request.setUserId(userId);
request.setBody(bean);
HttpEntity<Request<EventGameGroupBean>> entity = new HttpEntity<Request<EventGameGroupBean>>(request);
Response<Integer> response = super.exchange(uri,
HttpMethod.POST,
entity,
new ParameterizedTypeReference<Response<Integer>>() {
}
).getBody();
if (null != response) {
if (response.getStatus() == ResponseStatusEnum.SUCCESS.getValue()) {
retVal = true;
} else {
logger.error(String.format("[add] status: %d, msg: %s", response.getStatus(), response.getMessage()));
}
}
return retVal;
}
}
package com.ctrip.fun.admin.service.market;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
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.market.EventGamePlayerBean;
import com.ctrip.fun.common.vo.market.EventGamePlayerQuery;
public class EventGamePlayerService extends BaseService{
private static Logger logger = LoggerFactory.getLogger(EventGamePlayerService.class);
/**
* 根据ID查询模板
*
* @param userId 用户ID
* @param id 模板ID
* @return 模板实体
*/
public EventGamePlayerBean get(String userId, int id) {
String uri = super.getServiceUri("uri.eventGamePlayer.get");
EventGamePlayerBean retBean = null;
HttpEntity<Request<Integer>> entity = new HttpEntity<Request<Integer>>(new Request<Integer>(userId, id));
Response<EventGamePlayerBean> response = super.exchange(uri,
HttpMethod.POST,
entity,
new ParameterizedTypeReference<Response<EventGamePlayerBean>>() {
}
).getBody();
if (null != response) {
if (response.getStatus() == 0) {
retBean = (EventGamePlayerBean) response.getBody();
} else {
logger.error(String.format("[get] status: %d, msg: %s", response.getStatus(), response.getMessage()));
}
}
return retBean;
}
/**
* 创建模板
*
* @param userId 用户ID
* @param bean 模板实体
* @return 实体主键
*/
public int add(String userId, EventGamePlayerBean bean) {
String uri = super.getServiceUri("uri.eventGamePlayer.add");
int retKey = 0;
Request<EventGamePlayerBean> request = new Request<EventGamePlayerBean>();
request.setUserId(userId);
request.setBody(bean);
HttpEntity<Request<EventGamePlayerBean>> entity = new HttpEntity<Request<EventGamePlayerBean>>(request);
Response<Integer> response = super.exchange(uri,
HttpMethod.POST,
entity,
new ParameterizedTypeReference<Response<Integer>>() {
}
).getBody();
if (null != response) {
if (response.getStatus() == 0) {
retKey = response.getBody();
} else {
logger.error(String.format("[add] status: %d, msg: %s", response.getStatus(), response.getMessage()));
}
}
return retKey;
}
/**
* 查询供应商列表
*
* @param userId 用户ID
* @param query 查询条件
* @return 供应商列表
*/
public PagedResponseBean<EventGamePlayerBean> list(String userId, EventGamePlayerQuery query) {
PagedResponseBean<EventGamePlayerBean> responseBean = null;
String uri = super.getServiceUri("uri.eventGamePlayer.list");
Request<EventGamePlayerQuery> request = new Request<EventGamePlayerQuery>(userId, query);
HttpEntity<Request<EventGamePlayerQuery>> entity = new HttpEntity<Request<EventGamePlayerQuery>>(request);
Response<PagedResponseBean<EventGamePlayerBean>> response = super.exchange(uri,
HttpMethod.POST,
entity,
new ParameterizedTypeReference<Response<PagedResponseBean<EventGamePlayerBean>>>() {
}
).getBody();
if (null != response) {
if (response.getStatus() == 0) {
responseBean = response.getBody();
} else {
logger.error(String.format("[list] status: %d, msg: %s", response.getStatus(), response.getMessage()));
}
}
return responseBean;
}
/**
* 更新模板
*
* @param userId 用户ID
* @param bean 模板实体
* @return 实体主键
*/
public boolean update(String userId, EventGamePlayerBean bean) {
String uri = super.getServiceUri("uri.eventGamePlayer.update");
boolean retVal = false;
Request<EventGamePlayerBean> request = new Request<EventGamePlayerBean>();
request.setUserId(userId);
request.setBody(bean);
HttpEntity<Request<EventGamePlayerBean>> entity = new HttpEntity<Request<EventGamePlayerBean>>(request);
Response<Integer> response = super.exchange(uri,
HttpMethod.POST,
entity,
new ParameterizedTypeReference<Response<Integer>>() {
}
).getBody();
if (null != response) {
if (response.getStatus() == ResponseStatusEnum.SUCCESS.getValue()) {
retVal = true;
} else {
logger.error(String.format("[add] status: %d, msg: %s", response.getStatus(), response.getMessage()));
}
}
return retVal;
}
public PagedResponseBean<EventGamePlayerBean> playerInfoList(String userId, EventGamePlayerQuery query) {
PagedResponseBean<EventGamePlayerBean> responseBean = null;
String uri = super.getServiceUri("uri.eventGamePlayer.playerInfoList");
Request<EventGamePlayerQuery> request = new Request<EventGamePlayerQuery>(userId, query);
HttpEntity<Request<EventGamePlayerQuery>> entity = new HttpEntity<Request<EventGamePlayerQuery>>(request);
Response<PagedResponseBean<EventGamePlayerBean>> response = super.exchange(uri,
HttpMethod.POST,
entity,
new ParameterizedTypeReference<Response<PagedResponseBean<EventGamePlayerBean>>>() {
}
).getBody();
if (null != response) {
if (response.getStatus() == 0) {
responseBean = response.getBody();
} else {
logger.error(String.format("[list] status: %d, msg: %s", response.getStatus(), response.getMessage()));
}
}
return responseBean;
}
public PagedResponseBean<EventGamePlayerBean> recommendPlayer(String string, String playerPhone) {
PagedResponseBean<EventGamePlayerBean> responseBean = null;
String uri = super.getServiceUri("uri.eventGamePlayer.recommendPlayer");
Request<String> request = new Request<String>("", playerPhone);
HttpEntity<Request<String>> entity = new HttpEntity<Request<String>>(request);
Response<PagedResponseBean<EventGamePlayerBean>> response = super.exchange(uri,
HttpMethod.POST,
entity,
new ParameterizedTypeReference<Response<PagedResponseBean<EventGamePlayerBean>>>() {
}
).getBody();
if (null != response) {
if (response.getStatus() == 0) {
responseBean = response.getBody();
} else {
logger.error(String.format("[list] status: %d, msg: %s", response.getStatus(), response.getMessage()));
}
}
return responseBean;
}
}
package com.ctrip.fun.admin.service.market;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
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.market.EventGameBean;
import com.ctrip.fun.common.vo.market.EventGameQuery;
public class EventGameService extends BaseService{
private static Logger logger = LoggerFactory.getLogger(EventGameService.class);
/**
* 根据ID查询模板
*
* @param userId 用户ID
* @param id 模板ID
* @return 模板实体
*/
public EventGameBean get(String userId, int id) {
String uri = super.getServiceUri("uri.eventGame.get");
EventGameBean retBean = null;
HttpEntity<Request<Integer>> entity = new HttpEntity<Request<Integer>>(new Request<Integer>(userId, id));
Response<EventGameBean> response = super.exchange(uri,
HttpMethod.POST,
entity,
new ParameterizedTypeReference<Response<EventGameBean>>() {
}
).getBody();
if (null != response) {
if (response.getStatus() == 0) {
retBean = (EventGameBean) response.getBody();
} else {
logger.error(String.format("[get] status: %d, msg: %s", response.getStatus(), response.getMessage()));
}
}
return retBean;
}
/**
* 创建模板
*
* @param userId 用户ID
* @param bean 模板实体
* @return 实体主键
*/
public int add(String userId, EventGameBean bean) {
String uri = super.getServiceUri("uri.eventGame.add");
int retKey = 0;
Request<EventGameBean> request = new Request<EventGameBean>();
request.setUserId(userId);
request.setBody(bean);
HttpEntity<Request<EventGameBean>> entity = new HttpEntity<Request<EventGameBean>>(request);
Response<Integer> response = super.exchange(uri,
HttpMethod.POST,
entity,
new ParameterizedTypeReference<Response<Integer>>() {
}
).getBody();
if (null != response) {
if (response.getStatus() == 0) {
retKey = response.getBody();
} else {
logger.error(String.format("[add] status: %d, msg: %s", response.getStatus(), response.getMessage()));
}
}
return retKey;
}
/**
* 查询供应商列表
*
* @param userId 用户ID
* @param query 查询条件
* @return 供应商列表
*/
public PagedResponseBean<EventGameBean> list(String userId, EventGameQuery query) {
PagedResponseBean<EventGameBean> responseBean = null;
String uri = super.getServiceUri("uri.eventGame.list");
Request<EventGameQuery> request = new Request<EventGameQuery>(userId, query);
HttpEntity<Request<EventGameQuery>> entity = new HttpEntity<Request<EventGameQuery>>(request);
Response<PagedResponseBean<EventGameBean>> response = super.exchange(uri,
HttpMethod.POST,
entity,
new ParameterizedTypeReference<Response<PagedResponseBean<EventGameBean>>>() {
}
).getBody();
if (null != response) {
if (response.getStatus() == 0) {
responseBean = response.getBody();
} else {
logger.error(String.format("[list] status: %d, msg: %s", response.getStatus(), response.getMessage()));
}
}
return responseBean;
}
/**
* 更新模板
*
* @param userId 用户ID
* @param bean 模板实体
* @return 实体主键
*/
public boolean update(String userId, EventGameBean bean) {
String uri = super.getServiceUri("uri.eventGame.update");
boolean retVal = false;
Request<EventGameBean> request = new Request<EventGameBean>();
request.setUserId(userId);
request.setBody(bean);
HttpEntity<Request<EventGameBean>> entity = new HttpEntity<Request<EventGameBean>>(request);
Response<Integer> response = super.exchange(uri,
HttpMethod.POST,
entity,
new ParameterizedTypeReference<Response<Integer>>() {
}
).getBody();
if (null != response) {
if (response.getStatus() == ResponseStatusEnum.SUCCESS.getValue()) {
retVal = true;
} else {
logger.error(String.format("[add] status: %d, msg: %s", response.getStatus(), response.getMessage()));
}
}
return retVal;
}
}
......@@ -491,4 +491,31 @@ public class UserService extends BaseService {
return response.getBody();
}
public PagedResponseBean<UserExtBean> getUserExtByName(String string,UserExtQuery query) {
String uri = super.getServiceUri("uri.User.getUserExtByName");
PagedResponseBean<UserExtBean> pageResponseBean = null;
Request<UserExtQuery> request = new Request<UserExtQuery>();
request.setUserId(string);
request.setBody(query);
HttpEntity<Request<UserExtQuery>> httpEntity = new HttpEntity<Request<UserExtQuery>>(
request);
Response<PagedResponseBean<UserExtBean>> response = super.exchange(uri, HttpMethod.POST,
httpEntity,
new ParameterizedTypeReference<Response<PagedResponseBean<UserExtBean>>>() {
}).getBody();
if (response.getStatus() == ResponseStatusEnum.SUCCESS.getValue()) {
pageResponseBean = response.getBody();
} else {
Map<String, String> tags = new HashMap<>();
tags.put("userId", string);
tags.put("query", query.toString());
logger.error(
"用户list异常",
String.format("status: %d, msg: %s", response.getStatus(),
response.getMessage()), tags);
}
return pageResponseBean;
}
}
......@@ -267,6 +267,16 @@
<bean name="communeInviteActivityService"
class="com.ctrip.fun.admin.service.market.CommuneInviteActivityService"
parent="baseService" />
<!-- 赛事创建 -->
<bean name="eventGameService"
class="com.ctrip.fun.admin.service.market.EventGameService"
parent="baseService" />
<bean name="eventGameGroupService"
class="com.ctrip.fun.admin.service.market.EventGameGroupService"
parent="baseService" />
<bean name="eventGamePlayerService"
class="com.ctrip.fun.admin.service.market.EventGamePlayerService"
parent="baseService" />
<!-- 社员工分 -->
<bean name="workPointService"
class="com.ctrip.fun.admin.service.workPoint.WorkPointService" parent="baseService" />
......
......@@ -8,6 +8,7 @@ uri.endpoint=${uri.endpoint}
uri.User.list=/fun-golf-service/userext/list
uri.User.get=/fun-golf-service/userext/get
uri.User.getByUid=/fun-golf-service/userext/getByUid
uri.User.getUserExtByName=/fun-golf-service/userext/getUserExtByName
uri.User.updateRecode=/fun-golf-service/userext/updateRecode
uri.User.updateBlockFlag=/fun-golf-service/userext/updateBlockFlag
uri.User.getOutsideUser=/fun-golf-service/user/getOutsideUserByUsername
......@@ -444,6 +445,26 @@ uri.communeInviteActivity.queryList=/fun-golf-service/communeInviteActivity/quer
uri.communeInviteActivity.payRewardAmount=/fun-golf-service/communeInviteActivity/payRewardAmount
uri.communeInviteActivity.getDetail=/fun-golf-service/communeInviteActivity/getOpDetail
#eventGame
uri.eventGame.add=/fun-golf-service/eventGame/add
uri.eventGame.get=/fun-golf-service/eventGame/get
uri.eventGame.list=/fun-golf-service/eventGame/list
uri.eventGame.update=/fun-golf-service/eventGame/update
#eventGameGroup
uri.eventGameGroup.add=/fun-golf-service/eventGameGroup/add
uri.eventGameGroup.get=/fun-golf-service/eventGameGroup/get
uri.eventGameGroup.list=/fun-golf-service/eventGameGroup/list
uri.eventGameGroup.update=/fun-golf-service/eventGameGroup/update
#eventGameGroup
uri.eventGamePlayer.add=/fun-golf-service/eventGamePlayer/add
uri.eventGamePlayer.get=/fun-golf-service/eventGamePlayer/get
uri.eventGamePlayer.list=/fun-golf-service/eventGamePlayer/list
uri.eventGamePlayer.update=/fun-golf-service/eventGamePlayer/update
uri.eventGamePlayer.playerInfoList=/fun-golf-service/eventGamePlayer/playerInfoList
uri.eventGamePlayer.recommendPlayer=/fun-golf-service/eventGamePlayer/recommendPlayer
#communeExt
uri.communeExt.list=/fun-golf-service/communeExt/list
uri.communeExt.get=/fun-golf-service/communeExt/get
......@@ -478,6 +499,7 @@ uri.eventCustomer.importExcelGroupInfo=/fun-golf-service/eventCustomerInfo/impor
uri.eventCustomer.importExcelRankList=/fun-golf-service/eventCustomerInfo/importExcelRankList
uri.eventCustomer.listByResourceIdAndPriceDate=/fun-golf-service/eventCustomerInfo/listByResourceIdAndPriceDate
uri.eventCustomer.findOrderPlayers=/fun-golf-service/eventCustomerInfo/findOrderPlayers
uri.eventCustomer.getEventCustomerInfoByName=/fun-golf-service/eventCustomerInfo/getEventCustomerInfoByName
uri.eventCustomer.listGroupByResourceIdAndPriceDate=/fun-golf-service/eventCustomerInfo/listGroupByResourceIdAndPriceDate
uri.eventCustomer.updateGroupNum=/fun-golf-service/eventCustomerInfo/updateGroupNum
uri.eventCustomer.getByEventCustomerId=/fun-golf-service/eventCustomerInfo/getByEventCustomerId
......
......@@ -518,6 +518,18 @@ ${pageCss}
<li <#if current == "userOrderBehaviour_listValidUserOrder">class="active"</#if>>
<a href="/userOrderBehaviour/listValidUserOrder">用户有效订单查询</a>
</li>
<li <#if current == "userOrderBehaviour_recommendPlayer">class="active"</#if>>
<a href="/market/eventGame/recommendPlayerGet">客户推荐</a>
</li>
<li <#if current == "userOrderBehaviour_createGame">class="active"</#if>>
<a href="/market/eventGame/create">创建赛事</a>
</li>
<li <#if current == "userOrderBehaviour_listEventGame">class="active"</#if>>
<a href="/market/eventGame/list">赛事列表</a>
</li>
</ul>
</#if>
</div>
......
<#assign pageJsContent>
<script type="text/javascript">
$("#course_container").collapse({query: 'h3'});
$("#J_queryBtn").click(function () {
$.ajax({
url: "/j/course/list",
type: "get",
data: {
courseName: $("#courseNameForSearch").val()
},
success: function (obj) {
alert('aaaa');
//注册一个显示营业状态的Helper
Handlebars.registerHelper("statusShow",function(v1){
var staShow = "";
if(v1=1){
staShow = "营业中";
}else if(v1=2){
staShow = "停业";
}else if(v1=3){
staShow = "暂停营业";
}else if(v1=4){
staShow = "无效";
}else{
staShow = "无";
}
return staShow;
});
alert('bbbbb');
var source = $("#courseSelector-template").html();
var template = Handlebars.compile(source);
$('#tableList').html(template(obj))
}
});
});
$('#courseName').next().click(function () {
$("#myModal").modal('show');
});
$("#supplierList").on("click", "#J_supplierSelctorBtn", function () {
$('#courseName').val($(this).data('id'));
$('#supplierModal').modal('hide');
})
$("#playDate").iCalendar({
placeholder: $("#playDate").val() ? $("#playDate").val() : "blank"
});
</script>
</#assign>
<@com.layout title="资源编辑" module="communeAdm" current="userOrderBehaviour_createGame" pageJs=pageJsContent>
<ul class="nav nav-tabs">
<li class="active"> <a href="${action}?id=${id!}">资源</a> </li>
<#if id != 0>
<li><a href="/userOrderBehaviour/createGroup?gameId=${id!}">分组</a></li>
<#else>
<li class="disabled"><a href="javascript:;">分组</a></li>
</#if>
</ul>
<form action='${action!}' method="post">
<input type="hidden" name="id" value='${id!}'/>
赛事名称:<input type="text" name="gameName" value='${gameName!}'/>
球场id:<input type="text" name="courseId" value='${courseId!}'/>
赛事日期:<input type="text" name="playDate" value='${playDate!}'/>
<input type=submit name="submit1" value="提交">
</form>
<div class="modal hide fade" id="myModal">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h3>查询球场</h3>
</div>
<div class="modal-body">
<div class="input-append">
<input type="text" name="courseName" id="courseNameForSearch" value="" placeholder="球场名称" class="input-medium" autocomplete="off"/>
<button id="J_queryBtn" class="btn" data-toggle="modal" >查询</button>
</div>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>ID</th>
<th>球场名称</th>
<th width=14%>目的地</th>
<th width=14%>状态</th>
<th style="text-align: center;"><i class="icon-wrench"></i></th>
</tr>
</thead>
<tbody id="tableList">
</tbody>
</table>
<div class="pagination pagination-mini">
<ul>
</ul>
</div>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">关闭</button>
</div>
</div>
<script id="table-template" type="text/x-handlebars-template">
{{#each body}}
<tr>
<td>{{id}}</td>
<td><a href="/golf/course/edit?id={{id}}" target="_blank">{{name}}</a></td>
<td>{{districtName}}</td>
<td>{{statusShow status}}</td>
<td><a class="J_courseSelctorBtn" data-id="{{id}}" >选择</a></td>
</tr>
{{/each}}
</script>
</@com.layout>
<#assign pageJsContent>
<script type="text/javascript">
var thisTrChildren;
$("input[name='supplierId']").click(function(){
thisTrChildren = $(this).parents("tr")[0].children;
var name;
if(thisTrChildren.length==6){
name=thisTrChildren[2].innerHTML;
}else{
name=thisTrChildren[1].innerHTML;
}
$("#supplierModal").modal('show');
$.ajax({
url: "/j/getEventCustomerInfoByName" ,
type: "get",
data: {
playerName: name
},
success: function (obj) {
var template = Handlebars.compile($("#table_template_saiShiTable").html());
$('#saiShiTable').html(template(obj));
}
});
$.ajax({
url: "/j/getUserExtByName" ,
type: "get",
data: {
playerName: name
},
success: function (obj) {
var template = Handlebars.compile($("#table_template_userInfoTable").html());
$('#userInfoTable').html(template(obj));
}
});
$.ajax({
url: "/j/getEventGamePlayerByName" ,
type: "get",
data: {
playerName: name
},
success: function (obj) {
var template = Handlebars.compile($("#table_template_fenZuTableTable").html());
$('#fenZuTable').html(template(obj));
}
});
$.ajax({
url: "/j/playerInfoList",
type: "get",
data: {
playerName: name
},
success: function (obj) {
var template = Handlebars.compile($("#table_template_otherTable").html());
$('#otherTable').html(template(obj));
}
});
});
//更新被点击的赛事人员的手机号码信息,更新数据库中打球人手机号
function shiBieUser(parentTr){
$('#supplierModal').modal('hide');
for(var i=0;i<thisTrChildren.length;i++){
if(thisTrChildren.length==6&&i>2&&i<4){
thisTrChildren[i].innerHTML=parentTr[0].children[i-2].innerHTML;
}else if(thisTrChildren.length==5&&i>1&&i<3){
thisTrChildren[i].innerHTML=parentTr[0].children[i-1].innerHTML;
}
}
var player=new Object();
if(thisTrChildren.length==6){
player.id = thisTrChildren[0].value.trim();
player.mobilePhone = thisTrChildren[3].innerHTML.trim();
player.uid = thisTrChildren[4].innerHTML.trim();
}else{
player.id = thisTrChildren[0].value.trim();
player.mobilePhone = thisTrChildren[2].innerHTML.trim();
player.uid = thisTrChildren[3].innerHTML.trim();
}
$.ajax({
url: "/j/updatePlayer",
type: "get",
data: {
id:player.id,
mobilePhone:player.mobilePhone,
uid:player.uid,
},
success: function (obj) {
alert("识别成功");
}
});
}
$("#saiShiTable").on("click", "#J_saiShiTable", function () {
shiBieUser($(this).parents("tr"));
});
$("#userInfoTable").on("click", "#J_userInfoTable", function () {
shiBieUser($(this).parents("tr"));
});
$("#fenZuTable").on("click", "#J_fenZuTable", function () {
shiBieUser($(this).parents("tr"));
});
$("#otherTable").on("click", "#J_otherTable", function () {
shiBieUser($(this).parents("tr"));
});
$("input[name='editPlayer']").click(function(){
thisTrChildren = $(this).parents("tr")[0].children;
var id = thisTrChildren[0].value;
var name;
if(thisTrChildren.length==6){
name=thisTrChildren[2].innerHTML;
}else{
name=thisTrChildren[1].innerHTML;
}
$("#editPlayerTr").empty();
$("#editPlayerTr").append("<td>用户名:&nbsp;"+name+"<p> </P> 手机号: <input type='text' name='mobilePhone' style='height: 17px;margin-bottom:1px;'/> <input type='hidden' value='"+id+"'/> </td> <td style='text-align:center;vertical-align:middle'> <input type='button' id='editPlayerButton' value='确定'/> </td>");
$("#editPlayerModal").modal('show');
});
$("#editPlayerTr").on("click", "#editPlayerButton", function () {
$('#editPlayerModal').modal('hide');
var mobilePhone= $(this).parents("tr")[0].children[0].children[1].value;
var id = $(this).parents("tr")[0].children[0].children[2].value;
$.ajax({
url: "/j/updatePlayer",
type: "get",
data: {
id:id,
mobilePhone:mobilePhone
},
success: function (obj) {
alert("修改成功");
if(thisTrChildren.length==6){
thisTrChildren[3].innerHTML=mobilePhone;
}else{
thisTrChildren[2].innerHTML=mobilePhone;
}
}
});
});
$(function() {
$(':checkbox[name=datacheck]').each(function() {
$(this).click(function() {
if ($(this).attr('checked')) {
$(':checkbox[name=datacheck]').removeAttr('checked');
$(this).attr('checked', 'checked');
}
});
});
});
$("input[name='editGroupButton']").click(function(){
$("input[name='datacheck']:checked").each(function(i){//把所有被选中的复选框的值存入数组
var groupid =$(this).val();
var groupName = $(this).next()[0].innerHTML;
$("#editGroupTr").empty();
$("#editGroupTr").append("<td>分组名称:&nbsp;"+groupName+"<p> </P> 开球时间: <input type='time' name='formatTeeTime' style='height: 17px;margin-bottom:1px;'/> <input type='hidden' value='"+groupid+"'/> </td> <td style='text-align:center;vertical-align:middle'> <input type='button' id='editGroupButton' value='确定'/> </td>");
$("#editGroupModal").modal('show');
});
});
$("#editGroupTr").on("click", "#editGroupButton", function () {
$('#editGroupModal').modal('hide');
var formatTeeTime= $(this).parents("tr")[0].children[0].children[1].value;
var id = $(this).parents("tr")[0].children[0].children[2].value;
$.ajax({
url: "/j/updateGroup",
type: "get",
data: {
id:id,
formatTeeTime:formatTeeTime
},
success: function (obj) {
alert("修改成功");
$("input[name='datacheck']:checked").nextAll()[2].innerHTML=formatTeeTime;
}
});
});
</script>
</#assign>
<@com.layout title="资源编辑" module="communeAdm" current="userOrderBehaviour_createGroup" pageJs=pageJsContent>
<ul class="nav nav-tabs">
<li><a href="/market/eventGame/edit?id=${eventGameGroupForm.gameId!}">赛事</a></li>
<li class="active"><a href="/market/eventGame/createGroupGet?gameId=${eventGameGroupForm.gameId!}">分组</a></li>
</ul>
<form action='/market/eventGame/createGroupPost' method="post">
<input type="hidden" name="gameId" value="${eventGameGroupForm.gameId!}"/>
组&nbsp;&nbsp;&nbsp;数&nbsp;&nbsp;&nbsp;:<input type="text" name="zuShu"/>
&nbsp;每组间隔时间:<input type="text" name="jianGe"/>
<input type=submit name="submit1" value="批量创建分组" style='margin-bottom: 10px;'>
</form>
<form action='/market/eventGame/createSingleGroupPost' method="post">
<input type="hidden" name="gameId" value='${eventGameGroupForm.gameId!}'/>
开球时间:<input type="time" name="formatTeeTime"/>
<input type=submit name="submit1" value="创建单个分组" style='margin-bottom: 10px;'>
<input type='button' name="editGroupButton" value="修改分组" style='margin-left: 228px;margin-bottom: 10px;'>
</form>
<table class="table table-bordered table-striped widthShow" id="tab1" style='margin-bottom:50px' align="center">
<tr align="center">
<td >分组</td><td >姓名</td><td >手机号</td><td >UID</td><td >操作</td>
</tr>
<#if list?? && (list?size > 0) >
<#list list as eventGameGroup>
<#if eventGameGroup.players?? && (eventGameGroup.players?size > 0) >
<#list eventGameGroup.players as player>
<tr align="center">
<input type="hidden" value="${player.id!}"/>
<#if player_index==0>
<td rowspan='${eventGameGroup.players?size}' style="text-align:center;vertical-align:middle" >
<input type="checkbox" name="datacheck" id="datacheck" value="${eventGameGroup.id!}">
<span>分组${eventGameGroup.groupNum!}</span> <br/> <span id='formatTeeTimeSpan'>${eventGameGroup.formatTeeTime!}</span>
</td>
</#if>
<td>${player.playerName!}</td>
<td>${player.mobilePhone!}</td>
<td>${player.uid!}</td>
<td width='150px'><input type='button' value='识别用户' name='supplierId' /> <input type='button' value='修改用户' name='editPlayer' /></td>
</tr>
</#list>
<#else>
<tr>
<td style="text-align:center;vertical-align:middle">
<input type="checkbox" name="datacheck" id="datacheck" value="${eventGameGroup.id!}">
<span>分组${eventGameGroup.groupNum!}</span> <br/> <span id='formatTeeTimeSpan'>${eventGameGroup.formatTeeTime!}</span>
</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</#if>
</#list>
</#if>
</table>
<div class="modal hide fade" id="supplierModal">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h3>用户识别</h3>
</div>
<div class="modal-body">
<ul id="myTab" class="nav nav-tabs">
<li class="active">
<a href="#saiShiDiv" data-toggle="tab">赛事占座表</a>
</li>
<li>
<a href="#userInfoDiv" data-toggle="tab">用户信息表</a>
</li>
<li>
<a href="#fenZuDiv" data-toggle="tab">赛事分组表</a>
</li>
<li>
<a href="#otherDiv" data-toggle="tab">其它表</a>
</li>
</ul>
<div id="myTabContent" class="tab-content">
<div class="tab-pane fade in active" id="saiShiDiv">
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>姓名</th>
<th>手机号</th>
<th>赛事日期</th>
<th style="text-align: center;"><i class="icon-wrench"></i></th>
</tr>
</thead>
<tbody id="saiShiTable">
</tbody>
</table>
</div>
<div class="tab-pane fade" id="userInfoDiv">
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>姓名</th>
<th>手机号</th>
<th>昵称</th>
<th>UID</th>
<th>性别</th>
<th style="text-align: center;"><i class="icon-wrench"></i></th>
</tr>
</thead>
<tbody id="userInfoTable">
</tbody>
</table>
</div>
<div class="tab-pane fade" id="fenZuDiv">
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>姓名</th>
<th>手机号</th>
<th>UID</th>
<th style="text-align: center;"><i class="icon-wrench"></i></th>
</tr>
</thead>
<tbody id="fenZuTable">
</tbody>
</table>
</div>
<div class="tab-pane fade" id="otherDiv">
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>姓名</th>
<th>手机号</th>
<th style="text-align: center;"><i class="icon-wrench"></i></th>
</tr>
</thead>
<tbody id="otherTable">
</tbody>
</table>
</div>
</div>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">关闭</button>
</div>
</div>
<div class="modal hide fade" id="editPlayerModal">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h3>修改用户</h3>
</div>
<div class="modal-body">
<table class="table table-bordered table-striped">
<tr id='editPlayerTr'>
</tr>
</table>
<div class="pagination pagination-mini">
<ul>
</ul>
</div>
</div>
</div>
<div class="modal hide fade" id="editGroupModal">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h3>修改分组</h3>
</div>
<div class="modal-body">
<table class="table table-bordered table-striped">
<tr id='editGroupTr'>
</tr>
</table>
<div class="pagination pagination-mini">
<ul>
</ul>
</div>
</div>
</div>
<script id="table_template_saiShiTable" type="text/x-handlebars-template">
{{#each body}}
<tr>
<td>{{cName}} </td>
<td>{{mobilePhone}} </td>
<td>{{priceDate}} </td>
<td><a id="J_saiShiTable">选择</a></td>
</tr>
{{/each}}
</script>
<script id="table_template_userInfoTable" type="text/x-handlebars-template">
{{#each body}}
<tr>
<td>{{userName}} </td>
<td>{{mobilePhone}} </td>
<td>{{umNickName}} </td>
<td>{{uid}} </td>
<td>{{gender}} </td>
<td><a id="J_userInfoTable">选择</a></td>
</tr>
{{/each}}
</script>
<script id="table_template_fenZuTableTable" type="text/x-handlebars-template">
{{#each body}}
<tr>
<td>{{playerName}} </td>
<td>{{mobilePhone}} </td>
<td>{{uid}} </td>
<td><a id="J_fenZuTable">选择</a></td>
</tr>
{{/each}}
</script>
<script id="table_template_otherTable" type="text/x-handlebars-template">
{{#each body}}
<tr>
<td>{{playerName}} </td>
<td>{{mobilePhone}} </td>
<td><a id="J_otherTable">选择</a></td>
</tr>
{{/each}}
</script>
</@com.layout>
<#assign pageJsContent>
<script type="text/javascript">
$("#playDate").iCalendar({
placeholder: $("#playDate").val() ? $("#playDate").val() : "blank"
});
var $popDiv=$("#courseSelector");
$('#courseId').next().click(function () {
$("#myModal").modal('show');
});
$("#tableList").on("click", ".J_courseSelctorBtn", function () {
$('#courseId').val($(this).data('id'));
$('#myModal').modal('hide');
})
$("#J_queryBtn").click(function () {
var courseName = $popDiv.find("input[name=courseName]").val();
$.ajax({
url: "/j/course/list",
type: "get",
data: {
courseName: courseName,
coursesId: ""
},
success: function (obj) {
//注册一个显示营业状态的Helper
Handlebars.registerHelper("statusShow",function(v1){
var staShow = "";
if(v1=1){
staShow = "营业中";
}else if(v1=2){
staShow = "停业";
}else if(v1=3){
staShow = "暂停营业";
}else if(v1=4){
staShow = "无效";
}else{
staShow = "无";
}
return staShow;
});
var source = $("#table_course").html();
var template = Handlebars.compile(source);
$('#tableList').html(template(obj))
}
});
});
</script>
</#assign>
<@com.layout title="资源编辑" module="communeAdm" current="template_create" pageJs=pageJsContent>
<ul class="nav nav-tabs">
<li class="active">
<a href="#">赛事</a>
</li>
<#if eventGameForm.id ?? >
<li><a href="/market/eventGame/createGroupGet?gameId=${eventGameForm.id!}">分组</a></li>
<#else>
<li class="disabled"><a href="javascript:;">分组</a></li>
</#if>
</ul>
<form class="form-inline" action="${action}" method="post">
<div id="course_container">
<div class="row-fluid show-grid">
<@form.hidden "eventGameForm.id"/>
<@form.textInput "eventGameForm.gameName" "class=\"input-medium\"" "赛事名称" />
<@form.addonTextInput path="eventGameForm.courseId" attributes="class=\"input-medium\" required min=\"1\"" label="球场ID" addon="选择" addonType="button" type="number"/>
<@form.textInput "eventGameForm.playDate" "class=\"input-medium\"" "赛事日期" />
<div class="control-group">
<div class="controls">
<button type="submit" class="btn btn-primary">提交</button>
</div>
</div>
</div>
</div>
</form>
<div class="modal hide fade" id="myModal">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h3>查询球场</h3>
</div>
<div class="modal-body" id='courseSelector'>
<div class="input-append">
<input type="text" name="courseName" value="" placeholder="球场名称" class="input-medium" autocomplete="off"/>
<button id="J_queryBtn" class="btn" data-toggle="modal" >查询</button>
</div>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>ID</th>
<th>球场名称</th>
<th width=14%>目的地</th>
<th width=14%>状态</th>
<th style="text-align: center;"><i class="icon-wrench"></i></th>
</tr>
</thead>
<tbody id="tableList">
</tbody>
</table>
<div class="pagination pagination-mini">
<ul>
</ul>
</div>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">关闭</button>
</div>
</div>
<script id="table_course" type="text/x-handlebars-template">
{{#each body}}
<tr>
<td>{{id}}</td>
<td><a href="/golf/course/edit?id={{id}}" target="_blank">{{name}}</a></td>
<td>{{districtName}}</td>
<td>{{statusShow status}}</td>
<td><a class="J_courseSelctorBtn" data-id="{{id}}" >选择</a></td>
</tr>
{{/each}}
</script>
</@com.layout>
\ No newline at end of file
<#assign pageJsContent>
<script type="text/javascript">
</script>
</#assign>
<@com.layout title="查询模板" module="communeAdm" current="template_create" pageJs=pageJsContent>
<form class="form-inline" action="/market/eventGame/list" method="get">
<@com.textInputTwoDate "eventGameQueryForm.playDateStart" "eventGameQueryForm.playDateEnd" "style=\"margin-left: 5px;\"" "赛事时间"/>
<@com.textInput "eventGameQueryForm.courseId" "style=\"margin-left: 5px;\"" "球场id" "text"/>
<button type="submit" class="btn btn-primary">查询</button>
</form>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th class="span1">赛事名称</th>
<th class="span4">打球时间</th>
<th class="span4">创建人</th>
<th class="span4">创建时间</th>
<th style="text-align: center;"><i class="icon-wrench"></i></th>
</tr>
</thead>
<tbody>
<#list list as item>
<tr>
<td width='300px'>${item.gameName!}</td>
<td>${item.playDate?string("yyyy-MM-dd HH:mm:ss")}</td>
<td>${item.createUser!}</td>
<td>${item.createTime?string("yyyy-MM-dd HH:mm:ss")}</td>
<td><a title='${item.id}' href="/market/eventGame/edit?id=${item.id}">编辑</a></td>
</tr>
</#list>
</tbody>
</table>
<div class="pagination pagination-right">
<ul>
<@paginator.first />
<@paginator.previous />
<@paginator.numbers separator=""/>
<@paginator.next />
<@paginator.last />
</ul>
<@paginator.statistics />
</div>
<div class="modal hide fade" id="myModal">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h3>查询球场</h3>
</div>
<div class="modal-body" id='courseSelector'>
<div class="input-append">
<input type="text" name="courseName" value="" placeholder="球场名称" class="input-medium" autocomplete="off"/>
<button id="J_queryBtn" class="btn" data-toggle="modal" >查询</button>
</div>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>ID</th>
<th>球场名称</th>
<th width=14%>目的地</th>
<th width=14%>状态</th>
<th style="text-align: center;"><i class="icon-wrench"></i></th>
</tr>
</thead>
<tbody id="tableList">
</tbody>
</table>
<div class="pagination pagination-mini">
<ul>
</ul>
</div>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">关闭</button>
</div>
</div>
<script id="table_course" type="text/x-handlebars-template">
{{#each body}}
<tr>
<td>{{id}}</td>
<td><a href="/golf/course/edit?id={{id}}" target="_blank">{{name}}</a></td>
<td>{{districtName}}</td>
<td>{{statusShow status}}</td>
<td><a class="J_courseSelctorBtn" data-id="{{id}}" >选择</a></td>
</tr>
{{/each}}
</script>
</@com.layout>
<#assign pageJsContent>
<script src="${staticServer}/js/lib/highcharts.js"></script>
<script src="${staticServer}/js/app/myHighcharts.js"></script>
<script src="${staticServer}/js/app/statistics.js"></script>
<script>
</script>
</#assign>
<#assign pageCssContent>
<link rel="stylesheet" href='${staticServer}/css/app/statistics.css'/>
<style>
</style>
</#assign>
<@com.layout title="用户下单行为分析" module="communeAdm" current="userOrderBehaviour_listEventGame" pageCss=pageCssContent pageJs=pageJsContent>
<form id="J_Form" class="form-inline search-box" action="/userOrderBehaviour/listEventGame" method="get">
<table class="table table-bordered table-striped widthShow">
<thead>
<tr>
<th>序号</th>
<th>赛事名称</th>
<th>所在球场</th>
<th>赛事日期</th>
<th>创建人</th>
<th>创建时间</th>
<th>编辑</th>
</tr>
</thead>
<tbody class="J_shift">
<#list list as item>
<tr>
<td>1</td>
<td>${item.gameName!}</td>
<td>${item.courseName!}</td>
<td>${item.playDate!}</td>
<td>${item.createUser!} </td>
<td>${item.createDate!} </td>
<td><a href="/userOrderBehaviour/editEventGame?id=${item.id}">编辑</a></td>
</tr>
</#list>
</tbody>
</table>
<div class="pagination pagination-right" style="width:1100px;">
<ul class="pagination pagination-right">
<@paginator.first />
<@paginator.previous />
<@paginator.numbers separator=""/>
<@paginator.next />
<@paginator.last />
</ul>
<@paginator.statistics />
</div>
</div>
</form>
</@com.layout>
\ No newline at end of file
<#assign pageJsContent>
<script type="text/javascript">
</script>
</#assign>
<@com.layout title="资源编辑" module="communeAdm" current="userOrderBehaviour_recommendPlayer" pageJs=pageJsContent>
<form action='/market/eventGame/recommendPlayerPost' method="post">
已报名客户手机号:<input type="text" name="playerPhone" value='${playerPhone!}'/>
<input type=submit name="submit1" value="推荐" style='margin-bottom: 10px;'>
</form>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th class="span1">客户姓名</th>
<th class="span4">客户手机号</th>
<th class="span4">与已报名用户打球次数</th>
<th class="span4">最近一次打球时间</th>
</tr>
</thead>
<tbody>
<#list list as item>
<tr>
<td width='500px'>${item.playerName!}</td>
<td width='500px'>${item.mobilePhone!}</td>
<td width='500px'>${item.times!}</td>
<td width='500px'>${item.latestTime?string("yyyy-MM-dd")}</td>
</tr>
</#list>
</tbody>
</table>
</@com.layout>
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