/**
* @Project: hehenian-mobile
* @Package com.hehenian.mobile.web.controller.product
* @Title: ProductController.java
* @Description: 产品
*
* @author: zhanbmf
* @date 2015-3-30 下午3:58:19
* @Copyright: HEHENIAN Co.,Ltd. All rights reserved.
* @version V1.0
*/
package com.hehenian.mobile.web.controller.product;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.net.URLDecoder;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.math.NumberUtils;
import org.apache.commons.lang.time.DateFormatUtils;
import org.apache.commons.lang.time.DateUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.hehenian.agreement.common.share.FileClient;
import com.hehenian.biz.common.account.IPersonService;
import com.hehenian.biz.common.account.IUserInfoService;
import com.hehenian.biz.common.account.IUserService;
import com.hehenian.biz.common.account.IUserThirdPartyService;
import com.hehenian.biz.common.account.dataobject.AccountUserDo;
import com.hehenian.biz.common.account.dataobject.InviteCodeDo;
import com.hehenian.biz.common.account.dataobject.LoginInfoRelate;
import com.hehenian.biz.common.account.dataobject.PersonDo;
import com.hehenian.biz.common.account.dataobject.UserThirdPartyDo;
import com.hehenian.biz.common.base.result.IResult;
import com.hehenian.biz.common.colorlife.ColorLifeBuyService;
import com.hehenian.biz.common.identifycode.IIdentifyCodeService;
import com.hehenian.biz.common.wygj.ILotteryService;
import com.hehenian.biz.common.wygj.IOffsetService;
import com.hehenian.biz.common.wygj.IParkingFeeService;
import com.hehenian.biz.common.wygj.IPropertyManagementFeeService;
import com.hehenian.biz.common.wygj.SysCodeService;
import com.hehenian.biz.common.wygj.dataobject.LotteryInfo;
import com.hehenian.biz.common.wygj.dataobject.LotteryPrize;
import com.hehenian.biz.common.wygj.dataobject.OffsetDetailVo;
import com.hehenian.biz.common.wygj.dataobject.OffsetRecordsDo;
import com.hehenian.biz.common.wygj.dataobject.ParkingDetailDo;
import com.hehenian.biz.common.wygj.dataobject.ParkingFeeDo;
import com.hehenian.biz.common.wygj.dataobject.PropertyManagementDetailDo;
import com.hehenian.biz.common.wygj.dataobject.PropertyManagementFeeDo;
import com.hehenian.common.annotations.RequireLogin;
import com.hehenian.common.constants.HHNConstants;
import com.hehenian.common.session.SessionProvider;
import com.hehenian.common.session.cache.SessionCache;
import com.hehenian.common.utils.CommonUtil;
import com.hehenian.common.utils.ResponseUtils;
import com.hehenian.mobile.common.constants.WebConstants;
import com.hehenian.mobile.common.utils.ColorLifeUtils;
import com.hehenian.mobile.common.utils.CommonUtils;
import com.hehenian.mobile.web.controller.BaseController;
import com.hhn.hessian.invest.IInvestProductService;
import com.hhn.pojo.ProductRate;
import com.hhn.util.BaseReturn;
@Controller
@RequestMapping(value = "/product")
public class ProductController extends BaseController {
protected Logger logger = Logger.getLogger(this.getClass());
@Autowired
private IInvestProductService investProductService;
@Autowired
private IUserService userService;
@Resource
private SessionCache sessionCache;
@Resource
private SessionProvider session;
@Autowired
private IPersonService personService;
@Autowired
private IUserInfoService userInfoService;
@Autowired
private IUserThirdPartyService userThirdPartyService;
@Autowired
private ColorLifeBuyService colorLifeBuyService;
@Autowired
private IIdentifyCodeService identifyCodeService;
@Autowired
private ILotteryService lotteryService;
@Autowired
private IParkingFeeService parkingFeeService;
@Autowired
private IPropertyManagementFeeService manageFeeService;
@Autowired
private SysCodeService sysCodeService;
@Autowired
private IOffsetService offsetService;
/**
* 落地页channel==1国际物业落地页 : 2表示彩管家落地页
*
* @throws UnsupportedEncodingException
*/
@RequestMapping(value = "index")
public String gj(HttpServletRequest request, HttpServletResponse response) {
int channel = CommonUtils.getChannel(request);
String root = session.getSessionId(request, response);
sessionCache.setAttribute(root, HHNConstants.CHANNEL, channel,
HHNConstants.SESSION_CACHE_TIME);
request.getSession().setAttribute(HHNConstants.CHANNEL, channel);
// 存入cookie
Cookie sessionCookie = new Cookie(HHNConstants.CHANNEL,
String.valueOf(channel));
sessionCookie.setPath("/");
response.addCookie(sessionCookie);
request.setAttribute(WebConstants.CHANNEL_NAME,
CommonUtils.getChannelName(request));
// CookieUtils.addCookie(response, HHNConstants.CHANNEL,
// String.valueOf(channel), "/", ".hehenian.com", -1);
String mobilePhone = request.getParameter("mobilePhone");
request.getSession().setAttribute("mobilePhone", mobilePhone);
if (1 == channel) {
return "product/productGJWY";
} else if (2 == channel) {
Integer loginUserId = super.getCurrentUserId();
AccountUserDo user = null;
PersonDo person = null;
String sign = request.getParameter("sign");
String oa = request.getParameter("oa");
UserThirdPartyDo utp = null;
if (StringUtils.isNotBlank(sign) && StringUtils.isNotBlank(oa)) {
String realName = null;
try {
// realName = new
// String(ObjectUtils.toString(request.getParameter("realName")).getBytes("iso8859-1"),"utf-8");
realName = URLDecoder.decode(ObjectUtils.toString(request
.getParameter("realName")), "utf-8");
// oa = new
// String(ObjectUtils.toString(request.getParameter("oa")).getBytes("iso8859-1"),"utf-8");
oa = URLDecoder.decode(
ObjectUtils.toString(request.getParameter("oa")),
"utf-8");
System.out.println("realName1::"
+ request.getParameter("realName"));
System.out.println("realName2::"
+ URLDecoder.decode(ObjectUtils.toString(request
.getParameter("realName")), "utf-8"));
System.out.println("realName3::" + realName);
System.out.println("realName4::"
+ new String(ObjectUtils.toString(request
.getParameter("realName"))));
System.out.println("realName::" + realName);
System.out.println("oa:::" + oa);
request.getSession().setAttribute("sign", sign);
request.getSession().setAttribute("oa", oa);
sessionCache.setAttribute(root, "oa", oa,
HHNConstants.SESSION_CACHE_TIME);
sessionCache.setAttribute(root, "mobilePhone", mobilePhone,
HHNConstants.SESSION_CACHE_TIME);
String appkey = request.getParameter("appkey");
if (WebConstants.CGJ_APP_KEY.equals(appkey)) {
String MD5Parm = DigestUtils
.md5Hex(WebConstants.CGJ_PASS_KEY + channel
+ mobilePhone + oa + realName);
if (!MD5Parm.equals(sign)) {
return "redirect:/login/index.do";
}
}
} catch (UnsupportedEncodingException e1) {
logger.error("oa账号转码出错");
e1.printStackTrace();
}
utp = userThirdPartyService.getByTheThirdUserName(oa);
request.getSession().setAttribute("utp", utp);
sessionCache.setAttribute(root, "utp", utp,
HHNConstants.SESSION_CACHE_TIME);
if (utp != null) {
user = userService.getById(utp.getUserId().longValue());
person = personService.getByUserId(utp.getUserId()
.longValue());
request.getSession().setAttribute("user", user);
sessionCache.setAttribute(root, "user", user,
HHNConstants.SESSION_CACHE_TIME);
if (person.getAuditStatus() == 3) {
return "redirect:/product/plist.do";
} else {
// 如果用户存在但是没有实名认证成功
return "redirect:/account/realAuth.do";
}
} else {
// 第一步通过手机号验证用户是否已经在合和年注册,如果没有注册转到实名认证
if (!StringUtils.isNotBlank(mobilePhone)) {
return "redirect:/login/index.do";
}
user = userService.findUserByPhone(mobilePhone);
person = personService.getByUserCellPhone(mobilePhone);
if (user == null) {
return "redirect:/product/linkIdentifyCode.do";
} else {
// request.getSession().setAttribute(HHNConstants.SESSION_INFO,
// user);
// // 取缓存登录信息
// sessionCache.setAttribute(root,
// HHNConstants.SESSION_INFO, user,
// HHNConstants.SESSION_CACHE_TIME);
return "redirect:/product/linkPassWord.do";
}
}
}
// to do...
return "redirect:/product/plist.do";
}else if(channel == 0){//官网
return "product/productGW";
}
return "product/productGJWY";
// return "redirect:/login/index.do";
}
/**
* +多宝
*/
@RequestMapping(value = "phb")
public String phb() {
return "product/productHB";
}
/**
* +多宝
* @Description: 产品列表页
* @param request
* @param response
* @author: jiangwmf
* @date 2015-4-23 下午09:02:27
*/
@RequestMapping(value = "pjd")
public String pjd(HttpServletRequest request,HttpServletResponse response){
int channel = CommonUtils.getChannel(request);
int subChannel = NumberUtils.toInt(request.getParameter("subChannel"), 0);
Map<String,Object> channelMap = new HashMap<String, Object>();
channelMap.put("channel", channel);
channelMap.put("sub_channel", subChannel);
BaseReturn baseReturn = investProductService.getProductRateListByChannel(channelMap);
if (baseReturn.getReturnCode() == 0 && baseReturn.getData() != null) {
request.setAttribute("result", baseReturn.getData());
}
return "product/productJD";
}
/**
* +车宝
* @Description: 产品列表页
* @param request
* @param response
* @author: jiangwmf
* @date 2015-4-27 下午09:02:27
*/
@RequestMapping(value = "pjc")
public String pjc(HttpServletRequest request,HttpServletResponse response){
return "product/productJC";
}
/**
* @Description: 产品列表页
* @param request
* @param response
* @author: zhanbmf
* @date 2015-3-30 下午4:32:27
*/
@RequestMapping(value = "plist")
public String plist(HttpServletRequest request, HttpServletResponse response) {
// 是否是彩生活渠道channel=1彩生活渠道|0官方渠道 物业国际普通通道 员工通道
// 根据渠道判断是国际物业还是彩管家
int channel = CommonUtils.getChannel(request);
int subChannel = NumberUtils.toInt(request.getParameter("subChannel"),
0);
long userId = super.getUserId();
Map<String,Object> channelMap = new HashMap<String, Object>();
channelMap.put("channel", channel);
channelMap.put("sub_channel", subChannel);
// 如果是物业国际员工通道channel = 1(物业国际) | subChannel = 1(员工通道),则要检查验证码 to do...
if (channel == 1 && subChannel == 1 && userId > 0) {
InviteCodeDo inviteDO = userService
.findInviteCodeByDO(new InviteCodeDo(userId));
// 如果不是员工
if (inviteDO == null) {
return "redirect:/account/invite.do";
}
}
if(2 == channel){//红包理财
channelMap.put("channel", 2);
channelMap.put("sub_channel", 0);
}
BaseReturn baseReturn = investProductService
.getProductRateListByChannel(channelMap);
if (baseReturn.getReturnCode() == 0 && baseReturn.getData() != null) {
request.setAttribute("result", baseReturn.getData());
}
if(2 == channel){//红包理财
Integer userid = new Long(userId).intValue();
UserThirdPartyDo upo = userThirdPartyService.getByUserId(userid);
if (upo != null) {
String oauser = upo.getThethirdusername();
System.out.println("oauser::::" + oauser);
// 余额
Float balance = ColorLifeUtils.getEmpBalance(oauser);
request.setAttribute("balance", new BigDecimal(balance));
// 投资金额
BigDecimal principal = colorLifeBuyService
.queryInvestment(userid);
// 待收收益
BigDecimal interested = colorLifeBuyService
.queryInterested(userid);
// 累计收益
BigDecimal interest = colorLifeBuyService.queryInterest(userid);
request.setAttribute("principal", principal);
request.setAttribute("interested", interested);
request.setAttribute("interest", interest);
}
return "product/productHB";
}
if(channel == 1 && subChannel == 2){//多宝
return "product/productJD";
}else if(channel == 1 && subChannel == 3){//车宝
return "product/productJC";
}
request.setAttribute(HHNConstants.CHANNEL, channel);
return "product/productList";//薪宝
}
/**
* 产品详情
*
* @param request
* @param response
* @return
* @author: zhanbmf
* @date 2015-3-30 下午4:37:58
*/
@RequestMapping(value = "detail", method = RequestMethod.GET)
public String pdetail(HttpServletRequest request,
HttpServletResponse response) {
int channel = CommonUtils.getChannel(request);
int pid = NumberUtils.toInt(request.getParameter("pid"), -1);
if (pid < 0) {
return "redirect:/product/plist.do";
}
// 获取登录情况
request.setAttribute("isLogin", super.getUserId() > 0);
BaseReturn baseReturn = investProductService.getProductRateById(pid);
if (baseReturn.getReturnCode() == 0 && baseReturn.getData() != null) {
request.setAttribute("result", baseReturn.getData());
} else {
return "redirect:/product/plist.do";
}
// 获取近期交易记录
Map<String,Object> qMap = new HashMap<String,Object>();
qMap.put("rate_id", pid);
qMap.put("beginDate", DateFormatUtils.format(
DateUtils.addDays(new Date(), -3), "yyyyMMdd"));
qMap.put("trade_type", "INVESTMENT");
qMap.put("channel", channel);
qMap.put("numNow", 0);
qMap.put("pageSize", 10);
BaseReturn recentData = investProductService.getRecentList(qMap);
if (recentData.getReturnCode() == 0 && recentData.getData() != null) {
List list = (List) recentData.getData();
for (int i = 0; i < list.size(); i++) {
Map item = (Map) list.get(i);
item.put("cellPhone", CommonUtil.encodeM(ObjectUtils
.toString(item.get("cellPhone"))));
item.put("trade_time", DateFormatUtils.format(
(Date) item.get("trade_time"), "yyyy-MM-dd HH:mm"));
}
request.setAttribute("recentList", list);
}
return "product/productDetail";
}
/**
* 查询默认冲抵物业费地址和停车费车牌信息
* @param request
* @param response
* @return
*/
@RequireLogin
@RequestMapping(value = "queryDefaultOffset")
public String queryDefaultOffset(HttpServletRequest request,HttpServletResponse response) {
long userId = super.getUserId();
int pid = NumberUtils.toInt(request.getParameter("pid"), -1);
//检查是否存在冲抵物业费地址和停车费车牌信息
//通过用户id和产品pid 查询
BaseReturn baseReturn = investProductService.getProductRateById(pid);
if(baseReturn.getReturnCode() != 0 || baseReturn.getData() == null) {
return "redirect:/product/plist.do";
}
ProductRate pr = (ProductRate)baseReturn.getData();
request.setAttribute("product", pr);
if(pr.getSub_channel()==2){//多宝
PropertyManagementDetailDo offset= manageFeeService.getDefaultByUserId(new Long(userId).intValue());
if(offset !=null) {
//1.第一种方案,选择默认的冲抵信息,跳转到购买页
try {
//购买的产品id、冲抵信息id
response.sendRedirect("/finance/prepayCB.do?pid="+pid+"&offsetId="+offset.getId());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}else{
try {
//购买的产品id、冲抵信息id
response.sendRedirect("/product/setOffset.do?from=0&pid="+pid);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}else if(pr.getSub_channel()==3){//车宝
//选择默认地址
ParkingDetailDo offset = parkingFeeService.getDefaultByUserId(new Long(userId).intValue());
if(offset !=null) {
//1.第一种方案,选择默认的冲抵信息,跳转到购买页
try {
//购买的产品id、冲抵信息id
response.sendRedirect("/finance/prepayCB.do?pid="+pid+"&offsetId="+offset.getId());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}else{
try {
//购买的产品id、冲抵信息id
response.sendRedirect("/product/setOffset.do?from=0&pid="+pid);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
return null;
}
/**
* 添加冲抵信息
* @param request
* @param response
* @return
*/
@RequireLogin
@RequestMapping(value = "setOffset")
public String setOffset(HttpServletRequest request,HttpServletResponse response) {
//from:
//0:立即购买-设置默认冲抵信息
//1:我的账户-增加冲抵信息
//2: 购买修改-增加冲抵信息
int pid = NumberUtils.toInt(request.getParameter("pid"), -1);
BaseReturn baseReturn = investProductService.getProductRateById(pid);
if(baseReturn.getReturnCode() != 0 || baseReturn.getData() == null) {
return "redirect:/product/plist.do";
}
ProductRate pr = (ProductRate)baseReturn.getData();
request.setAttribute("product", pr);
String from = request.getParameter("from");
request.setAttribute("pid", pid);
request.setAttribute("from", from);
return "product/productOffsetInfoSet";
}
/**
* 设置默认冲抵停车费信息
* @param request
* @param response
* @return
*/
@RequireLogin
@RequestMapping(value = "addOffset")
public void addOffset(HttpServletRequest request,HttpServletResponse response) {
JSONObject jsonObject = new JSONObject();
int pid = NumberUtils.toInt(request.getParameter("pid"), -1);
long userId = super.getUserId();
request.getSession().setAttribute("pid", pid);
long community = request.getParameter("community")==null?-1L:Long.parseLong(request.getParameter("community"));//小区编号
String plateNo= request.getParameter("plateNo");//停车卡编号
String building = request.getParameter("building");
String roomno = request.getParameter("roomno");
String theowner = request.getParameter("theOwner");
BaseReturn baseReturn = investProductService.getProductRateById(pid);
if(baseReturn.getReturnCode() != 0 || baseReturn.getData() == null) {
jsonObject.put("result", -1);
ResponseUtils.renderText(response, null, jsonObject.toString());
return;
}
ProductRate pr = (ProductRate)baseReturn.getData();
request.setAttribute("product", pr);
if(pr.getSub_channel()==3){//车宝
//通过小区编号和停车卡号去基础表 查询
//检查冲抵信息基础表中是否存在设置的信息,
ParkingFeeDo baseData = parkingFeeService.getByParams(community,plateNo);
if(baseData!=null){
//校验改地址物业费是否为0
if(baseData.getParking_fee()==0){
jsonObject.put("result", 3);
ResponseUtils.renderText(response, null, jsonObject.toString());
return;
}
ParkingDetailDo parkingFeeDetail = new ParkingDetailDo();
//查询该用户下是否存在该产品的冲抵信息
parkingFeeDetail.setPlate_number(plateNo);
parkingFeeDetail.setMainaddressid(community);
//校验是否已经设置过该地址
ParkingDetailDo p = parkingFeeService.getDetailByParams(community, plateNo,new Long(userId).intValue());
if(p!=null){
jsonObject.put("result", 4);
ResponseUtils.renderText(response, null, jsonObject.toString());
return;
}
//校验改地址是否已经参加活动
OffsetRecordsDo offset = offsetService.getParkingOffsetJoinEndDate(community, plateNo);
if(offset!=null){//存在则通过detailid查询offsetrecords
jsonObject.put("result", 2);
jsonObject.put("enddate", offset.getEnddate());
ResponseUtils.renderText(response, null, jsonObject.toString());
return;
}
parkingFeeDetail.setTheowner(baseData.getTheowner());
parkingFeeDetail.setUser_id(new Long(userId).intValue());
parkingFeeDetail.setThe_arage_type(baseData.getThe_arage_type());
parkingFeeDetail.setCar_emissions(baseData.getCar_emissions());
parkingFeeDetail.setInfotype(0);//默认未冲抵
int count = parkingFeeService.getParkingDetailCounts(new Long(userId).intValue());
//校验通过则增加记录
if(count > 0){
parkingFeeDetail.setDefaultset(0);
}else{//默认
parkingFeeDetail.setDefaultset(1);
}
int num = parkingFeeService.insertParkingDetail(parkingFeeDetail);
if(num>0){
jsonObject.put("result", 0);//插入成功
ResponseUtils.renderText(response, null, jsonObject.toString());
return;
}else{
jsonObject.put("result", -1);//添加冲抵停车费信息失败
ResponseUtils.renderText(response, null, jsonObject.toString());
return;
}
}else{
jsonObject.put("result", 1);//冲抵信息错误,在基础表中找不到
ResponseUtils.renderText(response, null, jsonObject.toString());
return;
}
}else if(pr.getSub_channel()==2){
//+多宝
PropertyManagementFeeDo baseData = manageFeeService.getByParams(community,building,roomno,theowner);
if(baseData!=null){
//校验改地址物业费是否为0
if(baseData.getProperty_fee()==0){
jsonObject.put("result", 3);
ResponseUtils.renderText(response, null, jsonObject.toString());
return;
}
PropertyManagementDetailDo propertyManageFeeDetail = new PropertyManagementDetailDo();
propertyManageFeeDetail.setMainaddressid(community);
propertyManageFeeDetail.setBuilding(building);
propertyManageFeeDetail.setRoomnum(roomno);
//校验是否已经设置过该地址
PropertyManagementDetailDo p = manageFeeService.getDetailByParams(community,roomno ,new Long(userId).intValue());
if(p!=null){
jsonObject.put("result", 4);
ResponseUtils.renderText(response, null, jsonObject.toString());
return;
}
//校验改地址是否已经参加活动
OffsetRecordsDo offset = offsetService.getManageOffsetJoinEndDate(community, roomno);
if(offset!=null){//存在则通过detailid查询offsetrecords
jsonObject.put("result", 2);
jsonObject.put("enddate", offset.getEnddate());
ResponseUtils.renderText(response, null, jsonObject.toString());
return;
}
propertyManageFeeDetail.setTheowner(baseData.getTheowner());
propertyManageFeeDetail.setUser_id(new Long(userId).intValue());
propertyManageFeeDetail.setInfotype(0);//默认未冲抵
//查询该用户下是否存在该产品的冲抵信息
int count = manageFeeService.getPropertyManagementCounts(new Long(userId).intValue());
//校验通过则增加记录
if(count > 0){
propertyManageFeeDetail.setDefaultset(0);
}else{//默认
propertyManageFeeDetail.setDefaultset(1);
}
int num = manageFeeService.insertManageDetail(propertyManageFeeDetail);
if(num>0){
jsonObject.put("result", 0);//插入成功
ResponseUtils.renderText(response, null, jsonObject.toString());
return;
}else{
jsonObject.put("result", 2);//添加冲抵物业费信息失败
ResponseUtils.renderText(response, null, jsonObject.toString());
return;
}
}else{
jsonObject.put("result", 1);//冲抵信息错误,在基础表中找不到
ResponseUtils.renderText(response, null, jsonObject.toString());
return;
}
}
}
/**
* 购买-修改-冲抵信息管理
* @param request
* @param response
* @return
*/
@RequireLogin
@RequestMapping(value = "managerOffset")
public String managerOffset(HttpServletRequest request,HttpServletResponse response) {
long userId = super.getUserId();
int pid = NumberUtils.toInt(request.getParameter("pid"), -1);
BaseReturn baseReturn = investProductService.getProductRateById(pid);
if(baseReturn.getReturnCode() != 0 || baseReturn.getData() == null) {
return "redirect:/product/plist.do";
}
ProductRate pr = (ProductRate)baseReturn.getData();
request.setAttribute("product", pr);
if(pr.getSub_channel()==3){
//根据用户id、产品id查询冲抵信息
List<ParkingDetailDo> offsetList = parkingFeeService.listParkingDetailsByUserId(new Long(userId).intValue());
List<OffsetDetailVo> l = new ArrayList<OffsetDetailVo>();
for (ParkingDetailDo p:offsetList) {
OffsetDetailVo pdv = new OffsetDetailVo();
pdv.setId(p.getId());
pdv.setMainaddressid(p.getMainaddressid());
pdv.setPlate_number(p.getPlate_number());
pdv.setThe_arage_type(p.getThe_arage_type());
pdv.setInfotype(p.getInfotype());
pdv.setUser_id(p.getUser_id());
pdv.setDefaultset(p.getDefaultset());
pdv.setCar_emissions(p.getCar_emissions());
pdv.setTheowner(p.getTheowner());
pdv.setAddressDesc(sysCodeService.getByCommunityCode(p.getMainaddressid().toString()).replace(",",""));
l.add(pdv);
}
request.setAttribute("pid", pid);
request.setAttribute("offsetList", l);
request.setAttribute("referer", request.getHeader("referer"));
//return "product/buyOffset";
return "product/productOffsetManage";
}else if(pr.getSub_channel()==2){
//根据用户id、产品id查询冲抵信息
List<PropertyManagementDetailDo> offsetList = manageFeeService.listPropertyManagementsByUserId(new Long(userId).intValue());
List<OffsetDetailVo> l = new ArrayList<OffsetDetailVo>();
for (PropertyManagementDetailDo p:offsetList) {
OffsetDetailVo pdv = new OffsetDetailVo();
pdv.setId(p.getId());
pdv.setMainaddressid(p.getMainaddressid());
pdv.setBuilding(p.getBuilding());
pdv.setRoomnum(p.getRoomnum());
pdv.setInfotype(p.getInfotype());
pdv.setUser_id(p.getUser_id());
pdv.setDefaultset(p.getDefaultset());
pdv.setTheowner(p.getTheowner());
pdv.setAddressDesc(sysCodeService.getByCommunityCode(p.getMainaddressid().toString()).replace(",",""));
l.add(pdv);
}
request.setAttribute("pid", pid);
request.setAttribute("offsetList", l);
request.setAttribute("referer", request.getHeader("referer"));
//return "product/buyOffset";
return "product/productOffsetManage";
}else
return "redirect:/product/plist.do";
}
/**
* 设置默认冲抵信息
* @param request
* @param response
* @return
*/
@RequestMapping(value = "changeDefaultOffset")
@Deprecated
public void changeDefaultOffset(HttpServletRequest request,HttpServletResponse response) {
Map<String,Object> map = new HashMap<String, Object>();
JSONObject jsonObject = new JSONObject();
long userId = super.getUserId();
String plateNo = request.getParameter("plateNo");
map.put("userId", String.valueOf(userId));
map.put("plateNo", plateNo);
//根据用户id、产品id查询冲抵信息
int count = parkingFeeService.updateDefaultByPlateNo(new Long(userId).intValue(),plateNo);
if(count > 0){
jsonObject.put(0, "success");//成功
}else{
jsonObject.put(1, "fail");//
}
ResponseUtils.renderJson(response, ResponseUtils.UTF8, jsonObject.toString());
}
@RequestMapping(value = "checkOffsetJoin")
public void checkOffsetJoin(HttpServletRequest request,HttpServletResponse response){
JSONObject jsonObject = new JSONObject();
int pid = NumberUtils.toInt(request.getParameter("pid"), -1);
BaseReturn baseReturn = investProductService.getProductRateById(pid);
if(baseReturn.getReturnCode() != 0 || baseReturn.getData() == null) {
jsonObject.put("result", -1);
}
ProductRate pr = (ProductRate)baseReturn.getData();
request.setAttribute("product", pr);
String roomOrPlateNo = request.getParameter("roomOrPlateNo");
long community = request.getParameter("community")==null?-1L:Long.parseLong(request.getParameter("community"));//小区编号
if(pr.getChannel()==1&&pr.getSub_channel()==3){
OffsetRecordsDo offset = offsetService.getParkingOffsetJoinEndDate(community, roomOrPlateNo);
if(offset!=null){//存在则通过detailid查询offsetrecords
jsonObject.put("result", 1);
jsonObject.put("enddate", offset.getEnddate());
ResponseUtils.renderText(response, null, jsonObject.toString());
return;
}
}else if(pr.getChannel()==1&&pr.getSub_channel()==2){
//校验改地址是否已经参加活动
OffsetRecordsDo offset = offsetService.getManageOffsetJoinEndDate(community, roomOrPlateNo);
if(offset!=null){//存在则通过detailid查询offsetrecords
jsonObject.put("result", 1);
jsonObject.put("enddate", offset.getEnddate());
ResponseUtils.renderText(response, null, jsonObject.toString());
return;
}
}
jsonObject.put("result", 0);
ResponseUtils.renderText(response, null, jsonObject.toString());
return;
}
/**
* 我的账户-查询冲抵信息列表
* @param request
* @param response
* @return
*/
@RequireLogin
@RequestMapping(value = "queryOffsetList")
public String queryOffsetList(HttpServletRequest request,HttpServletResponse response) {
long userId = super.getUserId();
int pid = NumberUtils.toInt(request.getParameter("pid"), -1);
//区分渠道:我的账户-列表页发起:1,默认列表页发起:0
BaseReturn baseReturn = investProductService.getProductRateById(pid);
if(baseReturn.getReturnCode() != 0 || baseReturn.getData() == null) {
return "redirect:/product/plist.do";
}
ProductRate pr = (ProductRate)baseReturn.getData();
request.setAttribute("product", pr);
if(pr.getSub_channel()==3){
//通过用户id,产品id查询所有的冲抵信息
List<ParkingDetailDo> offsetData = parkingFeeService.listParkingDetailsByUserId(new Long(userId).intValue());
List<OffsetDetailVo> l = new ArrayList<OffsetDetailVo>();
for (ParkingDetailDo p:offsetData) {
OffsetDetailVo pdv = new OffsetDetailVo();
pdv.setId(p.getId());
pdv.setMainaddressid(p.getMainaddressid());
pdv.setPlate_number(p.getPlate_number());
pdv.setThe_arage_type(p.getThe_arage_type());
pdv.setInfotype(p.getInfotype());
pdv.setUser_id(p.getUser_id());
pdv.setDefaultset(p.getDefaultset());
pdv.setCar_emissions(p.getCar_emissions());
pdv.setTheowner(p.getTheowner());
pdv.setAddressDesc(sysCodeService.getByCommunityCode(p.getMainaddressid().toString()).replace(",",""));
l.add(pdv);
}
request.setAttribute("data", l);
request.setAttribute("pid",pid);
return "product/productOffsetList";
}else if(pr.getSub_channel()==2){
//通过用户id,产品id查询所有的冲抵信息
List<PropertyManagementDetailDo> offsetData = manageFeeService.listPropertyManagementsByUserId(new Long(userId).intValue());
List<OffsetDetailVo> l = new ArrayList<OffsetDetailVo>();
for (PropertyManagementDetailDo p:offsetData) {
OffsetDetailVo pdv = new OffsetDetailVo();
pdv.setId(p.getId());
pdv.setMainaddressid(p.getMainaddressid());
pdv.setInfotype(p.getInfotype());
pdv.setUser_id(p.getUser_id());
pdv.setDefaultset(p.getDefaultset());
pdv.setTheowner(p.getTheowner());
pdv.setBuilding(p.getBuilding());
pdv.setRoomnum(p.getRoomnum());
pdv.setAddressDesc(sysCodeService.getByCommunityCode(p.getMainaddressid().toString()).replace(",",""));
l.add(pdv);
}
request.setAttribute("data", l);
request.setAttribute("pid",pid);
return "product/productOffsetList";
}else{
return null;
}
}
/**
* 删除冲抵信息
* @param request
* @param response
* @return
*/
@RequireLogin
@RequestMapping(value = "deleteOffset")
public void deleteOffset(HttpServletRequest request,HttpServletResponse response) {
JSONObject jsonObject = new JSONObject();
int id = Integer.parseInt(request.getParameter("id"));//冲抵id
int pid = NumberUtils.toInt(request.getParameter("pid"), -1);
BaseReturn baseReturn = investProductService.getProductRateById(pid);
if(baseReturn.getReturnCode() != 0 || baseReturn.getData() == null) {
jsonObject.put("result", "1");//
}
ProductRate pr = (ProductRate)baseReturn.getData();
request.setAttribute("product", pr);
//根据用户id、产品id、小区编号、房间编号删除冲抵信息
int count = -1;
if(pr.getChannel()==1 && pr.getSub_channel()==3){
count = parkingFeeService.deleteParkingDetailById(id);
}else if(pr.getChannel()==1 && pr.getSub_channel()==2){
count = manageFeeService.deleteManagerDetailById(id);
}
if(count>0){
jsonObject.put("result", "0");//成功
}else{
jsonObject.put("result", "1");//
}
ResponseUtils.renderText(response, null, jsonObject.toString());
}
@RequireLogin
@RequestMapping(value = "queryAgreement")
@ResponseBody
public void getTradeList(HttpServletRequest request,
HttpServletResponse respones) {
long userId = getUserId();
String fileName = request.getParameter("fileName");
if (StringUtils.isBlank(fileName)) {
return;
}
FileClient fc = new FileClient();
byte[] file = fc.getAgreement(userId, fileName);
// String downFileName = "hhn_" +
// RandomStringUtils.randomAlphanumeric(10) + ".pdf";
try {
respones.setContentType("application/pdf");
// respones.setHeader("content-disposition", "attachment; filename="
// + downFileName);
respones.getOutputStream().write(file);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
String MD5Parm = DigestUtils.md5Hex(WebConstants.CGJ_PASS_KEY
+ "213800138001test2张张");
System.out.println(MD5Parm);
}
@RequestMapping(value = "linkPassWord")
public String linkPassWord(HttpServletRequest request,
HttpServletResponse response) {
// String oa = (String) request.getSession().getAttribute("oa");
// UserThirdPartyDo utd =
// userThirdPartyService.getByTheThirdUserName(oa);
// if(utd == null){
//
// }
String root = session.getSessionId(request, response);
/*
* request.getSession().setAttribute("showMenu", 0);
* sessionCache.setAttribute(root, "showMenu", 0,
* HHNConstants.SESSION_CACHE_TIME);
*/
request.getSession().removeAttribute("utp");
sessionCache.setAttribute(root, "utp", null,
HHNConstants.SESSION_CACHE_TIME);
return "login/checkpassword";
}
@RequestMapping(value = "checkPassWord")
public String checkPassWord(HttpServletRequest request,
HttpServletResponse response) {
JSONObject jsonObject = new JSONObject();
String root = session.getSessionId(request, response);
String password = request.getParameter("password");
String oa = (String) request.getSession().getAttribute("oa");
String mobilePhone = (String) request.getSession().getAttribute(
"mobilePhone");
PersonDo person = personService.getByUserCellPhone(mobilePhone);
AccountUserDo user = userService.findUserByPhone(mobilePhone);
String pwdMd5 = DigestUtils.md5Hex(password + WebConstants.PASS_KEY);
if (pwdMd5.equals(user.getPassword())) {
UserThirdPartyDo upo = null;
upo = userThirdPartyService.getByUserId(user.getId().intValue());
if (upo != null) {
request.getSession().removeAttribute("utp");
sessionCache.setAttribute(root, "utp", null,
HHNConstants.SESSION_CACHE_TIME);
jsonObject.put("msg", "该手机号已经绑定其他OA!");
ResponseUtils.renderText(response, null, jsonObject.toString());
return null;
}
upo = new UserThirdPartyDo();
upo.setThethirdusername(oa);
upo.setUserId(new Long(user.getId()).intValue());
// userThirdPartyService.deleteUserThirdPartyByUserId(new
// Long(user.getId()).intValue());
userThirdPartyService.saveUserThirdParty(upo);
request.getSession().setAttribute("utp", upo);
sessionCache.setAttribute(root, "utp", upo,
HHNConstants.SESSION_CACHE_TIME);
request.getSession().setAttribute("user", user);
// 取缓存登录信息
sessionCache.setAttribute(root, HHNConstants.SESSION_INFO,
user, HHNConstants.SESSION_CACHE_TIME);
if (person.getAuditStatus() == 3) {
jsonObject.put("status", "3");
jsonObject.put("msg", "Y");
ResponseUtils.renderText(response, null, jsonObject.toString());
// return "redirect:/product/plist.do";
} else {
jsonObject.put("status", "2");
jsonObject.put("msg", "Y");
ResponseUtils.renderText(response, null, jsonObject.toString());
// return "redirect:/account/realAuth.do";
}
} else {
jsonObject.put("msg", "密码错误,请重新输入!");
ResponseUtils.renderText(response, null, jsonObject.toString());
}
return null;
}
@RequestMapping(value = "linkIdentifyCode")
public String linkIdentifyCode(HttpServletRequest request,
HttpServletResponse response) {
return "login/identifycode";
}
@RequestMapping(value = "sendIdentifyCode")
public String sendIdentifyCode(HttpServletRequest request,
HttpServletResponse response) {
// 手机验证码校验
JSONObject jsonObject = new JSONObject();
String root = session.getSessionId(request, response);
AccountUserDo user = this.getAccountUser();
String mobilePhone = (String) sessionCache.getSession(root).get(
"mobilePhone");
String s = identifyCodeService.sendIdentifyCode(mobilePhone);
if (StringUtils.isNotBlank(s)) {
// 发送成功
logger.info("向手机号:" + mobilePhone + "发送验证码成功,验证码为:" + s);
jsonObject.put("ret", "0");
} else {
// 发送失败
logger.info("向手机号:" + mobilePhone + "发送验证码失败");
jsonObject.put("ret", "1");
}
ResponseUtils.renderText(response, null, jsonObject.toString());
return null;
}
@RequestMapping(value = "checkIdentifyCode")
public String checkIdentifyCode(HttpServletRequest request,
HttpServletResponse response) {
JSONObject jsonObject = new JSONObject();
// 手机验证码校验
String identifyCode = request.getParameter("identifyCode");
// AccountUserDo user = this.getAccountUser();
String root = session.getSessionId(request, response);
String mobilePhone = (String) sessionCache.getSession(root).get(
"mobilePhone");
String oa = (String) sessionCache.getSession(root).get("oa");
boolean flag = identifyCodeService.checkIdentifyCode(mobilePhone,
identifyCode);
if (!flag) {
// 手机验证码校验不通过
jsonObject.put("msg", "手机验证码不正确");
jsonObject.put("result", "N");
ResponseUtils.renderText(response, "UTF-8",
JSONObject.fromObject(jsonObject).toString());
} else {
// 手机验证码校验通过
// jsonObject.put("message", "手机验证码不正确");
UserThirdPartyDo upo = new UserThirdPartyDo();
try {
AccountUserDo aud = new AccountUserDo();
String loginInfo = mobilePhone;
String pwd = "user" + mobilePhone;
request.setAttribute("mobilePhone", mobilePhone);
aud.setUsername(oa);
aud.setMobilePhone(mobilePhone);
String pwdMd5 = DigestUtils.md5Hex(pwd + WebConstants.PASS_KEY);
aud.setPassword(pwdMd5);
Date now = new Date();
aud.setCreateTime(now);
aud.setSource(13); // 彩管家
IResult result = userService.registerUser(aud);
if (result.isSuccess()) {
Long userId = (Long) result.getModel();
// 获取登录用户userId
LoginInfoRelate loginir = userInfoService.getByLoginInfo(
mobilePhone, LoginInfoRelate.class, true);
if (loginir == null) {
// 如果没有处理老数据,兼容老版本,取一次t_user信息
aud = userService.loginWithPwd(loginInfo, pwdMd5);
} else {
aud = userService.getById(userId);
}
request.getSession().setAttribute("user", aud);
// 取缓存登录信息
sessionCache.setAttribute(root, HHNConstants.SESSION_INFO,
aud, HHNConstants.SESSION_CACHE_TIME);
upo.setUserId(new Long(aud.getId()).intValue());
} else {
logger.error("注册失败");
// 手机验证码校验不通过
jsonObject.put("msg", result.getErrorMessage());
jsonObject.put("result", "N");
ResponseUtils.renderText(response, "UTF-8", JSONObject
.fromObject(jsonObject).toString());
return null;
}
upo.setThethirdusername(oa);
// upo.setUserId(new Long(user.getId()).intValue());
// 待讨论决定
// userThirdPartyService.deleteUserThirdPartyByUserId(new
// Long(userId).intValue());//?????
userThirdPartyService.saveUserThirdParty(upo);
request.getSession().setAttribute("utp", upo);
sessionCache.setAttribute(root, "utp", upo,
HHNConstants.SESSION_CACHE_TIME);
} catch (Exception e) {
logger.error(e.getMessage());
return "redirect:/login/index.do";
}
jsonObject.put("result", "Y");
ResponseUtils.renderText(response, "UTF-8",
JSONObject.fromObject(jsonObject).toString());
}
return null;
}
/**
* 物业国际抽奖页
* @param request
* @return
* @author: chenzhpmf
* @date 2015-5-14 下午9:33:50
*/
@RequestMapping(value = "lottery")
public String lottery(HttpServletRequest request){
// Integer userId = getCurrentUserId();
// Integer number = lotteryService.getLotteryNumber(userId);
// request.setAttribute("number", number);
request.setAttribute("topList",lotteryService.queryTopLotteryList());
return "product/lottery";
}
/**
* 抽奖
* @Description: TODO
* @param request
* @param response
* @throws ParseException
* @author: chenzhpmf
* @date 2015-5-14 下午9:34:03
*/
@RequestMapping(value = "ajaxLuckyDraw")
public void ajaxLuckyDraw(HttpServletRequest request,
HttpServletResponse response) throws ParseException{
Map<String,Object> jsonMap = new HashMap<String,Object>();
String startTime = "2015-05-15 00:00:00"; //活动开始时间
String endTime = "2015-05-30 23:59:59"; //结束时间
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Long currTime = new Date().getTime();
if(currTime<df.parse(startTime).getTime()){
jsonMap.put("status", 0);
jsonMap.put("message", "活动还未开始");
ResponseUtils.renderText(response, "UTF-8",JSONObject.fromObject(jsonMap).toString());
return;
}
if(currTime>df.parse(endTime).getTime()){
jsonMap.put("status", 0);
jsonMap.put("message", "抽奖活动已结束,谢谢参与!");
ResponseUtils.renderText(response, "UTF-8",JSONObject.fromObject(jsonMap).toString());
return;
}
AccountUserDo userDo = getAccountUser();
if(userDo==null || StringUtils.isBlank(ObjectUtils.toString(userDo.getId()))){
jsonMap.put("status", 0);
jsonMap.put("message", "立即登录!参与抽奖");
ResponseUtils.renderText(response, "UTF-8",JSONObject.fromObject(jsonMap).toString());
return;
}
//可抽奖次数
Integer number = lotteryService.getLotteryNumber(userDo.getId().intValue());
if(number==null || number==0){
jsonMap.put("status", 0);
jsonMap.put("message", "您没有抽奖机会了!");
ResponseUtils.renderText(response, "UTF-8",JSONObject.fromObject(jsonMap).toString());
return;
}
LotteryInfo info = new LotteryInfo();
info.setUserId(userDo.getId().intValue());
info.setUserName(userDo.getUsername());
LotteryPrize prize = lotteryService.addLotteryInfo(info);
jsonMap.put("status", 1);
jsonMap.put("id", prize.getId());
jsonMap.put("amount", prize.getPrizeName());
jsonMap.put("done",number-1);
jsonMap.put("userName", userDo.getUsername());
ResponseUtils.renderText(response, "UTF-8", JSONObject.fromObject(jsonMap).toString());
}
@RequestMapping(value = "initLotteryPrize")
public void initLotteryPrize(HttpServletRequest request,
HttpServletResponse response){
String key = request.getParameter("key");
if(StringUtils.isNotBlank(key) && key.equals("wygjadmin")) {
List<LotteryPrize> prizeList = lotteryService.initLotteryPrize();
ResponseUtils.renderText(response, "UTF-8",JSONArray.fromObject(prizeList).toString());
return;
}
ResponseUtils.renderText(response, "UTF-8","{\"ok\"}");
}
@RequireLogin
@RequestMapping(value = "getTopLottery")
public void getTopLottery(HttpServletRequest request,
HttpServletResponse response){
List<LotteryInfo> topList = lotteryService.queryTopLotteryList();
ResponseUtils.renderText(response, "UTF-8",JSONArray.fromObject(topList).toString());
}
}