123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796 |
- package com.fuint.common.service.impl;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.toolkit.Wrappers;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.fuint.common.dto.AccountInfo;
- import com.fuint.common.dto.UserDto;
- import com.fuint.common.enums.GenderEnum;
- import com.fuint.common.enums.MemberSourceEnum;
- import com.fuint.common.enums.StatusEnum;
- import com.fuint.common.enums.UserActionEnum;
- import com.fuint.common.service.*;
- import com.fuint.common.util.*;
- import com.fuint.framework.annoation.OperationServiceLog;
- import com.fuint.framework.exception.BusinessCheckException;
- import com.fuint.framework.pagination.PaginationRequest;
- import com.fuint.framework.pagination.PaginationResponse;
- import com.fuint.repository.mapper.MtUserActionMapper;
- import com.fuint.repository.mapper.MtUserGradeMapper;
- import com.fuint.repository.mapper.MtUserMapper;
- import com.fuint.repository.model.*;
- import com.fuint.utils.StringUtil;
- import com.github.pagehelper.Page;
- import com.github.pagehelper.PageHelper;
- import org.apache.commons.lang.StringUtils;
- import org.springframework.beans.BeanUtils;
- import org.springframework.data.domain.PageImpl;
- import org.springframework.data.domain.PageRequest;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import javax.annotation.Resource;
- import javax.servlet.http.HttpServletRequest;
- import java.math.BigDecimal;
- import java.util.*;
- /**
- * 会员业务接口实现类
- *
- * Created by FSQ
- * CopyRight https://www.fuint.cn
- */
- @Service
- public class MemberServiceImpl extends ServiceImpl<MtUserMapper, MtUser> implements MemberService {
- @Resource
- private MtUserMapper mtUserMapper;
- @Resource
- private MtUserGradeMapper mtUserGradeMapper;
- @Resource
- private MtUserActionMapper mtUserActionMapper;
- /**
- * 短信发送接口
- */
- @Resource
- private SendSmsService sendSmsService;
- /**
- * 会员等级接口
- * */
- @Resource
- private UserGradeService userGradeService;
- /**
- * 会员等级接口
- * */
- @Resource
- private OpenGiftService openGiftService;
- /**
- * 后台账户服务接口
- */
- @Resource
- private AccountService accountService;
- /**
- * 员工接口
- */
- @Resource
- private StaffService staffService;
- /**
- * 店铺接口
- */
- @Resource
- private StoreService storeService;
- /**
- * 会员行为接口
- */
- @Resource
- private UserActionService userActionService;
- /**
- * 更新活跃时间
- * @param userId 会员ID
- * @return
- * */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public Boolean updateActiveTime(Integer userId) throws BusinessCheckException {
- MtUser mtUser = queryMemberById(userId);
- if (mtUser != null) {
- if (!mtUser.getStatus().equals(StatusEnum.ENABLED.getKey())) {
- return false;
- }
- Date lastUpdateTime = mtUser.getUpdateTime();
- Date registerTime = mtUser.getCreateTime();
- if (lastUpdateTime != null) {
- Long timestampLast = Long.valueOf(TimeUtils.date2timeStamp(lastUpdateTime));
- Long timestampNow = System.currentTimeMillis() / 1000;
- Long minute = timestampNow - timestampLast;
- // 5分钟更新一次
- if (minute >= 300 || registerTime.equals(lastUpdateTime)) {
- synchronized(MemberServiceImpl.class) {
- Date activeTime = new Date();
- mtUserMapper.updateActiveTime(mtUser.getId(), activeTime);
- // 记录会员行为
- MtUserAction mtUserAction = new MtUserAction();
- mtUserAction.setUserId(mtUser.getId());
- mtUserAction.setStoreId(mtUser.getStoreId());
- mtUserAction.setMerchantId(mtUser.getMerchantId());
- mtUserAction.setParam(TimeUtils.formatDate(activeTime, "yyyy-MM-dd HH:mm:ss"));
- mtUserAction.setAction(UserActionEnum.LOGIN.getKey());
- mtUserAction.setDescription(UserActionEnum.LOGIN.getValue());
- userActionService.addUserAction(mtUserAction);
- }
- }
- }
- }
- return true;
- }
- /**
- * 获取当前操作会员信息
- * @param userId
- * @param token
- * @return
- * */
- @Override
- public MtUser getCurrentUserInfo(HttpServletRequest request, Integer userId, String token) throws BusinessCheckException {
- MtUser mtUser = null;
- // 没有会员信息,则查询是否是后台收银员下单
- AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
- if (accountInfo != null) {
- // 输入了会员ID就用会员的账号下单,否则用员工账号下单
- if (userId > 0) {
- mtUser = queryMemberById(userId);
- } else {
- Integer accountId = accountInfo.getId();
- TAccount account = accountService.getAccountInfoById(accountId);
- if (account != null) {
- if (account.getStaffId() > 0) {
- MtStaff staff = staffService.queryStaffById(account.getStaffId());
- if (staff != null) {
- mtUser = queryMemberById(staff.getUserId());
- if (mtUser != null && (mtUser.getStoreId() == null || mtUser.getStoreId() <= 0)) {
- mtUser.setStoreId(staff.getStoreId());
- updateById(mtUser);
- }
- }
- }
- }
- }
- }
- return mtUser;
- }
- /**
- * 分页查询会员列表
- *
- * @param paginationRequest
- * @return
- */
- @Override
- public PaginationResponse<UserDto> queryMemberListByPagination(PaginationRequest paginationRequest) throws BusinessCheckException {
- Page<MtUser> pageHelper = PageHelper.startPage(paginationRequest.getCurrentPage(), paginationRequest.getPageSize());
- LambdaQueryWrapper<MtUser> lambdaQueryWrapper = Wrappers.lambdaQuery();
- lambdaQueryWrapper.ne(MtUser::getStatus, StatusEnum.DISABLE.getKey());
- String name = paginationRequest.getSearchParams().get("name") == null ? "" : paginationRequest.getSearchParams().get("name").toString();
- if (StringUtils.isNotBlank(name)) {
- lambdaQueryWrapper.like(MtUser::getName, name);
- }
- String id = paginationRequest.getSearchParams().get("id") == null ? "" : paginationRequest.getSearchParams().get("id").toString();
- if (StringUtils.isNotBlank(id)) {
- lambdaQueryWrapper.eq(MtUser::getId, id);
- }
- String mobile = paginationRequest.getSearchParams().get("mobile") == null ? "" : paginationRequest.getSearchParams().get("mobile").toString();
- if (StringUtils.isNotBlank(mobile)) {
- lambdaQueryWrapper.like(MtUser::getMobile, mobile);
- }
- String birthday = paginationRequest.getSearchParams().get("birthday") == null ? "" : paginationRequest.getSearchParams().get("birthday").toString();
- if (StringUtils.isNotBlank(birthday)) {
- lambdaQueryWrapper.like(MtUser::getBirthday, birthday);
- }
- String userNo = paginationRequest.getSearchParams().get("userNo") == null ? "" : paginationRequest.getSearchParams().get("userNo").toString();
- if (StringUtils.isNotBlank(userNo)) {
- lambdaQueryWrapper.eq(MtUser::getUserNo, userNo);
- }
- String gradeId = paginationRequest.getSearchParams().get("gradeId") == null ? "" : paginationRequest.getSearchParams().get("gradeId").toString();
- if (StringUtils.isNotBlank(gradeId)) {
- lambdaQueryWrapper.eq(MtUser::getGradeId, gradeId);
- }
- String merchantId = paginationRequest.getSearchParams().get("merchantId") == null ? "" : paginationRequest.getSearchParams().get("merchantId").toString();
- if (StringUtils.isNotBlank(merchantId)) {
- lambdaQueryWrapper.eq(MtUser::getMerchantId, merchantId);
- }
- String storeId = paginationRequest.getSearchParams().get("storeId") == null ? "" : paginationRequest.getSearchParams().get("storeId").toString();
- if (StringUtils.isNotBlank(storeId)) {
- lambdaQueryWrapper.eq(MtUser::getStoreId, storeId);
- }
- String storeIds = paginationRequest.getSearchParams().get("storeIds") == null ? "" : paginationRequest.getSearchParams().get("storeIds").toString();
- if (StringUtils.isNotBlank(storeIds)) {
- List<String> idList = Arrays.asList(storeIds.split(","));
- if (idList.size() > 0) {
- lambdaQueryWrapper.in(MtUser::getStoreId, idList);
- }
- }
- String status = paginationRequest.getSearchParams().get("status") == null ? "" : paginationRequest.getSearchParams().get("status").toString();
- if (StringUtils.isNotBlank(status)) {
- lambdaQueryWrapper.eq(MtUser::getStatus, status);
- }
- // 注册开始、结束时间
- String startTime = paginationRequest.getSearchParams().get("startTime") == null ? "" : paginationRequest.getSearchParams().get("startTime").toString();
- String endTime = paginationRequest.getSearchParams().get("endTime") == null ? "" : paginationRequest.getSearchParams().get("endTime").toString();
- if (StringUtil.isNotEmpty(startTime)) {
- lambdaQueryWrapper.ge(MtUser::getCreateTime, startTime);
- }
- if (StringUtil.isNotEmpty(endTime)) {
- lambdaQueryWrapper.le(MtUser::getCreateTime, endTime);
- }
- // 注册时间
- String regTime = paginationRequest.getSearchParams().get("regTime") == null ? "" : paginationRequest.getSearchParams().get("regTime").toString();
- if (StringUtil.isNotEmpty(regTime)) {
- String[] dateTime = regTime.split("~");
- if (dateTime.length == 2) {
- lambdaQueryWrapper.ge(MtUser::getCreateTime, dateTime[0]);
- lambdaQueryWrapper.le(MtUser::getCreateTime, dateTime[1]);
- }
- }
- // 活跃时间
- String activeTime = paginationRequest.getSearchParams().get("activeTime") == null ? "" : paginationRequest.getSearchParams().get("activeTime").toString();
- if (StringUtil.isNotEmpty(activeTime)) {
- String[] dateTime = activeTime.split("~");
- if (dateTime.length == 2) {
- lambdaQueryWrapper.ge(MtUser::getUpdateTime, dateTime[0]);
- lambdaQueryWrapper.le(MtUser::getUpdateTime, dateTime[1]);
- }
- }
- // 会员有效期
- String memberTime = paginationRequest.getSearchParams().get("memberTime") == null ? "" : paginationRequest.getSearchParams().get("memberTime").toString();
- if (StringUtil.isNotEmpty(memberTime)) {
- String[] dateTime = memberTime.split("~");
- if (dateTime.length == 2) {
- lambdaQueryWrapper.ge(MtUser::getStartTime, dateTime[0]);
- lambdaQueryWrapper.le(MtUser::getEndTime, dateTime[1]);
- }
- }
- lambdaQueryWrapper.orderByDesc(MtUser::getUpdateTime);
- List<MtUser> userList = mtUserMapper.selectList(lambdaQueryWrapper);
- List<UserDto> dataList = new ArrayList<>();
- for (MtUser user : userList) {
- String phone = user.getMobile();
- UserDto userDto = new UserDto();
- BeanUtils.copyProperties(user, userDto);
- // 隐藏手机号中间四位
- if (phone != null && StringUtil.isNotEmpty(phone) && phone.length() == 11) {
- userDto.setMobile(phone.substring(0, 3) + "****" + phone.substring(7));
- }
- if (userDto.getStoreId() != null && userDto.getStoreId() > 0) {
- MtStore mtStore = storeService.queryStoreById(userDto.getStoreId());
- if (mtStore != null) {
- userDto.setStoreName(mtStore.getName());
- }
- }
- if (userDto.getGradeId() != null) {
- Integer mchId = StringUtil.isNotEmpty(merchantId) ? Integer.parseInt(merchantId) : 0;
- MtUserGrade mtGrade = userGradeService.queryUserGradeById(mchId, Integer.parseInt(userDto.getGradeId()), user.getId());
- if (mtGrade != null) {
- userDto.setGradeName(mtGrade.getName());
- }
- }
- userDto.setLastLoginTime(TimeUtil.showTime(new Date(), user.getUpdateTime()));
- dataList.add(userDto);
- }
- PageRequest pageRequest = PageRequest.of(paginationRequest.getCurrentPage(), paginationRequest.getPageSize());
- PageImpl pageImpl = new PageImpl(dataList, pageRequest, pageHelper.getTotal());
- PaginationResponse<UserDto> paginationResponse = new PaginationResponse(pageImpl, UserDto.class);
- paginationResponse.setTotalPages(pageHelper.getPages());
- paginationResponse.setTotalElements(pageHelper.getTotal());
- paginationResponse.setContent(dataList);
- return paginationResponse;
- }
- /**
- * 添加会员
- *
- * @param mtUser
- * @throws BusinessCheckException
- */
- @Override
- @OperationServiceLog(description = "新增会员信息")
- public MtUser addMember(MtUser mtUser) throws BusinessCheckException {
- // 手机号已存在
- if (StringUtil.isNotEmpty(mtUser.getMobile())) {
- MtUser userInfo = queryMemberByMobile(mtUser.getMerchantId(), mtUser.getMobile());
- if (userInfo != null) {
- return userInfo;
- }
- }
- String userNo = CommonUtil.createUserNo();
- // 会员名称已存在
- List<MtUser> userList = mtUserMapper.queryMemberByName(mtUser.getMerchantId(), mtUser.getName());
- if (userList.size() > 0) {
- mtUser.setName(userNo);
- }
- // 默认会员等级
- if (StringUtil.isEmpty(mtUser.getGradeId())) {
- MtUserGrade grade = userGradeService.getInitUserGrade(mtUser.getMerchantId());
- if (grade != null) {
- mtUser.setGradeId(grade.getId().toString());
- }
- }
- mtUser.setUserNo(userNo);
- mtUser.setBalance(new BigDecimal(0));
- if (mtUser.getPoint() == null || mtUser.getPoint() < 1) {
- mtUser.setPoint(0);
- }
- if (StringUtil.isEmpty(mtUser.getIdcard())) {
- mtUser.setIdcard("");
- }
- mtUser.setSex(mtUser.getSex());
- mtUser.setStatus(StatusEnum.ENABLED.getKey());
- Date time = new Date();
- mtUser.setCreateTime(time);
- mtUser.setUpdateTime(time);
- mtUser.setStartTime(mtUser.getStartTime());
- mtUser.setEndTime(mtUser.getEndTime());
- if (mtUser.getStoreId() != null) {
- mtUser.setStoreId(mtUser.getStoreId());
- } else {
- mtUser.setStoreId(0);
- }
- // 密码加密
- if (mtUser.getPassword() != null && StringUtil.isNotEmpty(mtUser.getPassword())) {
- String salt = SeqUtil.getRandomLetter(4);
- String password = CommonUtil.createPassword(mtUser.getPassword(), salt);
- mtUser.setPassword(password);
- mtUser.setSalt(salt);
- mtUser.setSource(MemberSourceEnum.REGISTER_BY_ACCOUNT.getKey());
- }
- if (mtUser.getSource() == null || StringUtil.isEmpty(mtUser.getSource())) {
- mtUser.setSource(MemberSourceEnum.BACKEND_ADD.getKey());
- }
- boolean result = save(mtUser);
- if (!result) {
- return null;
- }
- mtUser = queryMemberById(mtUser.getId());
- // 开卡赠礼
- openGiftService.openGift(mtUser.getId(), Integer.parseInt(mtUser.getGradeId()), true);
- // 新增用户发短信通知
- if (mtUser.getId() > 0 && mtUser.getStatus().equals(StatusEnum.ENABLED.getKey())) {
- // 发送短信
- List<String> mobileList = new ArrayList<>();
- mobileList.add(mtUser.getMobile());
- // 短信模板
- try {
- Map<String, String> params = new HashMap<>();
- sendSmsService.sendSms(mtUser.getMerchantId(), "register-sms", mobileList, params);
- } catch (BusinessCheckException e) {
- // empty
- }
- }
- return mtUser;
- }
- /**
- * 更新会员信息
- *
- * @param mtUser
- * @throws BusinessCheckException
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- @OperationServiceLog(description = "修改会员信息")
- public MtUser updateMember(MtUser mtUser) throws BusinessCheckException {
- mtUser.setUpdateTime(new Date());
- MtUser oldUserInfo = mtUserMapper.selectById(mtUser.getId());
- if (mtUser.getGradeId() != null && StringUtil.isNotEmpty(mtUser.getGradeId())) {
- if (!CommonUtil.isNumeric(mtUser.getGradeId())) {
- throw new BusinessCheckException("该会员等级有误");
- }
- }
- // 检查会员号是否重复
- if (StringUtil.isNotEmpty(mtUser.getUserNo())) {
- List<MtUser> userList = mtUserMapper.findMembersByUserNo(mtUser.getMerchantId(), mtUser.getUserNo());
- if (userList.size() > 0) {
- for(MtUser user: userList) {
- MtUser userInfo = user;
- if (userInfo.getId().intValue() != mtUser.getId().intValue()) {
- throw new BusinessCheckException("该会员号与会员ID等于" + userInfo.getId() + "重复啦");
- }
- }
- }
- }
- String gradeId = mtUser.getGradeId();
- mtUser.setGradeId(oldUserInfo.getGradeId());
- Boolean result = updateById(mtUser);
- if (result && mtUser.getGradeId() != null) {
- // 修改了会员等级,开卡赠礼
- if (!gradeId.equals(oldUserInfo.getGradeId())) {
- openGiftService.openGift(mtUser.getId(), Integer.parseInt(gradeId), false);
- }
- }
- return mtUser;
- }
- /**
- * 通过手机号新增会员
- *
- * @param mobile
- * @throws BusinessCheckException
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- @OperationServiceLog(description = "通过手机号新增会员")
- public MtUser addMemberByMobile(Integer merchantId, String mobile) throws BusinessCheckException {
- MtUser mtUser = new MtUser();
- mtUser.setUserNo(CommonUtil.createUserNo());
- String nickName = mobile.replaceAll("(\\d{3})\\d{4}(\\d{4})","$1****$2");
- mtUser.setName(nickName);
- mtUser.setMobile(mobile);
- MtUserGrade grade = userGradeService.getInitUserGrade(merchantId);
- if (grade != null) {
- mtUser.setGradeId(grade.getId() + "");
- }
- Date time = new Date();
- mtUser.setCreateTime(time);
- mtUser.setUpdateTime(time);
- mtUser.setBalance(new BigDecimal(0));
- mtUser.setPoint(0);
- mtUser.setDescription("手机号登录自动注册");
- mtUser.setIdcard("");
- mtUser.setStatus(StatusEnum.ENABLED.getKey());
- mtUser.setMerchantId(merchantId);
- mtUser.setStoreId(0);
- mtUser.setSource(MemberSourceEnum.MOBILE_LOGIN.getKey());
- mtUserMapper.insert(mtUser);
- mtUser = queryMemberByMobile(merchantId, mobile);
- // 开卡赠礼
- openGiftService.openGift(mtUser.getId(), Integer.parseInt(mtUser.getGradeId()), true);
- return mtUser;
- }
- /**
- * 根据手机号获取会员信息
- *
- * @param merchantId
- * @param mobile 手机号
- * @throws BusinessCheckException
- */
- @Override
- public MtUser queryMemberByMobile(Integer merchantId, String mobile) {
- if (mobile == null || StringUtil.isEmpty(mobile)) {
- return null;
- }
- List<MtUser> mtUser = mtUserMapper.queryMemberByMobile(merchantId, mobile);
- if (mtUser.size() > 0) {
- return mtUser.get(0);
- } else {
- return null;
- }
- }
- /**
- * 根据会员号号获取会员信息
- *
- * @param merchantId 商户ID
- * @param userNo 会员号
- * @throws BusinessCheckException
- */
- @Override
- public MtUser queryMemberByUserNo(Integer merchantId, String userNo) {
- if (userNo == null || StringUtil.isEmpty(userNo)) {
- return null;
- }
- List<MtUser> mtUser = mtUserMapper.findMembersByUserNo(merchantId, userNo);
- if (mtUser.size() > 0) {
- return mtUser.get(0);
- } else {
- return null;
- }
- }
- /**
- * 根据会员ID获取会员信息
- *
- * @param id 会员ID
- * @return
- * @throws BusinessCheckException
- */
- @Override
- public MtUser queryMemberById(Integer id) throws BusinessCheckException {
- MtUser mtUser = mtUserMapper.selectById(id);
- if (mtUser != null) {
- // 检查会员是否过期,过期就把会员等级置为初始等级
- MtUserGrade initGrade = userGradeService.getInitUserGrade(mtUser.getMerchantId());
- if (initGrade != null) {
- Date endTime = mtUser.getEndTime();
- if (endTime != null) {
- Date now = new Date();
- if (endTime.before(now)) {
- if (!mtUser.getGradeId().equals(initGrade.getId())) {
- mtUser.setGradeId(initGrade.getId().toString());
- updateById(mtUser);
- }
- }
- }
- // 会员等级为空,就把会员等级置为初始等级
- String userGradeId = mtUser.getGradeId();
- if (userGradeId == null && initGrade != null) {
- mtUser.setGradeId(initGrade.getId().toString());
- updateById(mtUser);
- openGiftService.openGift(mtUser.getId(), initGrade.getId(), false);
- } else {
- // 会员等级不存在或已禁用、删除,就把会员等级置为初始等级
- MtUserGrade myGrade = userGradeService.queryUserGradeById(mtUser.getMerchantId(), Integer.parseInt(userGradeId), id);
- if (myGrade == null || !myGrade.getStatus().equals(StatusEnum.ENABLED.getKey())) {
- mtUser.setGradeId(initGrade.getId().toString());
- updateById(mtUser);
- }
- }
- }
- }
- return mtUser;
- }
- /**
- * 根据会员名称获取会员信息
- *
- * @param merchantId 商户ID
- * @param name 会员名称
- * @throws BusinessCheckException
- */
- @Override
- public MtUser queryMemberByName(Integer merchantId, String name) {
- if (StringUtil.isNotEmpty(name)) {
- List<MtUser> userList = mtUserMapper.queryMemberByName(merchantId, name);
- if (userList.size() == 1) {
- return userList.get(0);
- }
- }
- return null;
- }
- /**
- * 根据openId获取会员信息(为空就注册)
- *
- * @param merchantId
- * @param openId
- * @throws BusinessCheckException
- */
- @Override
- public MtUser queryMemberByOpenId(Integer merchantId, String openId, JSONObject userInfo) throws BusinessCheckException {
- MtUser user = mtUserMapper.queryMemberByOpenId(merchantId, openId);
- String avatar = StringUtil.isNotEmpty(userInfo.getString("avatarUrl")) ? userInfo.getString("avatarUrl") : "";
- String gender = StringUtil.isNotEmpty(userInfo.getString("gender")) ? userInfo.getString("gender") : GenderEnum.MAN.getKey().toString();
- String country = StringUtil.isNotEmpty(userInfo.getString("country")) ? userInfo.getString("country") : "";
- String province = StringUtil.isNotEmpty(userInfo.getString("province")) ? userInfo.getString("province") : "";
- String city = StringUtil.isNotEmpty(userInfo.getString("city")) ? userInfo.getString("city") : "";
- String storeId = StringUtil.isNotEmpty(userInfo.getString("storeId")) ? userInfo.getString("storeId") : "0";
- String nickName = StringUtil.isNotEmpty(userInfo.getString("nickName")) ? userInfo.getString("nickName") : "";
- String mobile = StringUtil.isNotEmpty(userInfo.getString("phone")) ? userInfo.getString("phone") : "";
- String source = StringUtil.isNotEmpty(userInfo.getString("source")) ? userInfo.getString("source") : MemberSourceEnum.WECHAT_LOGIN.getKey();
- if (user == null) {
- MtUser mtUser = new MtUser();
- if (StringUtil.isNotEmpty(mobile)) {
- MtUser mtUserMobile = queryMemberByMobile(merchantId, mobile);
- if (mtUserMobile != null) {
- mtUser = mtUserMobile;
- }
- }
- // 昵称为空,用手机号
- if (StringUtil.isEmpty(nickName) && StringUtil.isNotEmpty(mobile)) {
- nickName = mobile.replaceAll("(\\d{3})\\d{4}(\\d{4})","$1****$2");
- }
- mtUser.setMerchantId(merchantId);
- String userNo = CommonUtil.createUserNo();
- mobile = CommonUtil.replaceXSS(mobile);
- avatar = CommonUtil.replaceXSS(avatar);
- nickName = CommonUtil.replaceXSS(nickName);
- mtUser.setUserNo(userNo);
- mtUser.setMobile(mobile);
- mtUser.setAvatar(avatar);
- mtUser.setName(nickName);
- mtUser.setOpenId(openId);
- MtUserGrade grade = userGradeService.getInitUserGrade(merchantId);
- if (grade != null) {
- mtUser.setGradeId(grade.getId() + "");
- }
- Date time = new Date();
- mtUser.setCreateTime(time);
- mtUser.setUpdateTime(time);
- mtUser.setBalance(new BigDecimal(0));
- mtUser.setPoint(0);
- mtUser.setDescription("微信登录自动注册");
- mtUser.setIdcard("");
- mtUser.setStatus(StatusEnum.ENABLED.getKey());
- mtUser.setAddress(country + province + city);
- // 微信用户 1:男;2:女 0:未知
- if (gender.equals(GenderEnum.FEMALE.getKey().toString())) {
- gender = GenderEnum.UNKNOWN.getKey().toString();
- } else if (gender.equals(GenderEnum.UNKNOWN.getKey().toString())) {
- gender = GenderEnum.FEMALE.getKey().toString();
- }
- mtUser.setSex(Integer.parseInt(gender));
- if (StringUtil.isNotEmpty(storeId)) {
- mtUser.setStoreId(Integer.parseInt(storeId));
- } else {
- mtUser.setStoreId(0);
- }
- mtUser.setSource(source);
- if (mtUser.getId() == null || mtUser.getId() <= 0) {
- save(mtUser);
- } else {
- updateById(mtUser);
- }
- user = mtUserMapper.queryMemberByOpenId(merchantId, openId);
- // 开卡赠礼
- openGiftService.openGift(user.getId(), Integer.parseInt(user.getGradeId()), true);
- } else {
- // 已被禁用
- if (user.getStatus().equals(StatusEnum.DISABLE.getKey())) {
- return null;
- }
- // 补充手机号
- if (StringUtil.isNotEmpty(mobile)) {
- user.setMobile(mobile);
- updateById(user);
- }
- // 补充会员号
- if (StringUtil.isEmpty(user.getUserNo())) {
- user.setUserNo(CommonUtil.createUserNo());
- updateById(user);
- }
- }
- return user;
- }
- /**
- * 根据等级ID获取会员等级信息
- *
- * @param id 等级ID
- * @throws BusinessCheckException
- */
- @Override
- public MtUserGrade queryMemberGradeByGradeId(Integer id) {
- MtUserGrade gradeInfo = mtUserGradeMapper.selectById(id);
- return gradeInfo;
- }
- /**
- * 删除会员
- *
- * @param id 会员ID
- * @param operator 操作人
- * @throws BusinessCheckException
- */
- @Override
- @OperationServiceLog(description = "删除会员信息")
- public Integer deleteMember(Integer id, String operator) throws BusinessCheckException {
- MtUser mtUser = mtUserMapper.selectById(id);
- if (null == mtUser) {
- throw new BusinessCheckException("该会员不存在,请确认");
- }
- // 是否是店铺员工
- MtStaff mtStaff = staffService.queryStaffByUserId(id);
- if (mtStaff != null && mtStaff.getAuditedStatus().equals(StatusEnum.ENABLED.getKey())) {
- throw new BusinessCheckException("该会员已关联店铺员工”"+ mtStaff.getRealName()+"“,若要删除请先删除该员工信息");
- }
- mtUser.setStatus(StatusEnum.DISABLE.getKey());
- mtUser.setUpdateTime(new Date());
- mtUser.setOperator(operator);
- updateById(mtUser);
- return mtUser.getId();
- }
- /**
- * 根据条件搜索会员分组
- *
- * @param params
- * @return
- * */
- @Override
- public List<MtUserGrade> queryMemberGradeByParams(Map<String, Object> params) {
- if (params == null) {
- params = new HashMap<>();
- }
- List<MtUserGrade> result = mtUserGradeMapper.selectByMap(params);
- return result;
- }
- /**
- * 获取会员数量
- *
- * @param merchantId
- * @param storeId
- * @return
- * */
- @Override
- public Long getUserCount(Integer merchantId, Integer storeId) {
- if (storeId > 0) {
- return mtUserMapper.getStoreUserCount(storeId);
- } else {
- return mtUserMapper.getUserCount(merchantId);
- }
- }
- /**
- * 获取会员数量
- *
- * @param merchantId
- * @param storeId
- * @param beginTime
- * @param endTime
- * @return
- * */
- @Override
- public Long getUserCount(Integer merchantId, Integer storeId, Date beginTime, Date endTime) {
- if (storeId > 0) {
- return mtUserMapper.getStoreUserCountByTime(storeId, beginTime, endTime);
- } else {
- return mtUserMapper.getUserCountByTime(merchantId, beginTime, endTime);
- }
- }
- /**
- * 获取会员数量
- *
- * @param merchantId
- * @param storeId
- * @param beginTime
- * @param endTime
- * @return
- * */
- @Override
- public Long getActiveUserCount(Integer merchantId, Integer storeId, Date beginTime, Date endTime) {
- if (storeId > 0) {
- return mtUserActionMapper.getStoreActiveUserCount(storeId, beginTime, endTime);
- } else {
- return mtUserActionMapper.getActiveUserCount(merchantId, beginTime, endTime);
- }
- }
- /**
- * 重置手机号
- *
- * @param mobile 手机号码
- * @param userId 会员ID
- * @throws BusinessCheckException
- */
- @Override
- public void resetMobile(String mobile, Integer userId) {
- if (mobile == null || StringUtil.isEmpty(mobile)) {
- return;
- }
- mtUserMapper.resetMobile(mobile, userId);
- }
- }
|