package com.matrix.system.hive.service.imp;
|
|
import com.matrix.core.constance.MatrixConstance;
|
import com.matrix.core.exception.GlobleException;
|
import com.matrix.core.pojo.PaginationVO;
|
import com.matrix.core.tools.*;
|
import com.matrix.core.tools.excl.ExcelSheetPO;
|
import com.matrix.core.tools.excl.ExcelUtil;
|
import com.matrix.system.common.bean.SysUsers;
|
import com.matrix.system.common.tools.ServiceUtil;
|
import com.matrix.system.constance.Dictionary;
|
import com.matrix.system.constance.TableMapping;
|
import com.matrix.system.hive.bean.MoneyCardUse;
|
import com.matrix.system.hive.bean.MyBeatician;
|
import com.matrix.system.hive.bean.SysVipInfo;
|
import com.matrix.system.hive.bean.VipAnswer;
|
import com.matrix.system.hive.dao.MoneyCardUseDao;
|
import com.matrix.system.hive.dao.MyBeaticianDao;
|
import com.matrix.system.hive.dao.SysVipInfoDao;
|
import com.matrix.system.hive.dao.VipAnswerDao;
|
import com.matrix.system.hive.plugin.util.CollectionUtils;
|
import com.matrix.system.hive.pojo.VipInfoVo;
|
import com.matrix.system.hive.service.SysVipInfoService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.io.File;
|
import java.io.IOException;
|
import java.io.UnsupportedEncodingException;
|
import java.security.NoSuchAlgorithmException;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
|
/**
|
*
|
*
|
* @date 2016-07-03 20:53
|
*/
|
@Service("sysVipInfoService")
|
public class SysVipInfoServiceImpl implements SysVipInfoService {
|
|
@Autowired
|
private SysVipInfoDao sysVipInfoDao;
|
|
@Autowired
|
private ServiceUtil serviceUtil;
|
|
@Autowired
|
private MyBeaticianDao myBeaticianDao;
|
|
@Autowired
|
private VipAnswerDao vipAnswerDao;
|
|
@Autowired
|
private MoneyCardUseDao moneyCardUseDao;
|
|
/**
|
* 新增会员储值卡
|
* @param vipId
|
* @return
|
*/
|
@Override
|
public int addVipDefaultCard(Long vipId){
|
MoneyCardUse defaultCardUse=new MoneyCardUse();
|
defaultCardUse.setVipId(vipId);
|
defaultCardUse.setCardName("储值卡");
|
defaultCardUse.setIsVipCar(Dictionary.FLAG_YES_Y);
|
defaultCardUse.setRealMoney(0D);
|
defaultCardUse.setGiftMoney(0D);
|
defaultCardUse.setSource("-");
|
defaultCardUse.setStatus(Dictionary.MONEYCARD_STATUS_YX);
|
return moneyCardUseDao.insert(defaultCardUse);
|
|
}
|
|
@Override
|
public int add(SysVipInfo sysVipInfo) {
|
SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
|
|
if (sysVipInfo.getVipNo() != null && (!sysVipInfo.getVipNo().equals(""))) {
|
if (serviceUtil.addCheckRepeatTowColumn(TableMapping.SYS_VIP_INFO, "VIP_NO", sysVipInfo.getVipNo(),
|
"company_id",user.getCompanyId())) {
|
throw new GlobleException("编号已存在!");
|
}
|
}
|
if (sysVipInfo.getPhone() != null) {
|
if (sysVipInfo.getPhone().equals("")) {
|
throw new GlobleException("请输入手机号!");
|
}
|
if (serviceUtil.addCheckRepeatTowColumn(TableMapping.SYS_VIP_INFO, "PHONE", sysVipInfo.getPhone(),
|
"company_id",user.getCompanyId() )) {
|
throw new GlobleException("手机已被注册!");
|
}
|
}
|
|
|
sysVipInfo.setShopId(user.getShopId());
|
sysVipInfo.setCompanyId(user.getCompanyId());
|
sysVipInfo.setCreateTime(new Date());
|
sysVipInfo.setPointAll(0);
|
sysVipInfo.setIsDeal(SysVipInfo.UNDEAL_VIP);
|
sysVipInfo.setZjm(StringUtils.toHanyuPinyin(sysVipInfo.getVipName())+","+StringUtils.toHeadWordHanyuPinyin(sysVipInfo.getVipName()));
|
int i=sysVipInfoDao.insert(sysVipInfo);
|
modifyVipWithOtherInfo(sysVipInfo);
|
//创建用户默认储值卡
|
addVipDefaultCard(sysVipInfo.getId());
|
return i;
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public int modify(SysVipInfo sysVipInfo) {
|
SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
|
|
if (sysVipInfo.getVipNo() != null) {
|
if (sysVipInfo.getVipNo().equals("")) {
|
throw new GlobleException("请输入会员编号!");
|
}
|
if (serviceUtil.updateCheckRepeatTowColumn(TableMapping.SYS_VIP_INFO, "VIP_NO", sysVipInfo.getVipNo(),
|
"company_id",user.getCompanyId(),
|
"ID", sysVipInfo.getId())) {
|
throw new GlobleException("编号已被使用!");
|
}
|
}
|
if (sysVipInfo.getPhone() != null) {
|
if (sysVipInfo.getPhone().equals("")) {
|
throw new GlobleException("请输入手机号!");
|
}
|
if (serviceUtil.updateCheckRepeatTowColumn(TableMapping.SYS_VIP_INFO, "PHONE", sysVipInfo.getPhone(),
|
"company_id",user.getCompanyId(),
|
"ID", sysVipInfo.getId())) {
|
throw new GlobleException("手机已被使用!");
|
}
|
}
|
|
modifyVipWithOtherInfo(sysVipInfo);
|
return sysVipInfoDao.update(sysVipInfo);
|
}
|
|
@Override
|
public int remove(List<Long> list) {
|
|
return sysVipInfoDao.deleteByIds(list);
|
|
}
|
|
@Override
|
public int removeById(Long id) {
|
|
return sysVipInfoDao.deleteById(id);
|
|
}
|
|
@Override
|
public List<SysVipInfo> findInPage(SysVipInfo sysVipInfo, PaginationVO pageVo) {
|
|
return sysVipInfoDao.selectInPage(sysVipInfo, pageVo);
|
|
}
|
|
@Override
|
public List<SysVipInfo> findAll(SysVipInfo sysVipInfo) {
|
|
return sysVipInfoDao.selectAll(sysVipInfo);
|
|
}
|
|
@Override
|
public List<SysVipInfo> findByModel(SysVipInfo sysVipInfo) {
|
return sysVipInfoDao.selectByModel(sysVipInfo);
|
|
}
|
|
@Override
|
public List<SysVipInfo> findByModel1(SysVipInfo sysVipInfo) {
|
return sysVipInfoDao.selectByModel1(sysVipInfo);
|
|
}
|
|
@Override
|
public int findTotal(SysVipInfo sysVipInfo) {
|
|
return sysVipInfoDao.selectTotalRecord(sysVipInfo);
|
|
}
|
|
@Override
|
public SysVipInfo findById(Long id) {
|
|
return sysVipInfoDao.selectById(id);
|
|
}
|
|
@Override
|
public List<SysVipInfo> findByVipNoOrTel(String key) {
|
SysUsers users = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
|
return sysVipInfoDao.selectByVipNoOrTel(key, users.getShopId());
|
|
}
|
|
|
@Override
|
public boolean isOnlyPhone(String phone) {
|
|
return sysVipInfoDao.selectTotalByField("PHONE", phone) > 0;
|
}
|
|
public boolean isOnlyEmail(String email) {
|
return sysVipInfoDao.selectTotalByField("EMAIl", email) > 0;
|
}
|
|
@Override
|
public List<SysVipInfo> findListByVo(VipInfoVo infoVo, PaginationVO pageVo) {
|
|
return sysVipInfoDao.findListByVo(infoVo, pageVo);
|
}
|
|
@Override
|
public int findListByVoCount(VipInfoVo infoVo) {
|
|
return sysVipInfoDao.findListByVoCount(infoVo);
|
}
|
|
//更新会员的问卷信息
|
@Override
|
public void modifyVipWithOtherInfo(SysVipInfo vipInfo) {
|
//先删除所有问卷答案再添加
|
VipAnswer delAnswer=new VipAnswer();
|
if(vipInfo.getId()==null){
|
throw new GlobleException("会员不存在,请刷新页面!");
|
}
|
delAnswer.setVipId(vipInfo.getId());
|
vipAnswerDao.deleteByModel(delAnswer);
|
if(vipInfo.getVipAnswers()!=null&&vipInfo.getVipAnswers().size()>0){
|
vipAnswerDao.batchInsert(vipInfo.getVipAnswers());
|
}
|
|
|
//如果会员id不为空则表示是修改,删除原有的绑定关系,建立新的关系
|
if(vipInfo.getId()!=null && !vipInfo.getId().equals("")){
|
MyBeatician query=new MyBeatician();
|
query.setVipId(vipInfo.getId());
|
List<MyBeatician> listDel= myBeaticianDao.selectByModel(query);
|
if(listDel!=null && listDel.size()>0){
|
List<Long> delIds=new ArrayList<>();
|
for (int i = 0; i < listDel.size(); i++) {
|
delIds.add(listDel.get(i).getId());
|
}
|
myBeaticianDao.deleteByIds(delIds);
|
}
|
}
|
//添加客户的美疗师
|
List<MyBeatician> list=vipInfo.getBeauticains();
|
if(list!=null && list.size()>0){
|
List<MyBeatician> saveList=new ArrayList<>();
|
//此处由于前台传递过来list中的下标可能是不连续的。因此要过滤掉空的,即要过滤掉美疗师的id为空的数据
|
for (MyBeatician temp:list) {
|
if(temp.getBeauticainId()!=null && !temp.getBeauticainId().equals("")){
|
saveList.add(temp);
|
}
|
}
|
myBeaticianDao.insertAll(saveList,vipInfo.getId());
|
}
|
|
}
|
|
|
|
@Override
|
public List<SysVipInfo> findUserByPhoto(Long companyId,String keyWord) {
|
|
return sysVipInfoDao.selectUserByPhoto(companyId,keyWord) ;
|
}
|
|
|
@Override
|
public List<SysVipInfo> findUserByKey(String keyWord) {
|
SysUsers users = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
|
return sysVipInfoDao.selectUserByKey(keyWord, users.getShopId());
|
}
|
|
|
|
@Override
|
public SysVipInfo login(SysVipInfo user) {
|
|
return sysVipInfoDao.selectVipByPhonePassWord(user) ;
|
}
|
|
|
/**
|
* 批量修改健康顾问
|
*/
|
@Transactional(rollbackFor = Exception.class)
|
@Override
|
public int updateStaffId(String ids, Long staffId) {
|
if(ids==null||ids.equals("")){
|
throw new GlobleException("请至少选择一位会员!");
|
}
|
|
String[] key=ids.split(",");
|
for (String string : key) {
|
long id=Long.valueOf(string.trim());
|
SysVipInfo info=new SysVipInfo();
|
info.setId(id);
|
info.setStaffId(staffId);
|
sysVipInfoDao.update(info);
|
}
|
return key.length;
|
}
|
|
|
//修改密码
|
@Override
|
public int updatePwd(SysVipInfo vipInfo) {
|
//密码MD5加密更新到数据库
|
try {
|
vipInfo.setPassWord(EncrypUtil.getMD5(vipInfo.getPassWord()));
|
} catch (UnsupportedEncodingException | NoSuchAlgorithmException e) {
|
e.printStackTrace();
|
}
|
//更新用户的密码
|
return sysVipInfoDao.update(vipInfo);
|
}
|
/**
|
* 批量导入会员信息
|
*/
|
@Override
|
public int adds(SysVipInfo sysVipInfo,int s,List<Object> errList) {
|
sysVipInfo.setCreateTime(new Date());
|
sysVipInfo.setPointAll(0);
|
SysUsers users = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
|
sysVipInfo.setCompanyId(users.getCompanyId());
|
sysVipInfo.setShopId(users.getShopId());
|
int i=sysVipInfoDao.insert(sysVipInfo);
|
modifyVipWithOtherInfo(sysVipInfo);
|
return i;
|
}
|
|
@Override
|
public List<SysVipInfo> findAllInPage(SysVipInfo sysVipInfo, PaginationVO pageVo) {
|
|
return sysVipInfoDao.selectAllInPage(sysVipInfo, pageVo);
|
|
}
|
@Override
|
public int findAllTotal(SysVipInfo sysVipInfo) {
|
|
return sysVipInfoDao.selectAllTotalRecord(sysVipInfo);
|
|
}
|
|
@Override
|
public List<SysVipInfo> findFristInPage(SysVipInfo sysVipInfo, PaginationVO pageVo) {
|
|
return sysVipInfoDao.selectFristInPage(sysVipInfo, pageVo);
|
|
}
|
@Override
|
public int findFristTotal(SysVipInfo sysVipInfo) {
|
|
return sysVipInfoDao.selectFristTotalRecord(sysVipInfo);
|
|
}
|
|
@Override
|
public List<SysVipInfo> findSecondInPage(SysVipInfo sysVipInfo, PaginationVO pageVo) {
|
|
return sysVipInfoDao.selectSecondInPage(sysVipInfo, pageVo);
|
|
}
|
@Override
|
public int findSecondTotal(SysVipInfo sysVipInfo) {
|
|
return sysVipInfoDao.selectSecondTotalRecord(sysVipInfo);
|
|
}
|
|
@Override
|
public int importVipInfo(File file) throws IOException {
|
SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
|
List<ExcelSheetPO> excelList = ExcelUtil.readExcel(file, null,null);
|
int result = 0;
|
for (int i = 0; i < excelList.size(); i++) {
|
List<List<Object>> dataList = excelList.get(i).getDataList();
|
List<SysVipInfo> vipInfos = new ArrayList<>();
|
if (CollectionUtils.isNotEmpty(dataList)) {
|
for (int j = 1; j < dataList.size(); j++) {
|
List<Object> objects = dataList.get(j);
|
SysVipInfo vipInfo = new SysVipInfo();
|
vipInfo.setVipNo(objects.get(0).toString());
|
|
SysVipInfo exist = sysVipInfoDao.selectByPhone(objects.get(3).toString());
|
if (exist != null) {
|
continue;
|
}
|
List<SysVipInfo> sysVipInfo = sysVipInfoDao.selectVipInfoByVipNo(sysUsers.getCompanyId(), objects.get(0).toString());
|
if (CollectionUtils.isNotEmpty(sysVipInfo)) {
|
int x = j + 1;
|
throw new GlobleException("第"+ x +"行,会员编号已存在");
|
}
|
vipInfo.setVipName(objects.get(1).toString());
|
vipInfo.setSex(objects.get(2).toString());
|
vipInfo.setPhone(objects.get(3).toString());
|
vipInfo.setBirthday1(DateUtil.stringToDate(objects.get(4).toString(), DateUtil.DATE_FORMAT_SS));
|
vipInfo.setShopId(sysUsers.getShopId());
|
vipInfos.add(vipInfo);
|
}
|
}
|
if (CollectionUtils.isNotEmpty(vipInfos)) {
|
result = sysVipInfoDao.batchInsert(vipInfos);
|
}
|
}
|
return result;
|
}
|
|
|
}
|