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.app.dto.AddVipDto; import com.matrix.system.app.dto.ModifyVipDto; import com.matrix.system.app.dto.VipInfoListDto; import com.matrix.system.app.vo.VipInfoDetailVo; import com.matrix.system.app.vo.VipInfoListVo; import com.matrix.system.common.bean.SysUsers; import com.matrix.system.common.tools.DataAuthUtil; import com.matrix.system.common.tools.PasswordUtil; import com.matrix.system.common.tools.ServiceUtil; import com.matrix.system.constance.Dictionary; import com.matrix.system.constance.TableMapping; import com.matrix.system.hive.action.util.QueryUtil; import com.matrix.system.hive.bean.*; import com.matrix.system.hive.dao.*; 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.*; /** * * * @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; @Autowired private SysVipLabelDao sysVipLabelDao; /** * 新增会员储值卡 * @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; } @Override public List findVipAddressBook(VipInfoListDto vipInfoListDto) { SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); if (!DataAuthUtil.hasAllShopAuth()) { vipInfoListDto.setShopId(sysUsers.getShopId()); } QueryUtil.setQueryLimitCom(vipInfoListDto); return sysVipInfoDao.selectVipAddressBookByList(vipInfoListDto); } @Override public com.matrix.system.app.vo.VipInfoVo findApiVipInfoById(Long id) { return sysVipInfoDao.selectVipInfoById(id); } @Override public int apiAddVip(AddVipDto addVipDto) { SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); if (serviceUtil.addCheckRepeatTowColumn(TableMapping.SYS_VIP_INFO, "VIP_NO", addVipDto.getVipNo(), "company_id",user.getCompanyId())) { throw new GlobleException("编号已存在!"); } if (serviceUtil.addCheckRepeatTowColumn(TableMapping.SYS_VIP_INFO, "PHONE", addVipDto.getPhone(), "company_id",user.getCompanyId() )) { throw new GlobleException("手机已被注册!"); } SysVipInfo vipInfo = new SysVipInfo(); vipInfo.setPhoto(addVipDto.getPhoto()); vipInfo.setVipName(addVipDto.getVipName()); vipInfo.setVipNo(addVipDto.getVipNo()); vipInfo.setSex(addVipDto.getSex()); vipInfo.setArrivalWay(addVipDto.getArrivalWay()); vipInfo.setPhone(addVipDto.getPhone()); vipInfo.setAddr(addVipDto.getAddress()); vipInfo.setRemark(addVipDto.getRemark()); vipInfo.setBirthday1(addVipDto.getBirthday()); vipInfo.setPassWord(addVipDto.getPassword()); vipInfo.setRecommendId(addVipDto.getRecommendId()); if (StringUtils.isNotBlank(addVipDto.getAreas())) { String[] areas = addVipDto.getAreas().split("-"); vipInfo.setProvince(areas[0]); vipInfo.setCity(areas[1]); vipInfo.setArea(areas[2]); } vipInfo.setInDate(new Date()); vipInfo.setPointAll(0); vipInfo.setVipState(Dictionary.VIP_STATE_HY); vipInfo.setStaffId(user.getSuId()); vipInfo.setShopId(user.getShopId()); vipInfo.setVipType(Dictionary.VIP_TYPE_NOCARD); vipInfo.setShopId(user.getShopId()); vipInfo.setCompanyId(user.getCompanyId()); vipInfo.setCreateTime(new Date()); vipInfo.setPointAll(0); vipInfo.setIsDeal(SysVipInfo.UNDEAL_VIP); vipInfo.setZjm(StringUtils.toHanyuPinyin(vipInfo.getVipName())+","+StringUtils.toHeadWordHanyuPinyin(vipInfo.getVipName())); int i=sysVipInfoDao.insert(vipInfo); if (CollectionUtils.isNotEmpty(addVipDto.getLabels())) { batchInsertLabel(addVipDto.getLabels(), user.getSuName(), vipInfo.getId()); } //创建用户默认储值卡 addVipDefaultCard(vipInfo.getId()); return i; } @Override public int apiModifyVip(ModifyVipDto modifyVipDto) { SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); SysVipInfo vipInfo = sysVipInfoDao.selectById(modifyVipDto.getVipId()); if (vipInfo == null) { throw new GlobleException("用户不存在"); } if (!modifyVipDto.getVipNo().equals(vipInfo.getVipNo())) { if (serviceUtil.addCheckRepeatTowColumn(TableMapping.SYS_VIP_INFO, "VIP_NO", modifyVipDto.getVipNo(), "company_id",user.getCompanyId())) { throw new GlobleException("编号已存在!"); } } if (!vipInfo.getPhone().equals(modifyVipDto.getPhone())) { if (serviceUtil.addCheckRepeatTowColumn(TableMapping.SYS_VIP_INFO, "PHONE", modifyVipDto.getPhone(), "company_id", user.getCompanyId())) { throw new GlobleException("手机已被注册!"); } } if (StringUtils.isNotBlank(modifyVipDto.getAreas())) { String[] areas = modifyVipDto.getAreas().split("-"); vipInfo.setProvince(areas[0]); vipInfo.setCity(areas[1]); vipInfo.setArea(areas[2]); } vipInfo.setVipName(modifyVipDto.getVipName()); vipInfo.setSex(modifyVipDto.getSex()); vipInfo.setArrivalWay(modifyVipDto.getArrivalWay()); vipInfo.setPhone(modifyVipDto.getPhone()); vipInfo.setAddr(modifyVipDto.getAddress()); vipInfo.setRemark(modifyVipDto.getRemark()); vipInfo.setPassWord(modifyVipDto.getPassword()); vipInfo.setBirthday1(modifyVipDto.getBirthday()); vipInfo.setRecommendId(modifyVipDto.getRecommendId()); vipInfo.setPhoto(modifyVipDto.getPhoto()); int i = sysVipInfoDao.update(vipInfo); if (CollectionUtils.isNotEmpty(modifyVipDto.getLabels())) { sysVipLabelDao.deleteByVipId(modifyVipDto.getVipId()); batchInsertLabel(modifyVipDto.getLabels(), user.getSuName(), vipInfo.getId()); } return i; } private void batchInsertLabel(List labelList, String suName, Long id) { Set labels = new HashSet<>(labelList); Iterator iterator = labels.iterator(); if (iterator.hasNext()) { SysVipLabel sysVipLabel = new SysVipLabel(); sysVipLabel.setCreateTime(new Date()); sysVipLabel.setCreateBy(suName); sysVipLabel.setLabel(iterator.next()); sysVipLabel.setVipId(id); sysVipLabelDao.insert(sysVipLabel); } } @Override public VipInfoDetailVo findVipInfoDetail(Long id) { SysVipInfo sysVipInfo = sysVipInfoDao.selectById(id); if (sysVipInfo == null) { throw new GlobleException("用户不存在"); } VipInfoDetailVo vipInfoDetailVo = new VipInfoDetailVo(); vipInfoDetailVo.setVipName(sysVipInfo.getVipName()); vipInfoDetailVo.setAddress(sysVipInfo.getAddr()); vipInfoDetailVo.setPhone(sysVipInfo.getPhone()); vipInfoDetailVo.setSex(sysVipInfo.getSex()); vipInfoDetailVo.setArrivalWay(sysVipInfo.getArrivalWay()); vipInfoDetailVo.setRecommendId(sysVipInfo.getRecommendId()); vipInfoDetailVo.setId(sysVipInfo.getId()); vipInfoDetailVo.setProvince(sysVipInfo.getProvince()); vipInfoDetailVo.setCity(sysVipInfo.getCity()); vipInfoDetailVo.setArea(sysVipInfo.getArea()); vipInfoDetailVo.setRemark(sysVipInfo.getRemark()); vipInfoDetailVo.setBirthday(sysVipInfo.getBirthday1()); vipInfoDetailVo.setPassword(sysVipInfo.getPassWord()); vipInfoDetailVo.setPhoto(sysVipInfo.getPhoto()); vipInfoDetailVo.setVipNo(sysVipInfo.getVipNo()); List labels = sysVipLabelDao.selectByVipId(sysVipInfo.getId()); vipInfoDetailVo.setLabels(labels); return vipInfoDetailVo; } }