| 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.DEAL_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; | 
|     } | 
|   | 
|   | 
| } |