Commit 495970b0 by Huang Linyu

增加收集归属地信息表, 归属地查询从该表查询,替换之前的从第三方工具查询

parent f282299e
package com.ctrip.fun.golf.dao.basic;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;
import com.ctrip.fun.golf.dao.GenericHibernateDao;
import com.ctrip.fun.golf.domain.basic.District;
import com.ctrip.fun.golf.domain.basic.MobileInfo;
import com.ctrip.fun.golf.domain.basic.OutsideUser;
/**
*
* @author lyhuang
*
*/
public class MobileInfoDao extends GenericHibernateDao<MobileInfo, Integer> {
/**
* 通过手机号码查询手机归属地
* @param mobilePhone
* @return
*/
public MobileInfo findByMobile(String mobilePhone) {
if(mobilePhone.length()>=7){
String mobileSegment = mobilePhone.substring(0,7);
String hsql="from MobileInfo t where t.mobileSegment=:mobileSegment";
Query query = getSession().createQuery(hsql);
query.setParameter("mobileSegment", mobileSegment);
List<MobileInfo> mobileInfoList = query.list();
if(mobileInfoList.size()>0){
return mobileInfoList.get(0);
}
}
return null;
}
}
package com.ctrip.fun.golf.domain.basic;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
/**
* 目的地(同步全球POI)
*
* @author zgsong
*
*/
@Entity
@Table(name = "sys_mobile_info")
public class MobileInfo implements java.io.Serializable {
/**
* serialVersionUID
*/
private static final long serialVersionUID = 8994737205227003385L;
/**
* 主键id
*/
private Integer id;
/**
* 手机号码前缀(前7位)
*/
private String mobileSegment;
/**
* 归属地省份
*/
private String province;
/**
* 归属地城市
*/
private String city;
/**
* 所属电信公司(中国移动,联通,电信)
*/
private String operator;
/**
* 区号
*/
private String areaCode;
/**
* 邮编
*/
private String zipCode;
@Id
@Column(name = "ID", unique = true)
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(name = "mobileSegment")
public String getMobileSegment() {
return mobileSegment;
}
public void setMobileSegment(String mobileSegment) {
this.mobileSegment = mobileSegment;
}
@Column(name = "province")
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
@Column(name = "city")
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
@Column(name = "operator")
public String getOperator() {
return operator;
}
public void setOperator(String operator) {
this.operator = operator;
}
@Column(name = "areaCode")
public String getAreaCode() {
return areaCode;
}
public void setAreaCode(String areaCode) {
this.areaCode = areaCode;
}
@Column(name = "zipCode")
public String getZipCode() {
return zipCode;
}
public void setZipCode(String zipCode) {
this.zipCode = zipCode;
}
@Override
public String toString() {
return "MobileInfo{" +
"id=" + id +
", mobileSegment='" + mobileSegment + '\'' +
", province='" + province + '\'' +
", city='" + city + '\'' +
", operator='" + operator + '\'' +
", areaCode='" + areaCode + '\'' +
", zipCode='" + zipCode + '\'' +
'}';
}
}
......@@ -93,6 +93,7 @@ import com.ctrip.fun.common.vo.user.WeChatUserBean;
import com.ctrip.fun.common.vo.user.WeChatUserResultBean;
import com.ctrip.fun.common.vo.user.WeChatUserValidateMobileBean;
import com.ctrip.fun.golf.dao.basic.DistrictDao;
import com.ctrip.fun.golf.dao.basic.MobileInfoDao;
import com.ctrip.fun.golf.dao.basic.OperationMessageDao;
import com.ctrip.fun.golf.dao.basic.OutsideUserDao;
import com.ctrip.fun.golf.dao.basic.SmsDao;
......@@ -115,6 +116,7 @@ import com.ctrip.fun.golf.dao.user.UserExtDao;
import com.ctrip.fun.golf.dao.user.UserTokenDao;
import com.ctrip.fun.golf.dao.user.UserVerifyCodeDao;
import com.ctrip.fun.golf.dao.user.VipMemberDiscountDao;
import com.ctrip.fun.golf.domain.basic.MobileInfo;
import com.ctrip.fun.golf.domain.basic.OperationMessage;
import com.ctrip.fun.golf.domain.basic.OutsideUser;
import com.ctrip.fun.golf.domain.basic.Sms;
......@@ -218,7 +220,7 @@ public class UserService {
private VipMemberDiscountDao vipmemberDiscountDao = null;
private MobileInfoDao mobileInfoDao;
/**
......@@ -1053,13 +1055,7 @@ public class UserService {
userExt.setHandicap(23);
if (checkValidMobileNo(request.getMobilePhone())) {
try {
//UserPhoneBean userPhoneBean = this.getCity(request.getMobilePhone());
userExt.setCity("其它");
userExt.setProvince("其它");
} catch (Exception e) {
logger.error(e.getMessage());
}
setProvinceCity(request.getMobilePhone(), userExt);
}
userExtDao.save(userExt);
this.relationVoteUser(request.getMobilePhone(), request.getMobilePhone());
......@@ -1143,13 +1139,7 @@ public class UserService {
userExt.setNickName(nickName);
// 使用手机号获取的城市省份信息
if (checkValidMobileNo(request.getMobilePhone())) {
try {
UserPhoneBean userPhoneBean = this.getCity(request.getMobilePhone());
userExt.setCity(userPhoneBean.getCity());
userExt.setProvince(userPhoneBean.getProvince());
} catch (Exception e) {
logger.error(e.getMessage());
}
setProvinceCity(request.getMobilePhone(), userExt);
}
userExt.setCountry(request.getCountry());
userExt.setHeadImgUrl(request.getHeadImgUrl());
......@@ -1168,6 +1158,17 @@ public class UserService {
this.relationVoteUser(request.getMobilePhone(), request.getMobilePhone());
}
private void setProvinceCity(String mobilePhone, UserExt userExt) {
MobileInfo mobileInfo = mobileInfoDao.findByMobile(mobilePhone);
if(mobileInfo!=null){
userExt.setCity(mobileInfo.getCity());
userExt.setProvince(mobileInfo.getProvince());
}else{
userExt.setCity("其他");
userExt.setProvince("其他");
}
}
/**
* 关闭5210帐号
*/
......@@ -2532,6 +2533,14 @@ public class UserService {
}
}
/**
* 由于第三方工具拒绝提供服务, 该方法弃用
* @param mobileNo
* @return
* @throws IllegalNameException
* @throws IOException
*/
@Deprecated
public UserPhoneBean getCity(String mobileNo) throws IllegalNameException, IOException {
Request<String> request = new Request<String>();
request.setBody(mobileNo);
......@@ -3170,13 +3179,21 @@ public class UserService {
public void setVipmemberDiscountDao(VipMemberDiscountDao vipmemberDiscountDao) {
this.vipmemberDiscountDao = vipmemberDiscountDao;
}
public MobileInfoDao getMobileInfoDao() {
return mobileInfoDao;
}
public void setMobileInfoDao(MobileInfoDao mobileInfoDao) {
this.mobileInfoDao = mobileInfoDao;
}
public static boolean initialized = false;
private byte[] decrypt(byte[] content, byte[] keyByte, byte[] ivByte) throws InvalidAlgorithmParameterException {
initialize();
......
......@@ -32,6 +32,10 @@
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean name="mobileInfoDao" class="com.ctrip.fun.golf.dao.basic.MobileInfoDao">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean name="entityImageDao" class="com.ctrip.fun.golf.dao.basic.EntityImageDao">
<property name="sessionFactory" ref="sessionFactory"></property>
......
......@@ -173,6 +173,7 @@
<mapping class="com.ctrip.fun.golf.domain.basic.SignConfig" />
<mapping class="com.ctrip.fun.golf.domain.basic.SignLog" />
<mapping class="com.ctrip.fun.golf.domain.basic.MobileInfo" />
<mapping class="com.ctrip.fun.golf.domain.basic.LuckActivity" />
<mapping class="com.ctrip.fun.golf.domain.basic.LuckStock" />
......
......@@ -81,6 +81,7 @@
<property name="clientConfigDao" ref="clientConfigDao" />
<property name="integralConfigDao" ref="integralConfigDao" />
<property name="vipmemberDiscountDao" ref="vipmemberDiscountDao" />
<property name="mobileInfoDao" ref="mobileInfoDao" />
</bean>
<bean name="userIpBlackListService"
......
package com.ctrip.fun.golf.dao.basic;
import static org.junit.Assert.*;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.ctrip.fun.golf.domain.basic.MobileInfo;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath*:*.spring.xml"})
public class MobileInfoDaoTest {
@Autowired
private MobileInfoDao mobileInfoDao;
@Test
public void testFindByMobile() {
MobileInfo mobileInfo = mobileInfoDao.findByMobile("18014001401");
System.out.println(mobileInfo.toString());
}
}
......@@ -21,11 +21,13 @@ import com.ctrip.fun.common.vo.order.EventCustomerInfoBean;
import com.ctrip.fun.common.vo.order.EventCustomerInfoQuery;
import com.ctrip.fun.common.vo.order.OrderStatusBitEnum;
import com.ctrip.fun.common.vo.product.BuyVoucherActivityQuery;
import com.ctrip.fun.golf.dao.basic.MobileInfoDao;
import com.ctrip.fun.golf.dao.market.EventGameDao;
import com.ctrip.fun.golf.dao.market.EventGameGroupDao;
import com.ctrip.fun.golf.dao.market.EventGamePlayerDao;
import com.ctrip.fun.golf.dao.order.OrderDao;
import com.ctrip.fun.golf.dao.product.BuyVoucherActivityDao;
import com.ctrip.fun.golf.domain.basic.MobileInfo;
import com.ctrip.fun.golf.domain.market.EventGameGroup;
import com.ctrip.fun.golf.domain.order.Order;
import com.ctrip.fun.golf.domain.product.BuyVoucherActivity;
......@@ -60,6 +62,8 @@ public class UserOrderBehaviourStatisticsDaoTest {
@Autowired
private CommuneOrderService communeOrderService;
public static void main(String[] args) {
int[] status = new int[]{23,100,20,276824087,19,108,268446996,0,276824083,293601303,16777239,268446999,12,3,96,268444944,4,268444947,16,276824067,99,276831511,5395,293608727,268447076,276835607,276829459,5399,16784663};
for(int sta:status){
......
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