|  |  |  | 
|---|
|  |  |  | 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.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.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.beans.factory.annotation.Value; | 
|---|
|  |  |  | import org.springframework.stereotype.Service; | 
|---|
|  |  |  | import org.springframework.transaction.annotation.Transactional; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | import java.io.IOException; | 
|---|
|  |  |  | import java.io.UnsupportedEncodingException; | 
|---|
|  |  |  | import java.security.NoSuchAlgorithmException; | 
|---|
|  |  |  | import java.util.ArrayList; | 
|---|
|  |  |  | import java.util.Date; | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  | import java.util.*; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private MoneyCardUseDao moneyCardUseDao; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private SysVipLabelDao sysVipLabelDao; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Value("${default.vip.photo.woman}") | 
|---|
|  |  |  | String defaultWoman; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Value("${default.vip.photo.man}") | 
|---|
|  |  |  | String defaultMan; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 新增会员储值卡 | 
|---|
|  |  |  | * @param vipId | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public  int addVipDefaultCard(Long vipId){ | 
|---|
|  |  |  | public MoneyCardUse addVipDefaultCard(Long vipId){ | 
|---|
|  |  |  | MoneyCardUse defaultCardUse=new MoneyCardUse(); | 
|---|
|  |  |  | defaultCardUse.setVipId(vipId); | 
|---|
|  |  |  | defaultCardUse.setCardName("储值卡"); | 
|---|
|  |  |  | 
|---|
|  |  |  | defaultCardUse.setGiftMoney(0D); | 
|---|
|  |  |  | defaultCardUse.setSource("-"); | 
|---|
|  |  |  | defaultCardUse.setStatus(Dictionary.MONEYCARD_STATUS_YX); | 
|---|
|  |  |  | return  moneyCardUseDao.insert(defaultCardUse); | 
|---|
|  |  |  | moneyCardUseDao.insert(defaultCardUse); | 
|---|
|  |  |  | return  defaultCardUse; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | sysVipInfo.setPointAll(0); | 
|---|
|  |  |  | sysVipInfo.setIsDeal(SysVipInfo.UNDEAL_VIP); | 
|---|
|  |  |  | sysVipInfo.setZjm(StringUtils.toHanyuPinyin(sysVipInfo.getVipName())+","+StringUtils.toHeadWordHanyuPinyin(sysVipInfo.getVipName())); | 
|---|
|  |  |  | if(sysVipInfo.getSex().equals(Dictionary.SEX_MAN)){ | 
|---|
|  |  |  | sysVipInfo.setPhoto(defaultMan); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | sysVipInfo.setPhoto(defaultWoman); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | int i=sysVipInfoDao.insert(sysVipInfo); | 
|---|
|  |  |  | modifyVipWithOtherInfo(sysVipInfo); | 
|---|
|  |  |  | //创建用户默认储值卡 | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public List<SysVipInfo> findByVipNoOrTel(String key) { | 
|---|
|  |  |  | SysUsers users = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); | 
|---|
|  |  |  | return sysVipInfoDao.selectByVipNoOrTel(key, users.getShopId()); | 
|---|
|  |  |  | return sysVipInfoDao.selectByVipNoOrTel(key); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public List<SysVipInfo> findUserByKey(String keyWord) { | 
|---|
|  |  |  | SysUsers users = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); | 
|---|
|  |  |  | return sysVipInfoDao.selectUserByKey(keyWord, users.getShopId()); | 
|---|
|  |  |  | SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); | 
|---|
|  |  |  | return sysVipInfoDao.selectUserByKey(keyWord,user.getCompanyId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | SysUsers users = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); | 
|---|
|  |  |  | sysVipInfo.setCompanyId(users.getCompanyId()); | 
|---|
|  |  |  | sysVipInfo.setShopId(users.getShopId()); | 
|---|
|  |  |  | if(sysVipInfo.getSex().equals(Dictionary.SEX_MAN)){ | 
|---|
|  |  |  | sysVipInfo.setPhoto(defaultMan); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | sysVipInfo.setPhoto(defaultWoman); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | int i=sysVipInfoDao.insert(sysVipInfo); | 
|---|
|  |  |  | modifyVipWithOtherInfo(sysVipInfo); | 
|---|
|  |  |  | return i; | 
|---|
|  |  |  | 
|---|
|  |  |  | 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 (StringUtils.isNotBlank(addVipDto.getVipNo())) { | 
|---|
|  |  |  | 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())); | 
|---|
|  |  |  | if(vipInfo.getSex().equals(Dictionary.SEX_MAN)){ | 
|---|
|  |  |  | vipInfo.setPhoto(defaultMan); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | vipInfo.setPhoto(defaultWoman); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | int i=sysVipInfoDao.insert(vipInfo); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (CollectionUtils.isNotEmpty(addVipDto.getLabels())) { | 
|---|
|  |  |  | batchInsertLabel(addVipDto.getLabels(), 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 (StringUtils.isNotBlank(modifyVipDto.getVipNo())) { | 
|---|
|  |  |  | 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.deleteRelateByVipId(modifyVipDto.getVipId()); | 
|---|
|  |  |  | batchInsertLabel(modifyVipDto.getLabels(), vipInfo.getId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return i; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private void batchInsertLabel(List<String> labelList, Long id) { | 
|---|
|  |  |  | Set<String> labels = new HashSet<>(labelList); | 
|---|
|  |  |  | Iterator<String> iterator = labels.iterator(); | 
|---|
|  |  |  | while (iterator.hasNext()) { | 
|---|
|  |  |  | SysVipLabelRelate relate = new SysVipLabelRelate(); | 
|---|
|  |  |  | relate.setLabelId(Long.parseLong(iterator.next())); | 
|---|
|  |  |  | relate.setVipId(id); | 
|---|
|  |  |  | sysVipLabelDao.insertRelate(relate); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @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<SysVipLabel> labels = sysVipLabelDao.selectByVipId(sysVipInfo.getId()); | 
|---|
|  |  |  | vipInfoDetailVo.setLabels(labels); | 
|---|
|  |  |  | return vipInfoDetailVo; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|