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 list) { return sysVipInfoDao.deleteByIds(list); } @Override public int removeById(Long id) { return sysVipInfoDao.deleteById(id); } @Override public List findInPage(SysVipInfo sysVipInfo, PaginationVO pageVo) { return sysVipInfoDao.selectInPage(sysVipInfo, pageVo); } @Override public List findAll(SysVipInfo sysVipInfo) { return sysVipInfoDao.selectAll(sysVipInfo); } @Override public List findByModel(SysVipInfo sysVipInfo) { return sysVipInfoDao.selectByModel(sysVipInfo); } @Override public List 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 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 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 listDel= myBeaticianDao.selectByModel(query); if(listDel!=null && listDel.size()>0){ List delIds=new ArrayList<>(); for (int i = 0; i < listDel.size(); i++) { delIds.add(listDel.get(i).getId()); } myBeaticianDao.deleteByIds(delIds); } } //添加客户的美疗师 List list=vipInfo.getBeauticains(); if(list!=null && list.size()>0){ List 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 findUserByPhoto(Long companyId,String keyWord) { return sysVipInfoDao.selectUserByPhoto(companyId,keyWord) ; } @Override public List 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 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 findAllInPage(SysVipInfo sysVipInfo, PaginationVO pageVo) { return sysVipInfoDao.selectAllInPage(sysVipInfo, pageVo); } @Override public int findAllTotal(SysVipInfo sysVipInfo) { return sysVipInfoDao.selectAllTotalRecord(sysVipInfo); } @Override public List findFristInPage(SysVipInfo sysVipInfo, PaginationVO pageVo) { return sysVipInfoDao.selectFristInPage(sysVipInfo, pageVo); } @Override public int findFristTotal(SysVipInfo sysVipInfo) { return sysVipInfoDao.selectFristTotalRecord(sysVipInfo); } @Override public List 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 excelList = ExcelUtil.readExcel(file, null,null); int result = 0; for (int i = 0; i < excelList.size(); i++) { List> dataList = excelList.get(i).getDataList(); List vipInfos = new ArrayList<>(); if (CollectionUtils.isNotEmpty(dataList)) { for (int j = 1; j < dataList.size(); j++) { List 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 = 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; } }