package cc.mrbird.febs.mall.service.impl; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.common.utils.AppContants; import cc.mrbird.febs.common.utils.LoginUserUtil; import cc.mrbird.febs.common.utils.RedisUtils; import cc.mrbird.febs.mall.dto.*; import cc.mrbird.febs.mall.entity.MallAppMember; import cc.mrbird.febs.mall.entity.MallMember; import cc.mrbird.febs.mall.mapper.MallAppMemberMapper; import cc.mrbird.febs.mall.mapper.MallGoodsCategoryMapper; import cc.mrbird.febs.mall.mapper.MallGoodsMapper; import cc.mrbird.febs.mall.mapper.MallMemberMapper; import cc.mrbird.febs.mall.service.IApiMallAppService; import cc.mrbird.febs.mall.vo.ApiMallAppMemberInfoVo; import cc.mrbird.febs.mall.vo.ApiMallGoodsListVo; import cc.mrbird.febs.mall.vo.MallGoodsCategoryVo; import cc.mrbird.febs.mall.vo.MallGoodsListVo; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.SecureUtil; import cn.hutool.crypto.asymmetric.KeyType; import cn.hutool.crypto.asymmetric.RSA; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.HashMap; import java.util.List; import java.util.Map; @Slf4j @Service @RequiredArgsConstructor public class ApiMallAppServiceImpl extends ServiceImpl implements IApiMallAppService { private final RedisUtils redisUtils; private final MallMemberMapper mallMemberMapper; private final MallGoodsCategoryMapper mallGoodsCategoryMapper; private final MallGoodsMapper mallGoodsMapper; @Override public FebsResponse appToLogin(LoginDto loginDto) { String md5Pwd = SecureUtil.md5(loginDto.getPassword()); MallMember mallMember = mallMemberMapper.selectInfoByAccountAndPwd(loginDto.getAccount(), md5Pwd); if (mallMember == null) { throw new FebsException("用户不存在或账号密码错误"); } String redisKey = AppContants.SY_APP_LOGIN_PREFIX + mallMember.getId(); String existToken = redisUtils.getString(redisKey); if (StrUtil.isNotBlank(existToken)) { Object o = redisUtils.get(existToken); if (ObjectUtil.isNotEmpty(o)) { redisUtils.del(existToken); } } String token = IdUtil.simpleUUID(); redisUtils.set(token, JSONObject.toJSONString(mallMember)); redisUtils.set(redisKey, token); Map authInfo = new HashMap<>(); authInfo.put("token", token); authInfo.put("rasToken", generateAsaToken(token)); return new FebsResponse().success().data(authInfo); } @Override public FebsResponse appMemberInfo(ApiMallAppMemberInfoDto apiMallAppMemberInfoDto) { Long memberId = LoginUserUtil.getLoginUser().getId(); List mallMembers = this.baseMapper.selectMemberInfoLikePhone(apiMallAppMemberInfoDto.getPhone()); return new FebsResponse().success().data(mallMembers); } @Override public FebsResponse findAllCategoryList() { List mallGoodsCategoryVos = mallGoodsCategoryMapper.selectAllCategoryListByIsApp(AppContants.IS_APP_CATEGORY); return new FebsResponse().success().data(mallGoodsCategoryVos); } @Override public FebsResponse findMallGoodsListNoPage(ApiMallGoodsQueryDto queryDto) { List mallGoodsListVos = mallGoodsMapper.selectMallGoodsListQueryNoPageIsApp(queryDto); return new FebsResponse().success().data(mallGoodsListVos); } @Override public FebsResponse createAppOrder(ApiAddOrderDto addOrderDto) { // return new FebsResponse().success().data(orderId).message("创建订单成功"); return new FebsResponse().success().message("创建订单成功"); } public String generateAsaToken(String token) { RSA rsa = new RSA(null, AppContants.PUBLIC_KEY); return rsa.encryptBase64(token + "_" + System.currentTimeMillis(), KeyType.PublicKey); } }