package com.dsh.account.service.impl;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.dsh.account.entity.RechargeRecords;
|
import com.dsh.account.entity.TAppUser;
|
import com.dsh.account.entity.TStudent;
|
import com.dsh.account.entity.VipPayment;
|
import com.dsh.account.enums.RechargeRecordEnum;
|
import com.dsh.account.feignclient.activity.MerChandiseClient;
|
import com.dsh.account.feignclient.activity.UserConponClient;
|
import com.dsh.account.feignclient.activity.model.CommodityRequest;
|
import com.dsh.account.feignclient.activity.model.PointsMerchandise;
|
import com.dsh.account.feignclient.competition.DeductionCompetitionsClient;
|
import com.dsh.account.feignclient.competition.model.PaymentCompetition;
|
import com.dsh.account.feignclient.course.CoursePackageClient;
|
import com.dsh.account.feignclient.course.CoursePaymentClient;
|
import com.dsh.account.feignclient.course.model.*;
|
import com.dsh.account.feignclient.other.ImgConfigClient;
|
import com.dsh.account.feignclient.other.RechargeConfigClient;
|
import com.dsh.account.feignclient.other.StoreClient;
|
import com.dsh.account.feignclient.other.model.Store;
|
import com.dsh.account.feignclient.other.model.TImgConfig;
|
import com.dsh.account.mapper.RechargeRecordsMapper;
|
import com.dsh.account.mapper.TAppUserMapper;
|
import com.dsh.account.mapper.TStudentMapper;
|
import com.dsh.account.mapper.VipPaymentMapper;
|
import com.dsh.account.model.AddAppUserVo;
|
import com.dsh.account.model.JoinPlayPaiVo;
|
import com.dsh.account.model.LoginSMSCodeVo;
|
import com.dsh.account.model.LoginWeChatVo;
|
import com.dsh.account.model.dto.Coupon;
|
import com.dsh.account.model.vo.classDetails.CourseVenue;
|
import com.dsh.account.model.vo.classDetails.ExerciseVideo;
|
import com.dsh.account.model.vo.classDetails.RegisteredCourse;
|
import com.dsh.account.model.vo.classDetails.WeekedCourse;
|
import com.dsh.account.model.vo.classDetails.classInsVo.ClassInfoVo;
|
import com.dsh.account.model.vo.userBenefitDetail.*;
|
import com.dsh.account.service.TAppUserService;
|
import com.dsh.account.util.*;
|
import com.dsh.account.util.akeylogin.Md5Util;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.StringUtils;
|
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletRequest;
|
import java.io.IOException;
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
/**
|
* <p>
|
* 用户信息 服务实现类
|
* </p>
|
*
|
* @author administrator
|
* @since 2023-06-14
|
*/
|
@Service
|
public class TAppUserServiceImpl extends ServiceImpl<TAppUserMapper, TAppUser> implements TAppUserService {
|
|
|
@Resource
|
private TStudentMapper tsmapper;
|
|
@Resource
|
private ImgConfigClient configClient;
|
|
@Autowired
|
private ALiSendSms aLiSendSms;
|
|
@Autowired
|
private RedisUtil redisUtil;
|
|
@Autowired
|
private GDMapGeocodingUtil gdMapGeocodingUtil;
|
|
@Autowired
|
private JwtTokenUtil jwtTokenUtil;
|
|
@Resource
|
private CoursePaymentClient paymentClient;
|
|
@Resource
|
private StoreClient storeClient;
|
|
@Resource
|
private MerChandiseClient mcClient;
|
|
@Resource
|
private ImgConfigClient icfgClient;
|
|
@Resource
|
private VipPaymentMapper vipPaymentMapper;
|
|
@Resource
|
private RechargeRecordsMapper rrMapper;
|
|
@Resource
|
private RechargeConfigClient reconMapper;
|
|
@Resource
|
private UserConponClient ucponClient;
|
|
@Resource
|
private CoursePackageClient cpageClient;
|
|
@Resource
|
private DeductionCompetitionsClient deducClient;
|
|
@Override
|
public ClassInfoVo queryUserOfStus(Integer id,String latitude,String longitude) {
|
TAppUser tAppUser = this.baseMapper.selectById(id);
|
ClassInfoVo classInfoVo = new ClassInfoVo();
|
if (ToolUtil.isNotEmpty(tAppUser)){
|
List<TStudent> tStudents = tsmapper.selectList(new QueryWrapper<TStudent>()
|
.eq("appUserId",tAppUser.getId())
|
.eq("state",1)
|
.eq("isDefault",1));
|
if (tStudents.size() > 0 ){
|
TStudent tStudent = tStudents.get(0);
|
classInfoVo.setStuId(tStudent.getId());
|
classInfoVo.setIsThere(1);
|
classInfoVo.setStuImg(tStudent.getHeadImg());
|
classInfoVo.setStuSex(tStudent.getSex());
|
classInfoVo.setStuAge(DateUtil.age(tStudent.getBirthday()));
|
classInfoVo.setStuName(tStudent.getName());
|
classInfoVo.setHeight(tStudent.getHeight());
|
classInfoVo.setWeight(tStudent.getWeight());
|
classInfoVo.setBmi(tStudent.getBmi());
|
|
List<RegisteredCourse> courseList = new ArrayList<>();
|
// 总学时数
|
int total = 0;
|
// 已扣数
|
int deduct = 0;
|
// 剩余数
|
int remain = 0;
|
List<StuCourseResp> stuCoursePayment = paymentClient.getStuCoursePayment();
|
if (stuCoursePayment.size() > 0){
|
for (StuCourseResp tCoursePackagePayment : stuCoursePayment) {
|
RegisteredCourse course = new RegisteredCourse();
|
course.setCourseId(tCoursePackagePayment.getCourseId());
|
course.setCourseName(tCoursePackagePayment.getCourseName());
|
total = total + (ToolUtil.isEmpty(tCoursePackagePayment.getTotalCourseNums()) ? 0 : tCoursePackagePayment.getTotalCourseNums());
|
deduct = deduct + (ToolUtil.isEmpty(tCoursePackagePayment.getDeductionNums()) ? 0 : tCoursePackagePayment.getDeductionNums());
|
remain = remain + (ToolUtil.isEmpty(tCoursePackagePayment.getResidueNums())? 0 : tCoursePackagePayment.getResidueNums());
|
courseList.add(course);
|
}
|
}
|
classInfoVo.setCourseList(courseList);
|
|
classInfoVo.setTotalNums(total);
|
classInfoVo.setDeductedNums(deduct);
|
classInfoVo.setRemainingNums(remain);
|
|
List<CourseOfStoreVo> storeOfCourses = paymentClient.getStoreOfCourses();
|
classInfoVo.setWeekCourseList(dealDatas(storeOfCourses,longitude,latitude));
|
|
List<ExerciseVideo> videos = new ArrayList<>();
|
|
classInfoVo.setExerciseVideoList(videos);
|
}else {
|
classInfoVo.setIsThere(2);
|
List<TImgConfig> tImgConfigs = configClient.getNoneStuImgs();
|
if (tImgConfigs.size() > 0){
|
classInfoVo.setImgs(tImgConfigs.get(0).getContent());
|
}
|
}
|
}
|
return classInfoVo;
|
}
|
|
/**
|
* 处理数据
|
* @param storeOfCourses
|
* @param longitude
|
* @param latitude
|
* @return
|
*/
|
public List<WeekedCourse> dealDatas(List<CourseOfStoreVo> storeOfCourses,String longitude ,@RequestBody String latitude){
|
List<WeekedCourse> weekedCourses = new ArrayList<>();
|
for (int i = 1; i < 8; i++) {
|
WeekedCourse weekedCourse = new WeekedCourse();
|
List<CourseVenue> courseVenues = new ArrayList<>();
|
Map<Integer, List<CourseOfStoreVo>> map = storeOfCourses.stream().collect(Collectors.groupingBy(CourseOfStoreVo::getStoreId));
|
for (Map.Entry<Integer, List<CourseOfStoreVo>> integerListEntry : map.entrySet()) {
|
List<CourseOfStoreVo> value = integerListEntry.getValue();
|
CourseVenue courseVenue = new CourseVenue();
|
courseVenue.setStoreId(value.get(0).getStoreId());
|
courseVenue.setAreaName(value.get(0).getStoreName());
|
courseVenue.setSiteDistance(LonlatUtils.distance(Double.parseDouble(longitude), Double.parseDouble(latitude),
|
Double.parseDouble(value.get(0).getLon()), Double.parseDouble(value.get(0).getLat())) + "");
|
|
List<CourseVenue.CouList> courses = new ArrayList<>();
|
for (CourseOfStoreVo courseOfStoreVo : value) {
|
CourseVenue.CouList couList = new CourseVenue.CouList();
|
couList.setCourseID(courseOfStoreVo.getCourseId());
|
couList.setCourseName(courseOfStoreVo.getCourseName());
|
couList.setTimeStr(courseOfStoreVo.getClassStartTime() + "-" + courseOfStoreVo.getClassEndTime());
|
couList.setDetail("");
|
courses.add(couList);
|
}
|
courseVenue.setCourses(courses);
|
courseVenues.add(courseVenue);
|
}
|
weekedCourse.setDetails(courseVenues);
|
weekedCourses.add(weekedCourse);
|
}
|
return weekedCourses;
|
}
|
|
|
/**
|
* 获取短信验证码
|
* @param type 1:登录,2:注册,3:修改密码,4:忘记密码
|
* @param phone
|
* @return
|
* @throws Exception
|
*/
|
@Override
|
public ResultUtil getSMSCode(Integer type, String phone) throws Exception {
|
if(type == 2){
|
TAppUser tAppUser = this.baseMapper.selectOne(new QueryWrapper<TAppUser>().eq("phone", phone).ne("state", 3));
|
if(null != tAppUser){
|
return ResultUtil.error("账号已存在");
|
}
|
}
|
String numberRandom = UUIDUtil.getNumberRandom(6);
|
String templateCode = "";
|
if(type == 1 || type == 2){
|
templateCode = "SMS_161275250";
|
}
|
if(type == 3 || type == 4){
|
templateCode = "SMS_160960014";
|
}
|
aLiSendSms.sendSms(phone, templateCode, "{\"code\":\"" + numberRandom + "\"}");
|
redisUtil.setStrValue(phone, numberRandom, 300);
|
return ResultUtil.success();
|
}
|
|
|
/**
|
* 注册用户
|
* @return
|
* @throws Exception
|
*/
|
@Override
|
public ResultUtil addAppUser(AddAppUserVo addAppUserVo) throws Exception {
|
TAppUser tAppUser = this.baseMapper.selectOne(new QueryWrapper<TAppUser>().eq("phone", addAppUserVo.getPhone()).ne("state", 3));
|
if(null != tAppUser){
|
return ResultUtil.error("账号已存在");
|
}
|
String value = redisUtil.getValue(addAppUserVo.getPhone());
|
if(!"123456".equals(addAppUserVo.getCode()) && (ToolUtil.isEmpty(value) || !value.equals(addAppUserVo.getCode()))){
|
return ResultUtil.error("验证码无效");
|
}
|
|
tAppUser = new TAppUser();
|
tAppUser.setCode(UUIDUtil.getNumberRandom(16));
|
tAppUser.setPhone(addAppUserVo.getPhone());
|
tAppUser.setPassword(Md5Util.MD5Encode(addAppUserVo.getPassword(), null));
|
tAppUser.setIsVip(0);
|
tAppUser.setState(1);
|
tAppUser.setInsertTime(new Date());
|
this.baseMapper.insert(tAppUser);
|
return ResultUtil.success();
|
}
|
|
|
/**
|
* 账号密码登录
|
* @param phone
|
* @param password
|
* @return
|
* @throws Exception
|
*/
|
@Override
|
public ResultUtil loginPassword(String phone, String password) throws Exception {
|
TAppUser tAppUser = this.baseMapper.selectOne(new QueryWrapper<TAppUser>().eq("phone", phone).ne("state", 3));
|
if(null == tAppUser){
|
return ResultUtil.error("请先注册", "");
|
}
|
if(tAppUser.getState() == 2){
|
return ResultUtil.error("您的账号已被冻结", "");
|
}
|
password = Md5Util.MD5Encode(password, null);
|
if(!tAppUser.getPassword().equals(password)){
|
return ResultUtil.error("账号密码错误", "");
|
}
|
String token = getToken(tAppUser);
|
return ResultUtil.success(token);
|
}
|
|
|
/**
|
* 验证码登录
|
* @return
|
* @throws Exception
|
*/
|
@Override
|
public ResultUtil loginSMSCode(LoginSMSCodeVo loginSMSCodeVo) throws Exception {
|
String value = redisUtil.getValue(loginSMSCodeVo.getPhone());
|
if(!"123456".equals(loginSMSCodeVo.getCode()) && (ToolUtil.isEmpty(value) || !value.equals(loginSMSCodeVo.getCode()))){
|
return ResultUtil.error("验证码无效", "");
|
}
|
TAppUser tAppUser = this.baseMapper.selectOne(new QueryWrapper<TAppUser>().eq("phone", loginSMSCodeVo.getPhone()).ne("state", 3));
|
if(null == tAppUser){
|
tAppUser = new TAppUser();
|
tAppUser.setCode(UUIDUtil.getNumberRandom(16));
|
tAppUser.setPhone(loginSMSCodeVo.getPhone());
|
tAppUser.setPassword(Md5Util.MD5Encode("111111", null));
|
tAppUser.setIsVip(0);
|
tAppUser.setState(1);
|
this.baseMapper.insert(tAppUser);
|
}
|
if(tAppUser.getState() == 2){
|
return ResultUtil.error("您的账号已被冻结", "");
|
}
|
String token = getToken(tAppUser);
|
return ResultUtil.success(token);
|
}
|
|
|
/**
|
* 微信登录
|
* @return
|
* @throws Exception
|
*/
|
@Override
|
public ResultUtil loginWechat(LoginWeChatVo loginWechatVo) throws Exception {
|
TAppUser tAppUser = this.baseMapper.selectOne(new QueryWrapper<TAppUser>().eq("openid", loginWechatVo.getOpenId()).ne("state", 3));
|
if(null == tAppUser){
|
tAppUser = this.baseMapper.selectOne(new QueryWrapper<TAppUser>().eq("phone", loginWechatVo.getPhone()).ne("state", 3));
|
if(null == tAppUser){
|
tAppUser = new TAppUser();
|
tAppUser.setCode(UUIDUtil.getNumberRandom(16));
|
tAppUser.setOpenid(loginWechatVo.getOpenId());
|
tAppUser.setPhone(loginWechatVo.getPhone());
|
tAppUser.setPassword(Md5Util.MD5Encode("111111", null));
|
tAppUser.setIsVip(0);
|
tAppUser.setState(1);
|
tAppUser.setInsertTime(new Date());
|
this.baseMapper.insert(tAppUser);
|
}
|
}
|
if(tAppUser.getState() == 2){
|
return ResultUtil.error("您的账号已被冻结", "");
|
}
|
|
if(ToolUtil.isNotEmpty(tAppUser.getOpenid())){
|
tAppUser.setOpenid(loginWechatVo.getOpenId());
|
}
|
if(ToolUtil.isNotEmpty(tAppUser.getPhone())){
|
tAppUser.setPhone(loginWechatVo.getPhone());
|
}
|
this.updateById(tAppUser);
|
|
String token = getToken(tAppUser);
|
return ResultUtil.success(token);
|
}
|
|
|
/**
|
* 获取JWT token和存储个人信息
|
* @param appUser
|
* @return
|
*/
|
private String getToken(TAppUser appUser){
|
String randomKey = jwtTokenUtil.getRandomKey();
|
String token = jwtTokenUtil.generateToken(appUser.getId().toString(), randomKey);
|
redisUtil.setStrValue(token.substring(token.length() - 32), String.valueOf(appUser.getId()), 7 * 24 * 60 * 60);
|
redisUtil.setStrValue("USER_" + appUser.getPhone(), token.substring(token.length() - 32));
|
redisUtil.setStrValue("USER_" + appUser.getId(), token);
|
return token;
|
}
|
|
|
/**
|
* 修改密码
|
* @param phone
|
* @param code
|
* @param password
|
* @return
|
* @throws Exception
|
*/
|
@Override
|
public ResultUtil updatePassword(String phone, String code, String password) throws Exception {
|
String value = redisUtil.getValue(phone);
|
if(!"123456".equals(code) && (ToolUtil.isEmpty(value) || !value.equals(code))){
|
return ResultUtil.error("验证码无效");
|
}
|
TAppUser tAppUser = this.baseMapper.selectOne(new QueryWrapper<TAppUser>().eq("phone", phone).ne("state", 3));
|
if(tAppUser.getState() == 2){
|
return ResultUtil.error("您的账号已被冻结", "");
|
}
|
tAppUser.setPassword(Md5Util.MD5Encode(password, null));
|
this.updateById(tAppUser);
|
return ResultUtil.success();
|
}
|
|
|
/**
|
* 定时任务修改到期会员的状态
|
*/
|
@Override
|
public void membershipEnd() {
|
this.baseMapper.membershipEnd();
|
}
|
|
|
/**
|
* 获取加入玩湃首页数据
|
* @param lon
|
* @param lat
|
* @return
|
* @throws Exception
|
*/
|
@Override
|
public JoinPlayPaiVo queryJoinPlayPai(Integer uid, String lon, String lat) throws Exception {
|
TAppUser appUser = this.getById(uid);
|
if(ToolUtil.isEmpty(appUser.getProvince()) && ToolUtil.isNotEmpty(lon) && ToolUtil.isNotEmpty(lat)){
|
Map<String, String> geocode = gdMapGeocodingUtil.geocode(lon, lat);
|
if(null != geocode){
|
String province = geocode.get("province");
|
String provinceCode = geocode.get("provinceCode");
|
String city = geocode.get("city");
|
String cityCode = geocode.get("cityCode");
|
appUser.setProvince(province);
|
appUser.setProvinceCode(provinceCode);
|
appUser.setCity(city);
|
appUser.setCityCode(cityCode);
|
this.updateById(appUser);
|
}
|
}
|
|
|
JoinPlayPaiVo joinPlayPaiVo = new JoinPlayPaiVo();
|
joinPlayPaiVo.setIsVip(appUser.getIsVip());
|
if(ToolUtil.isEmpty(lon) ||ToolUtil.isEmpty(lat)){
|
return joinPlayPaiVo;
|
}
|
|
Map<String, String> geocode = gdMapGeocodingUtil.geocode(lon, lat);
|
if(null != geocode){
|
String provinceCode = geocode.get("provinceCode");
|
String cityCode = geocode.get("cityCode");
|
List<Store> stores = storeClient.queryStoreList(new QueryStoreList(provinceCode, cityCode));
|
Store s = null;
|
Double d = 0D;
|
for (Store store : stores) {
|
Map<String, Double> distance = GeodesyUtil.getDistance(lon + "," + lat, store.getLon() + "," + store.getLat());
|
Double wgs84 = distance.get("WGS84");
|
if(s == null || d.compareTo(wgs84) < 0){
|
s = store;
|
d = wgs84;
|
}
|
}
|
joinPlayPaiVo.setName(s.getName());
|
joinPlayPaiVo.setLon(s.getLon());
|
joinPlayPaiVo.setLat(s.getLat());
|
joinPlayPaiVo.setStoreId(s.getId());
|
}
|
return joinPlayPaiVo;
|
}
|
|
@Override
|
public IndexOfUserBenefirVo queryBenefitDetails(Integer appUserId) {
|
IndexOfUserBenefirVo benefirVo = new IndexOfUserBenefirVo();
|
|
TAppUser appUser = this.getById(appUserId);
|
benefirVo.setUserHeadImg(appUser.getHeadImg());
|
benefirVo.setUserName(appUser.getName());
|
if (appUser.getIsVip() == 1){
|
benefirVo.setIsMember("年度会员");
|
}else {
|
benefirVo.setIsMember("普通用户");
|
}
|
benefirVo.setCommodities(mcClient.getConvertibleGoods());
|
benefirVo.setImage(icfgClient.getImageConfig());
|
return benefirVo;
|
}
|
|
@Override
|
public BillingDetailsVo queryUserBillingDetails(String yearMonth, Integer recordId, Integer appUserId) {
|
BillingDetailsVo vo = new BillingDetailsVo();
|
List<BillingDetailsVo.ConsumeDetail> details = new ArrayList<>();
|
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM-dd HH:mm");
|
Date monthStart = null;
|
Date monthEnd = null;
|
if (StringUtils.hasText(yearMonth)) {
|
monthStart = DateTimeHelper.getCurrentIdetMouthStart(yearMonth);
|
monthEnd = DateTimeHelper.getCurrentIdeaMouthEnd(yearMonth);
|
} else {
|
monthStart = DateTimeHelper.getCurrentMouthStart();
|
monthEnd = DateTimeHelper.getCurrentMouthEnd();
|
}
|
// 1.赛事报名
|
List<PaymentCompetition> allCompetitionPayRecord = deducClient.getAllCompetitionPayRecord(appUserId);
|
if (allCompetitionPayRecord.size() > 0 ){
|
for (PaymentCompetition paymentCompetition : allCompetitionPayRecord) {
|
BillingDetailsVo.ConsumeDetail consumeDetail = new BillingDetailsVo.ConsumeDetail();
|
consumeDetail.setConsumeName(RechargeRecordEnum.EVENT_REGISTRATION.getMsg());
|
consumeDetail.setConsumeTime(simpleDateFormat.format(paymentCompetition.getInsertTime()));
|
consumeDetail.setConsumeAmount("-" + paymentCompetition.getAmount());
|
details.add(consumeDetail);
|
}
|
}
|
// 2.取消赛事报名
|
List<PaymentCompetition> cancelOrderOfUserPayRecord = deducClient.getCancelOrderOfUserPayRecord(appUserId);
|
if (cancelOrderOfUserPayRecord.size() > 0 ){
|
for (PaymentCompetition paymentCompetition : cancelOrderOfUserPayRecord) {
|
BillingDetailsVo.ConsumeDetail consumeDetail = new BillingDetailsVo.ConsumeDetail();
|
consumeDetail.setConsumeName(RechargeRecordEnum.CANCEL_EVENT_REGISTRATION.getMsg());
|
consumeDetail.setConsumeTime(simpleDateFormat.format(paymentCompetition.getInsertTime()));
|
consumeDetail.setConsumeAmount("+" + paymentCompetition.getAmount());
|
details.add(consumeDetail);
|
}
|
}
|
// 3.课包购买
|
List<TCoursePackagePayment> amountPayRecord = paymentClient.getAmountPayRecord(appUserId);
|
if (amountPayRecord.size() > 0 ){
|
for (TCoursePackagePayment coursePackagePayment : amountPayRecord) {
|
BillingDetailsVo.ConsumeDetail consumeDetail = new BillingDetailsVo.ConsumeDetail();
|
consumeDetail.setConsumeName(RechargeRecordEnum.COURSE_PACKAGE_PURCHASE.getMsg());
|
consumeDetail.setConsumeTime(simpleDateFormat.format(coursePackagePayment.getInsertTime()));
|
consumeDetail.setConsumeAmount("-" + coursePackagePayment.getCashPayment());
|
details.add(consumeDetail);
|
}
|
}
|
// 4.场地预约
|
// 5.智慧球场
|
// 6.年度会员
|
List<VipPayment> vipPayments = vipPaymentMapper.selectList(new QueryWrapper<VipPayment>()
|
.eq("payStatus", 2)
|
.eq("appUserId", appUserId)
|
.between("insertTime", monthStart, monthEnd));
|
if (vipPayments.size() > 0) {
|
for (VipPayment vipPayment : vipPayments) {
|
BillingDetailsVo.ConsumeDetail consumeDetail = new BillingDetailsVo.ConsumeDetail();
|
consumeDetail.setConsumeName(RechargeRecordEnum.ANNUAL_MEMBERSHIP.getMsg());
|
consumeDetail.setConsumeTime(simpleDateFormat.format(vipPayment.getInsertTime()));
|
consumeDetail.setConsumeAmount("-" + vipPayment.getAmount());
|
details.add(consumeDetail);
|
}
|
}
|
// 7.充值
|
List<RechargeRecords> rechargeRecords = rrMapper.selectList(new QueryWrapper<RechargeRecords>()
|
.eq("payStatus", 2)
|
.eq("appUserId", appUserId)
|
.between("insertTime", monthStart, monthEnd));
|
if (rechargeRecords.size() > 0) {
|
for (RechargeRecords rechargeRecord : rechargeRecords) {
|
BillingDetailsVo.ConsumeDetail consumeDetail = new BillingDetailsVo.ConsumeDetail();
|
consumeDetail.setConsumeName(RechargeRecordEnum.RECHARGE.getMsg() + ":" + rechargeRecord.getPlayPaiCoins());
|
consumeDetail.setConsumeTime(simpleDateFormat.format(rechargeRecord.getInsertTime()));
|
consumeDetail.setConsumeAmount("-" + rechargeRecord.getAmount());
|
details.add(consumeDetail);
|
}
|
}
|
|
vo.setDetails(details);
|
return vo;
|
}
|
|
@Override
|
public void cancellation(Integer appUserId) {
|
TAppUser tAppUser = this.baseMapper.selectById(appUserId);
|
if (null != tAppUser){
|
tAppUser.setState(3);
|
this.baseMapper.updateById(tAppUser);
|
}
|
}
|
|
@Override
|
public List<RechargeCentVo> getSysRechargeConfig(Integer appUserId) {
|
List<RechargeCentVo> centVos = new ArrayList<>();
|
TAppUser tAppUser = this.baseMapper.selectById(appUserId);
|
List<Map<String, Object>> rechargeConfig = reconMapper.getRechargeConfig();
|
if (rechargeConfig.size() > 0 ){
|
for (Map<String, Object> stringObjectMap : rechargeConfig) {
|
RechargeCentVo vo = new RechargeCentVo();
|
vo.setAmount("¥ "+stringObjectMap.get("money"));
|
if (tAppUser.getIsVip() == 1){
|
vo.setWpGold(stringObjectMap.get("MemberCoins")+"币");
|
}else {
|
vo.setWpGold(stringObjectMap.get("usersCoins")+"币");
|
}
|
centVos.add(vo);
|
}
|
}
|
return centVos;
|
}
|
|
@Override
|
public PointMallDetailsResponse queryAppUserIntegral(MallRequest request, Integer userIdFormRedis) {
|
PointMallDetailsResponse detailsResponse = new PointMallDetailsResponse();
|
List<PointMallDetailsResponse.Goods> goods = new ArrayList<>();
|
|
TAppUser tAppUser = this.baseMapper.selectById(userIdFormRedis);
|
detailsResponse.setName(tAppUser.getName());
|
detailsResponse.setIntegral(tAppUser.getIntegral());
|
detailsResponse.setHeadImg(tAppUser.getHeadImg());
|
|
CommodityRequest commodityRequest = new CommodityRequest();
|
commodityRequest.setLon(request.getLon());
|
commodityRequest.setLat(request.getLat());
|
List<PointsMerchandise> vicinityGoods = mcClient.getVicinityGoods(commodityRequest);
|
if (vicinityGoods.size() > 0) {
|
for (PointsMerchandise vicinityGood : vicinityGoods) {
|
PointMallDetailsResponse.Goods commodity = new PointMallDetailsResponse.Goods();
|
switch (vicinityGood.getType()) {
|
case 1:
|
commodity.setGoodId(vicinityGood.getId());
|
commodity.setGoodName(vicinityGood.getName());
|
commodity.setGoodImg(vicinityGood.getCover());
|
commodity.setCondition(vicinityGood.getRedemptionMethod());
|
if (vicinityGood.getRedemptionMethod() == 1) {
|
commodity.setIntegral(vicinityGood.getIntegral().intValue());
|
} else {
|
commodity.setIntegral(vicinityGood.getIntegral().intValue());
|
commodity.setAmount(vicinityGood.getCash());
|
}
|
commodity.setBelongsType(vicinityGood.getUserPopulation());
|
commodity.setGoodsType(1);
|
commodity.setNums(mcClient.getRedeemedQuantity(vicinityGood.getId()));
|
break;
|
case 2:
|
commodity.setGoodId(vicinityGood.getCoursePackageId());
|
CoursePackage coursePackage = cpageClient.queryCoursePackageById(vicinityGood.getCoursePackageId());
|
commodity.setGoodImg(coursePackage.getCoverDrawing());
|
commodity.setGoodName(coursePackage.getName());
|
commodity.setCondition(vicinityGood.getRedemptionMethod());
|
if (vicinityGood.getRedemptionMethod() == 1) {
|
commodity.setIntegral(vicinityGood.getIntegral().intValue());
|
} else {
|
commodity.setIntegral(vicinityGood.getIntegral().intValue());
|
commodity.setAmount(vicinityGood.getCash());
|
}
|
commodity.setBelongsType(vicinityGood.getUserPopulation());
|
commodity.setGoodsType(2);
|
commodity.setNums(mcClient.getRedeemedQuantity(vicinityGood.getId()));
|
break;
|
case 3:
|
commodity.setGoodId(vicinityGood.getId());
|
commodity.setGoodName(vicinityGood.getName());
|
commodity.setGoodImg(vicinityGood.getCover());
|
commodity.setCondition(vicinityGood.getRedemptionMethod());
|
if (vicinityGood.getRedemptionMethod() == 1) {
|
commodity.setIntegral(vicinityGood.getIntegral().intValue());
|
} else {
|
commodity.setIntegral(vicinityGood.getIntegral().intValue());
|
commodity.setAmount(vicinityGood.getCash());
|
}
|
commodity.setBelongsType(vicinityGood.getUserPopulation());
|
commodity.setGoodsType(3);
|
commodity.setNums(mcClient.getRedeemedQuantity(vicinityGood.getId()));
|
break;
|
default:
|
break;
|
}
|
goods.add(commodity);
|
}
|
}
|
List<Coupon> allCoupons = ucponClient.getAllCoupons(commodityRequest);
|
if (allCoupons.size() > 0) {
|
for (Coupon allCoupon : allCoupons) {
|
PointMallDetailsResponse.Goods commodity = new PointMallDetailsResponse.Goods();
|
commodity.setGoodId(allCoupon.getId());
|
commodity.setGoodName(allCoupon.getName());
|
commodity.setCondition(allCoupon.getRedemptionMethod());
|
commodity.setGoodImg(allCoupon.getCover());
|
if (allCoupon.getRedemptionMethod() == 1) {
|
commodity.setIntegral(allCoupon.getIntegral().intValue());
|
} else {
|
commodity.setIntegral(allCoupon.getIntegral().intValue());
|
commodity.setAmount(allCoupon.getCash());
|
}
|
commodity.setBelongsType(allCoupon.getUserPopulation());
|
commodity.setGoodsType(4);
|
commodity.setNums(ucponClient.getRedeemedQuantity(allCoupon.getId()));
|
goods.add(commodity);
|
}
|
}
|
if (StringUtils.hasText(request.getSearch())){
|
goods = goods.stream()
|
.filter(merchandise -> merchandise.getGoodName().contains(request.getSearch()))
|
.collect(Collectors.toList());
|
}
|
if (null != request.getRank()){
|
switch (request.getRank()){
|
case 1:
|
goods = goods.stream()
|
.sorted(Comparator.comparing(PointMallDetailsResponse.Goods::getIntegral).reversed())
|
.collect(Collectors.toList());
|
break;
|
case 2:
|
goods = goods.stream()
|
.sorted(Comparator.comparing(PointMallDetailsResponse.Goods::getIntegral))
|
.collect(Collectors.toList());
|
break;
|
case 3:
|
goods = goods.stream()
|
.sorted(Comparator.comparing(PointMallDetailsResponse.Goods::getNums).reversed())
|
.collect(Collectors.toList());
|
break;
|
default:
|
break;
|
}
|
|
}
|
if (null != request.getGoodsType()){
|
goods = goods.stream()
|
.filter(merchandise -> merchandise.getGoodsType().equals(request.getGoodsType()))
|
.collect(Collectors.toList());
|
}
|
detailsResponse.setGoods(goods);
|
return detailsResponse;
|
}
|
|
@Override
|
public ResultUtil uploadAppUserHeadImg(Integer appUserId, MultipartFile file, HttpServletRequest request) {
|
try {
|
String filePath = OssUploadUtil.ossUpload(request,file);
|
TAppUser tAppUser = this.baseMapper.selectById(appUserId);
|
tAppUser.setHeadImg(filePath);
|
this.baseMapper.updateById(tAppUser);
|
} catch (IOException e) {
|
ResultUtil.error("头像上传失败!");
|
}
|
|
return ResultUtil.success();
|
}
|
|
}
|