package com.hehenian.biz.component.account.impl;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.hehenian.biz.common.account.dataobject.AccountUserDo;
import com.hehenian.biz.common.account.dataobject.InviteCodeDo;
import com.hehenian.biz.common.account.dataobject.MaterialsAuth;
import com.hehenian.biz.common.account.dataobject.PersonDo;
import com.hehenian.biz.common.account.dataobject.PhoneVerifyDo;
import com.hehenian.biz.common.account.dataobject.UserBindDo;
import com.hehenian.biz.common.account.dataobject.WorkAuth;
import com.hehenian.biz.common.base.result.IResult;
import com.hehenian.biz.common.exception.BusinessException;
import com.hehenian.biz.component.account.IPhoneVerifyComponent;
import com.hehenian.biz.component.account.IUserComponent;
import com.hehenian.biz.dal.account.IInviteCodeDao;
import com.hehenian.biz.dal.account.IMaterialsAuthDao;
import com.hehenian.biz.dal.account.IPersonDao;
import com.hehenian.biz.dal.account.IUserBindDao;
import com.hehenian.biz.dal.account.IUserDao;
import com.hehenian.biz.dal.account.IWorkAuthDao;
@Component("userComponent")
public class UserComponentImpl implements IUserComponent {
private static final Logger LOGGER = Logger.getLogger(UserComponentImpl.class);
@Autowired
private IUserDao userDao;
@Autowired
private IPersonDao personDao;
@Autowired
private IUserBindDao userBindDao;
@Autowired
private IInviteCodeDao inviteCodeDao;
@Autowired
private IPhoneVerifyComponent phoneVerifyComponent;
@Autowired
private IWorkAuthDao workAuthDao;
@Autowired
private IMaterialsAuthDao materialsAuthDao;
@Override
public AccountUserDo getById(Long id) {
return userDao.getById(id);
}
@Override
public Boolean updateAmount(Double usableSum, Double freezeSum, Long userId) {
AccountUserDo userDo = new AccountUserDo();
userDo.setUsableSum(usableSum);
userDo.setFreezeSum(freezeSum);
userDo.setId(userId);
updateAmount(userDo);
return true;
}
@Override
public Boolean updateAmount(AccountUserDo userDo) {
int count = userDao.updateAmount(userDo);
if (count != 1) {
throw new RuntimeException("变更用户[" + userDo.getId() + "]账户可用金额,冻结金额失败");
}
return true;
}
/*
* (no-Javadoc) <p>Title: updateUsableSum</p> <p>Description: </p>
*
* @param IncrementSum
*
* @param operationDirection
*
* @param userId
*
* @see
* com.hehenian.biz.component.account.IUserComponent#updateUsableSum(double,
* java.lang.String, long)
*/
@Override
public boolean updateUsableSum(double IncrementSum, String operationDirection, long userId) {
if ("-".equals(operationDirection)) {
IncrementSum = -IncrementSum;
}
int count = userDao.updateUsableSum(IncrementSum, userId);
if (count > 0) {
return true;
} else {
return false;
}
}
/*
* (no-Javadoc) <p>Title: getUserByCustId</p> <p>Description: </p>
*
* @param compCustId
*
* @see
* com.hehenian.biz.component.account.IUserComponent#getUserByCustId(java
* .lang.String)
*/
@Override
public AccountUserDo getUserByCustId(String compCustId) {
return userDao.getUserByCustId(compCustId);
}
@Override
public AccountUserDo getUserByColorId(Long colorUserId) {
return userDao.getUserByColorId(colorUserId);
}
@Override
public long countUsers(Map<String, Object> searchItems) {
return userDao.countUsers(searchItems);
}
@Override
public List<Map<String, Object>> queryUsers(Map<String, Object> searchItems) {
return userDao.queryUsers(searchItems);
}
@Override
public List<AccountUserDo> queryByUserIds(List<Long> userIdList) {
if (userIdList == null || userIdList.size() == 0) {
return new ArrayList<AccountUserDo>();
}
return userDao.queryByUserIds(userIdList);
}
@Override
public List<AccountUserDo> queryUserByCustId(List<Long> userIdList) {
if (userIdList == null || userIdList.size() == 0) {
return new ArrayList<AccountUserDo>();
}
return userDao.queryByUserCusIds(userIdList);
}
/**
* 通过用户名查找用户
*
* @param username
* @return
*/
public AccountUserDo findUserByUserName(String username) {
return userDao.findUserByUserName(username);
}
public AccountUserDo findUserByPhone(String mobilePhone) {
return userDao.findUserByPhone(mobilePhone);
}
public Long saveUser(AccountUserDo accountUserDo) {
accountUserDo.setCreateTime(new Date());
Integer i = userDao.saveUser(accountUserDo);
if (i != null && i > 0) {
PersonDo personDo = new PersonDo();
personDo.setUserId(accountUserDo.getId());
personDo.setCellPhone(accountUserDo.getMobilePhone());
personDo.setTelephone(accountUserDo.getMobilePhone());
i = personDao.savePerson(personDo);
if (i <= 0) {
throw new BusinessException("保存用户信息失败");
} else {
i = personDao.saveWorkauth(accountUserDo.getId());
if (i <= 0) {
throw new BusinessException("保存用户信息失败");
} else {
try {
// 保存手机号验证记录
PhoneVerifyDo phoneVerifyDo = new PhoneVerifyDo();
phoneVerifyDo.setUserId(accountUserDo.getId());
phoneVerifyDo.setMobilePhone(accountUserDo.getMobilePhone());
phoneVerifyDo.setStatus(1);
IResult result = phoneVerifyComponent.savePhoneVerify(phoneVerifyDo);
if (result.isSuccess()) {
LOGGER.info("保存手机号验证记录成功");
} else {
LOGGER.info("保存手机号验证记录失败,失败原因:" + result.getErrorMessage());
}
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
}
return accountUserDo.getId();
}
}
}
return 0l;
}
@Override
public AccountUserDo findUserByUserNamePwd(String userName, String password) {
return userDao.findUserByUserNamePwd(userName, password);
}
@Override
public UserBindDo findUserBindByPartner(int partnerId, String partnerUserId) {
return userBindDao.findUserBindByPartner(partnerId, partnerUserId);
}
@Override
public int saveUserBind(UserBindDo userBindDo) {
return userBindDao.saveUserBind(userBindDo);
}
@Override
public Long saveNewUserBind(AccountUserDo accountUserDo, UserBindDo userBindDo) {
Long userId = saveUser(accountUserDo);
if (userId != null && userId > 0) {
userBindDo.setUserId(userId);
userBindDo.setCreateTime(accountUserDo.getCreateTime());
int i = saveUserBind(userBindDo);
if (i <= 0) {
throw new BusinessException("保存用户绑定信息失败");
} else {
return userId;
}
}
return 0l;
}
@Override
public UserBindDo findUserBindByUser(int partnerId, Long userId) {
return userBindDao.findUserBindByUser(partnerId, userId);
}
@Override
public int updateUserPhone(Long id, String mobilePhone) {
return userDao.updateUserPhone(id, mobilePhone);
}
@Override
public int updatePersonPhone(Long id, String mobilePhone) {
return userDao.updatePersonPhone(id, mobilePhone);
}
@Override
public InviteCodeDo findInviteCodeByDO(InviteCodeDo inviteCode) {
return inviteCodeDao.findInviteCodeByDO(inviteCode);
}
@Override
public int updateInviteCode(InviteCodeDo inviteCode) {
return inviteCodeDao.updateInviteCode(inviteCode);
}
@Override
public int updateUserPassword(Long userId, String password, String type) {
return userDao.updateUserPassword(userId, password);
}
@Override
public int updatePayPassword(Long userId, String password){
return userDao.updatePayPassword(userId, password);
}
@Override
public int updateUserEmail(Long id, String email) {
return this.userDao.updateUserEmail(id, email);
}
@Override
public AccountUserDo findUserByEmail(String email) {
return this.userDao.findUserByEmail(email);
}
@Override
public long setReferee(String recommendId, String userId) {
return this.userDao.setReferee(recommendId, userId);
}
@Override
public void saveUserReffer(String reffer, Long userId) {
this.userDao.saveUserReffer(reffer, userId);
}
@Override
public int updateUserUsrCust(Long userId, Long usrCustId, String email, String idNo, String realName) {
int result = -1;
try {
// 更新用户信息
AccountUserDo accountUserDo = new AccountUserDo();
accountUserDo.setId(userId);
accountUserDo.setUsrCustId(usrCustId);
accountUserDo.setEmail(email);
result = this.userDao.updateUser(accountUserDo);
// 更新用户个人信息
PersonDo personDo = new PersonDo();
personDo.setRealName(realName);
personDo.setUserId(userId);
personDo.setIdNo(idNo);
personDo.setEmail(email);
result = this.personDao.updatePersonByUserId(personDo);
// 更新工作认证信息
WorkAuth workAuth = new WorkAuth();
workAuth.setMoredStatus(3);
workAuth.setDirectedStatus(3);
workAuth.setOtherStatus(3);
workAuth.setAuditStatus(3);
result = this.workAuthDao.updateWorkAuthByUserId(workAuth);
// 更新资料认证信息
MaterialsAuth materialsAuth = new MaterialsAuth();
materialsAuth.setUserId(userId);
materialsAuth.setAuditStatus(3);
materialsAuth.setAuthTime(new Date());
materialsAuth.setPassTime(new Date());
result = this.materialsAuthDao.updateByUserId(materialsAuth);
} catch (Exception e) {
result = -1;
e.printStackTrace();
}
return result;
}
@Override
public AccountUserDo getByIdNo(String idNo) {
return userDao.getByIdNo(idNo);
}
@Override
public AccountUserDo findUserByColorid(String colorid) {
return userDao.findUserByColorid(colorid);
}
@Override
public void updateColourlifeInfo(Long id, Long colourId, Long cid, String cname, String caddress) {
userDao.updateColourlifeInfo(id,colourId, cid, cname, caddress);
}
}