This commit is contained in:
韩鹏辉
2024-04-03 17:33:50 +08:00
34 changed files with 1823 additions and 123 deletions

View File

@@ -0,0 +1,93 @@
package com.chaozhanggui.system.cashierservice.service;
import com.chaozhanggui.system.cashierservice.dao.TbPlatformDictMapper;
import com.chaozhanggui.system.cashierservice.dao.TbProductSkuMapper;
import com.chaozhanggui.system.cashierservice.dao.TbShopInfoMapper;
import com.chaozhanggui.system.cashierservice.entity.TbPlatformDict;
import com.chaozhanggui.system.cashierservice.entity.TbProductSku;
import com.chaozhanggui.system.cashierservice.entity.dto.HomeDto;
import com.chaozhanggui.system.cashierservice.entity.vo.HomeUpVO;
import com.chaozhanggui.system.cashierservice.entity.vo.HomeVO;
import com.chaozhanggui.system.cashierservice.entity.vo.UserDutyVo;
import com.chaozhanggui.system.cashierservice.sign.CodeEnum;
import com.chaozhanggui.system.cashierservice.sign.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;
/**
* @author lyf
*/
@Service
@Slf4j
public class HomePageService {
@Resource
private TbShopInfoMapper shopInfoMapper;
@Resource
private TbProductSkuMapper productSkuMapper;
@Resource
private TbPlatformDictMapper platformDictMapper;
public Result homePage(HomeDto homeDto){
int beginNo;
if(homeDto.getPage() <=0){
beginNo = 0;
}else{
beginNo = (homeDto.getPage() - 1) * homeDto.getSize();
}
List<HomeVO> homeVO = shopInfoMapper.selectShopInfo(beginNo,homeDto.getSize());
List<Integer> objects = new ArrayList<>();
for (HomeVO o :homeVO) {
objects.add(o.getProductId());
}
//原价现价
List<TbProductSku> tbProductSkus = productSkuMapper.selectDownSku(objects);
//销量
List<UserDutyVo> userDutyVos = shopInfoMapper.searchUserDutyDetail(objects);
//组装数据
for (HomeVO o :homeVO) {
for (TbProductSku sku :tbProductSkus) {
if (o.getProductId().toString().equals(sku.getProductId())){
o.setOriginPrice(sku.getOriginPrice() == null?BigDecimal.ZERO:sku.getOriginPrice());
o.setSalePrice(sku.getSalePrice() == null?BigDecimal.ZERO:sku.getSalePrice());
}
}
if (userDutyVos == null){
o.setRealSalesNumber(BigDecimal.ZERO);
}else {
for (UserDutyVo duty : userDutyVos) {
if (o.getProductId().equals(duty.getProductId())) {
o.setRealSalesNumber(duty.getNumber());
}else {
o.setRealSalesNumber(BigDecimal.ZERO);
}
}
}
//共省金额
o.setSave(o.getOriginPrice().subtract(o.getSalePrice()));
if (o.getOriginPrice().compareTo(BigDecimal.ZERO) == 0){
o.setDiscount(null);
}else {
o.setDiscount(o.getSalePrice().divide(o.getOriginPrice(), 2, RoundingMode.DOWN).multiply(new BigDecimal("10")));
}
}
return Result.success(CodeEnum.SUCCESS,homeVO);
}
public Result homePageUp(String environment){
HomeUpVO homeUpVO = new HomeUpVO();
//轮播图
List<TbPlatformDict> carouselList = platformDictMapper.queryAllByType("carousel",environment);
homeUpVO.setCarousel(carouselList);
//金刚区
List<TbPlatformDict> districtList = platformDictMapper.queryAllByType("homeDistrict",environment);
homeUpVO.setDistrict(districtList);
return Result.success(CodeEnum.SUCCESS,homeUpVO);
}
}

View File

@@ -9,17 +9,16 @@ import com.chaozhanggui.system.cashierservice.redis.RedisCst;
import com.chaozhanggui.system.cashierservice.redis.RedisUtil;
import com.chaozhanggui.system.cashierservice.sign.CodeEnum;
import com.chaozhanggui.system.cashierservice.sign.Result;
import com.chaozhanggui.system.cashierservice.util.MD5Utils;
import com.chaozhanggui.system.cashierservice.util.TokenUtil;
import org.apache.commons.lang3.StringUtils;
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.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.*;
@Service
public class LoginService {
@@ -46,17 +45,16 @@ public class LoginService {
TbTokenMapper tbTokenMapper;
@Autowired
RedisUtil redisUtil;
@Transactional(rollbackFor = Exception.class)
public Result wxCustomLogin(String openId,String headImage,String nickName,String telephone,String qrCode,String ip) throws Exception {
public Result wxCustomLogin(String openId, String headImage, String nickName, String telephone, String qrCode, String ip) throws Exception {
TbUserInfo userInfo= tbUserInfoMapper.selectByOpenId(openId);
if(ObjectUtil.isNull(userInfo)){
userInfo=new TbUserInfo();
TbUserInfo userInfo = tbUserInfoMapper.selectByOpenId(openId);
if (ObjectUtil.isNull(userInfo)) {
userInfo = new TbUserInfo();
userInfo.setAmount(BigDecimal.ZERO);
userInfo.setChargeAmount(BigDecimal.ZERO);
@@ -65,9 +63,9 @@ public class LoginService {
userInfo.setConsumeAmount(BigDecimal.ZERO);
userInfo.setTotalScore(0);
userInfo.setLockScore(0);
userInfo.setHeadImg(ObjectUtil.isNotNull(headImage)?headImage:"");
userInfo.setNickName(ObjectUtil.isNotNull(nickName)?nickName:"微信用户");
userInfo.setTelephone(ObjectUtil.isNotNull(telephone)?telephone:"");
userInfo.setHeadImg(ObjectUtil.isNotNull(headImage) ? headImage : "");
userInfo.setNickName(ObjectUtil.isNotNull(nickName) ? nickName : "微信用户");
userInfo.setTelephone(ObjectUtil.isNotNull(telephone) ? telephone : "");
userInfo.setMiniAppOpenId(openId);
userInfo.setStatus(Byte.parseByte("1"));
userInfo.setParentType("PERSON");
@@ -82,31 +80,39 @@ public class LoginService {
userInfo.setUpdatedAt(System.currentTimeMillis());
tbUserInfoMapper.insert(userInfo);
}else {
userInfo.setHeadImg(ObjectUtil.isNotNull(headImage)?headImage:"");
userInfo.setNickName(ObjectUtil.isNotNull(nickName)?nickName:"微信用户");
userInfo.setTelephone(ObjectUtil.isNotNull(telephone)?telephone:"");
} else {
userInfo.setHeadImg(ObjectUtil.isNotNull(headImage) ? headImage : "");
userInfo.setNickName(ObjectUtil.isNotNull(nickName) ? nickName : "微信用户");
userInfo.setTelephone(ObjectUtil.isNotNull(telephone) ? telephone : "");
tbUserInfoMapper.updateByPrimaryKeySelective(userInfo);
}
//app与微信用户 互相关联
if (ObjectUtil.isNotNull(telephone)) {
TbUserInfo appUser = tbUserInfoMapper.selectByPhone(telephone);
if (appUser != null) {
TbUserInfo wechatUser = tbUserInfoMapper.selectByOpenId(openId);
appUser.setUserId(wechatUser.getId());
tbUserInfoMapper.updateByPrimaryKey(appUser);
wechatUser.setUserId(appUser.getId());
tbUserInfoMapper.updateByPrimaryKey(wechatUser);
}
}
TbShopInfo tbShopInfo = null;
if (ObjectUtil.isEmpty(qrCode)) {
tbShopInfo = tbShopInfoMapper.selectByPhone(defaultPhone);
TbShopInfo tbShopInfo=null;
if(ObjectUtil.isEmpty(qrCode)){
tbShopInfo=tbShopInfoMapper.selectByPhone(defaultPhone);
}else {
tbShopInfo= tbShopInfoMapper.selectByQrCode(qrCode);
} else {
tbShopInfo = tbShopInfoMapper.selectByQrCode(qrCode);
}
TbShopUser tbShopUser=null;
Map<String,String> shopMap=new HashMap<>();
if(ObjectUtil.isNotEmpty(tbShopInfo)){
tbShopUser= tbShopUserMapper.selectByUserIdAndShopId(userInfo.getId().toString(),tbShopInfo.getId().toString());
if(ObjectUtil.isEmpty(tbShopUser)){
tbShopUser=new TbShopUser();
TbShopUser tbShopUser = null;
Map<String, String> shopMap = new HashMap<>();
if (ObjectUtil.isNotEmpty(tbShopInfo)) {
tbShopUser = tbShopUserMapper.selectByUserIdAndShopId(userInfo.getId().toString(), tbShopInfo.getId().toString());
if (ObjectUtil.isEmpty(tbShopUser)) {
tbShopUser = new TbShopUser();
tbShopUser.setAmount(BigDecimal.ZERO);
tbShopUser.setCreditAmount(BigDecimal.ZERO);
tbShopUser.setConsumeAmount(BigDecimal.ZERO);
@@ -119,32 +125,31 @@ public class LoginService {
tbShopUser.setCreatedAt(System.currentTimeMillis());
tbShopUserMapper.insert(tbShopUser);
}
shopMap.put("shopId",tbShopUser.getShopId());
shopMap.put("name",tbShopInfo.getShopName());
shopMap.put("amount",BigDecimal.ZERO.toPlainString());
shopMap.put("levelConsume",BigDecimal.ZERO.toPlainString());
shopMap.put("shopId", tbShopUser.getShopId());
shopMap.put("name", tbShopInfo.getShopName());
shopMap.put("amount", BigDecimal.ZERO.toPlainString());
shopMap.put("levelConsume", BigDecimal.ZERO.toPlainString());
}
//生成token 信息
String token = TokenUtil.generateToken(userInfo.getId(), userInfo.getMiniAppOpenId(), userInfo.getTelephone(),userInfo.getNickName());
String token = TokenUtil.generateToken(userInfo.getId(), userInfo.getMiniAppOpenId(), userInfo.getTelephone(), userInfo.getNickName());
//存储登录记录
TbToken tbToken = new TbToken(tbShopInfo.getId(), userInfo.getId(),"wx_lite", token, ip, "1", new Date());
TbToken tbToken = new TbToken(tbShopInfo.getId(), userInfo.getId(), "wx_lite", token, ip, "1", new Date());
tbTokenMapper.insert(tbToken);
Map<String,Object> map=new HashMap<>();
Map<String, Object> map = new HashMap<>();
try {
map.put("token",token);
map.put("userInfo",userInfo);
map.put("shopUser",shopMap);
map.put("shopInfo",tbShopInfo);
map.put("token", token);
map.put("userInfo", userInfo);
map.put("shopUser", shopMap);
map.put("shopInfo", tbShopInfo);
redisUtil.saveMessage(RedisCst.ONLINE_USER.concat(openId), JSON.toJSONString(map));
return Result.success(CodeEnum.SUCCESS,map);
return Result.success(CodeEnum.SUCCESS, map);
} catch (Exception e) {
e.printStackTrace();
@@ -152,67 +157,155 @@ public class LoginService {
return Result.fail("登录失败");
}
public TbUserInfo register(String phone, String password, String nickName) {
TbUserInfo userInfo = new TbUserInfo();
userInfo.setAmount(BigDecimal.ZERO);
userInfo.setChargeAmount(BigDecimal.ZERO);
userInfo.setLineOfCredit(BigDecimal.ZERO);
userInfo.setConsumeNumber(0);
userInfo.setConsumeAmount(BigDecimal.ZERO);
userInfo.setTotalScore(0);
userInfo.setLockScore(0);
userInfo.setHeadImg("");
userInfo.setNickName(nickName);
userInfo.setTelephone(phone);
userInfo.setStatus(Byte.parseByte("1"));
userInfo.setParentType("PERSON");
userInfo.setIsResource(Byte.parseByte("0"));
userInfo.setIsOnline(Byte.parseByte("0"));
userInfo.setIsVip(Byte.parseByte("0"));
userInfo.setSourcePath("APP");
userInfo.setIsAttentionMp(Byte.parseByte("0"));
userInfo.setSearchWord("||移动端用户");
userInfo.setLastLogInAt(System.currentTimeMillis());
userInfo.setCreatedAt(System.currentTimeMillis());
userInfo.setUpdatedAt(System.currentTimeMillis());
if(StringUtils.isNotBlank(password)){
userInfo.setPassword(MD5Utils.MD5Encode(password, "UTF-8"));
}
tbUserInfoMapper.insert(userInfo);
//注册时 app与微信小程序用户关联
TbUserInfo wechatUser = tbUserInfoMapper.selectUserByPhone(phone, "WECHAT-APP");
TbUserInfo appUser = tbUserInfoMapper.selectByPhone(phone);
if (wechatUser != null) {
appUser.setUserId(wechatUser.getId());
tbUserInfoMapper.updateByPrimaryKey(appUser);
wechatUser.setUserId(appUser.getId());
tbUserInfoMapper.updateByPrimaryKey(wechatUser);
}
return appUser;
}
public Result createCardNo(String id,String openId){
if(ObjectUtil.isEmpty(id)||ObjectUtil.isEmpty(openId)){
/**
* 手机号 短信验证码 校验
*
* @param code
* @param phone
* @return
*/
public boolean validate(String code, String phone) {
if (StringUtils.isNotBlank(code)) {
String message = redisUtil.getMessage(phone);
boolean tf = Objects.equals(code, message);
if (tf) {
redisUtil.deleteByKey(phone);
return true;
}
}
return false;
}
@Transactional(rollbackFor = Exception.class)
public Result appLogin(String username, String password) {
TbUserInfo userInfo = tbUserInfoMapper.selectUserByPhone(username, "APP");
if (ObjectUtil.isNull(userInfo)) {
//注册
userInfo=register(username, password, username);
}
if (StringUtils.isNotBlank(password) && !password.equalsIgnoreCase(userInfo.getPassword())) {
return Result.fail("密码错误");
}
//生成token 信息
String token = null;
try {
token = TokenUtil.generateToken(userInfo.getId(), null, userInfo.getTelephone(), userInfo.getNickName());
} catch (Exception e) {
throw new RuntimeException(e);
}
Map<String, Object> map = new HashMap<>();
try {
map.put("token", token);
map.put("userInfo", userInfo);
redisUtil.saveMessage(RedisCst.ONLINE_APP_USER.concat(userInfo.getId() + ""), JSON.toJSONString(map));
return Result.success(CodeEnum.SUCCESS, map);
} catch (Exception e) {
e.printStackTrace();
}
return Result.fail("登录失败");
}
public Result createCardNo(String id, String openId) {
if (ObjectUtil.isEmpty(id) || ObjectUtil.isEmpty(openId)) {
return Result.fail("head 信息不允许为空");
}
TbUserInfo userInfo= tbUserInfoMapper.selectByPrimaryKey(Integer.valueOf(id));
if(userInfo==null||ObjectUtil.isEmpty(userInfo)){
userInfo=tbUserInfoMapper.selectByOpenId(openId);
TbUserInfo userInfo = tbUserInfoMapper.selectByPrimaryKey(Integer.valueOf(id));
if (userInfo == null || ObjectUtil.isEmpty(userInfo)) {
userInfo = tbUserInfoMapper.selectByOpenId(openId);
}
if(userInfo==null||ObjectUtil.isEmpty(userInfo)){
if (userInfo == null || ObjectUtil.isEmpty(userInfo)) {
return Result.fail("用户信息不存在");
}
String cardNo= RandomUtil.randomNumbers(10);
String cardNo = RandomUtil.randomNumbers(10);
userInfo.setCardNo(cardNo);
userInfo.setUpdatedAt(System.currentTimeMillis());
tbUserInfoMapper.updateByPrimaryKeySelective(userInfo);
return Result.success(CodeEnum.SUCCESS,cardNo) ;
return Result.success(CodeEnum.SUCCESS, cardNo);
}
public Result userInfo(Integer userId,String shopId){
public Result userInfo(Integer userId, String shopId) {
TbUserInfo tbUserInfo = tbUserInfoMapper.selectByPrimaryKey(userId);
if (tbUserInfo == null){
return Result.success(CodeEnum.ENCRYPT,new ArrayList());
if (tbUserInfo == null) {
return Result.success(CodeEnum.ENCRYPT, new ArrayList());
}
TbShopInfo tbShopInfo=null;
if(ObjectUtil.isEmpty(shopId)){
tbShopInfo=tbShopInfoMapper.selectByPhone(defaultPhone);
}else {
tbShopInfo=tbShopInfoMapper.selectByPrimaryKey(Integer.valueOf(shopId));
TbShopInfo tbShopInfo = null;
if (ObjectUtil.isEmpty(shopId)) {
tbShopInfo = tbShopInfoMapper.selectByPhone(defaultPhone);
} else {
tbShopInfo = tbShopInfoMapper.selectByPrimaryKey(Integer.valueOf(shopId));
}
TbShopUser tbShopUser=null;
Map<String,String> shopMap=new HashMap<>();
if(ObjectUtil.isNotEmpty(tbShopInfo)){
tbShopUser= tbShopUserMapper.selectByUserIdAndShopId(tbUserInfo.getId().toString(),tbShopInfo.getId().toString());
shopMap.put("shopId",tbShopUser.getShopId());
shopMap.put("name",tbShopInfo.getShopName());
shopMap.put("amount",BigDecimal.ZERO.toPlainString());
shopMap.put("levelConsume",BigDecimal.ZERO.toPlainString());
TbShopUser tbShopUser = null;
Map<String, String> shopMap = new HashMap<>();
if (ObjectUtil.isNotEmpty(tbShopInfo)) {
tbShopUser = tbShopUserMapper.selectByUserIdAndShopId(tbUserInfo.getId().toString(), tbShopInfo.getId().toString());
shopMap.put("shopId", tbShopUser.getShopId());
shopMap.put("name", tbShopInfo.getShopName());
shopMap.put("amount", BigDecimal.ZERO.toPlainString());
shopMap.put("levelConsume", BigDecimal.ZERO.toPlainString());
}
Map<String,Object> map=new HashMap<>();
map.put("userInfo",tbUserInfo);
map.put("shopUser",shopMap);
map.put("shopInfo",tbShopInfo);
Map<String, Object> map = new HashMap<>();
map.put("userInfo", tbUserInfo);
map.put("shopUser", shopMap);
map.put("shopInfo", tbShopInfo);
return Result.success(CodeEnum.ENCRYPT,map);
return Result.success(CodeEnum.ENCRYPT, map);
}
public static void main(String[] args){
for(int i =0;i<10;i++){
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.println(RandomUtil.randomNumbers(10));
}
}

View File

@@ -38,7 +38,7 @@ public class OnlineUserService {
onlineUserDto.setLoginTime(new Date());
onlineUserDto.setShopId(shopId);
try {
redisUtils.set("online-token-"+token, onlineUserDto, MILLIS_MINUTE);
redisUtils.set("online-token-"+token, onlineUserDto, MILLIS_MINUTE);//30分钟
}catch (Exception e){
throw new MsgException("登录错误");
}