cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java
@@ -1,10 +1,8 @@ package com.dsh.account.controller; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.dsh.account.dto.SelectDto; import com.dsh.account.dto.UserInfoQueryDTO; import com.dsh.account.entity.Coach; import com.dsh.account.entity.TAppUser; import com.dsh.account.entity.TCourseInfoRecord; @@ -14,25 +12,19 @@ import com.dsh.account.service.IVipPaymentService; import com.dsh.account.service.TAppUserService; import com.dsh.account.service.TCourseInfoRecordService; import com.dsh.account.util.*; import com.dsh.account.vo.GroupCityInfoVO; import com.dsh.account.vo.UserInfoQueryVO; import com.dsh.account.vo.entity.DayData; import com.dsh.account.vo.entity.MonthData; import com.dsh.account.vo.entity.WeekData; import com.dsh.account.vo.entity.YearData; import com.dsh.account.util.PayMoneyUtil; import com.dsh.account.util.ResultUtil; import com.dsh.account.util.TokenUtil; import com.dsh.account.util.ToolUtil; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; import java.time.LocalDateTime; import java.time.LocalTime; import java.util.*; import java.util.List; @@ -58,9 +50,6 @@ @Autowired private TCourseInfoRecordService courseInfoRecordService; @Autowired private RedisUtil redisUtil; /** * 获取所有用户 @@ -219,27 +208,6 @@ public ResultUtil<String> loginWeChat(LoginWeChatVo loginWeChatVo){ try { return appUserService.loginWechat(loginWeChatVo); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/base/appUser/bind") @ApiOperation(value = "微信登录--绑定手机号", tags = {"APP-登录注册"}) @ApiImplicitParams({ }) public ResultUtil<String> bind(String phone,String openId,String code){ try { String value = redisUtil.getValue(phone); if(!code.equals(value)){ return ResultUtil.error("验证码无效", ""); } List<TAppUser> list = appUserService.list(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getOpenid, openId)); TAppUser tAppUser = list.get(0); tAppUser.setPhone(phone); appUserService.updateById(tAppUser); return ResultUtil.success(); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); @@ -486,6 +454,7 @@ } } /** * 根据名称模糊搜索用户 * @param name @@ -510,145 +479,5 @@ List<SelectDto> selectDtos = appUserService.getSelects(studentIds); System.out.println("=======selectDtos======>"+selectDtos); return selectDtos; } @PostMapping("/appUser/userInfo") public UserInfoQueryVO userInfo(@RequestBody UserInfoQueryDTO dto){ UserInfoQueryVO userInfoQueryVO = new UserInfoQueryVO(); LambdaQueryWrapper<TAppUser> wrapper = new LambdaQueryWrapper<>(); if(StringUtils.hasLength(dto.getCityCode())){ wrapper.eq(TAppUser::getCityCode,dto.getCityCode()); } if(Objects.nonNull(dto.getOperatorId())){ wrapper.eq(TAppUser::getInsertType,2); wrapper.eq(TAppUser::getAddUserId,dto.getOperatorId()); } if(Objects.nonNull(dto.getStoreId())){ wrapper.eq(TAppUser::getInsertType,3); wrapper.eq(TAppUser::getAddUserId,dto.getStoreId()); } // 查询会员总数,年度会员总数 int userCount = appUserService.count(wrapper); int userVipCount = appUserService.count(wrapper.eq(TAppUser::getIsVip,1)); userInfoQueryVO.setUserCount(userCount); userInfoQueryVO.setUserVipCount(userVipCount); if(Objects.nonNull(dto.getIsVip())){ wrapper.eq(TAppUser::getIsVip,dto.getIsVip()); } // 年度数据 List<YearData> yearData = appUserService.getYearUserCount(dto); userInfoQueryVO.setYearData(yearData); // 月度数据 List<MonthData> monthData = appUserService.getMonthUserCount(dto); userInfoQueryVO.setMonthData(monthData); // 获取最近四周 LocalDateTime minNow = LocalDateTime.now().with(LocalTime.MIN); LocalDateTime maxNow = LocalDateTime.now().with(LocalTime.MAX); // 周度数据 dto.setStartTime(minNow.minusDays(6).toString()); dto.setEndTime(maxNow.toString()); WeekData week4 = appUserService.getWeekUserCount4(dto); dto.setStartTime(minNow.minusDays(13).toString()); dto.setEndTime(maxNow.minusDays(6).toString()); WeekData week3 = appUserService.getWeekUserCount3(dto); dto.setStartTime(minNow.minusDays(20).toString()); dto.setEndTime(maxNow.minusDays(13).toString()); WeekData week2 = appUserService.getWeekUserCount2(dto); dto.setStartTime(minNow.minusDays(27).toString()); dto.setEndTime(maxNow.minusDays(20).toString()); WeekData week1 = appUserService.getWeekUserCount1(dto); List<WeekData> weekDataList = new ArrayList<>(); weekDataList.add(week1); weekDataList.add(week2); weekDataList.add(week3); weekDataList.add(week4); userInfoQueryVO.setWeekData(weekDataList); // 日度数据 dto.setStartTime(minNow.minusDays(6).toString()); dto.setEndTime(maxNow.toString()); List<DayData> dayData = appUserService.getDayUserCount(dto); userInfoQueryVO.setDayData(dayData); return userInfoQueryVO; } @PostMapping("/appUser/ageInfo") public Map<String,Long> ageInfo(@RequestBody UserInfoQueryDTO dto){ Map<String,Long> map = new HashMap<>(); LambdaQueryWrapper<TAppUser> wrapper = new LambdaQueryWrapper<>(); if(StringUtils.hasLength(dto.getCityCode())){ wrapper.eq(TAppUser::getCityCode,dto.getCityCode()); } if(Objects.nonNull(dto.getOperatorId())){ wrapper.eq(TAppUser::getInsertType,2); wrapper.eq(TAppUser::getAddUserId,dto.getOperatorId()); } if(Objects.nonNull(dto.getStoreId())){ wrapper.eq(TAppUser::getInsertType,3); wrapper.eq(TAppUser::getAddUserId,dto.getStoreId()); } List<TAppUser> list = appUserService.list(wrapper); // 查询会员 list.forEach(tAppUser->tAppUser.setAge(DateUtil.ageOfNow(tAppUser.getBirthday()))); map.put("age1", list.stream().filter(e -> e.getAge() > 0 && e.getAge() <= 12).count()); map.put("age2",list.stream().filter(e -> e.getAge() >= 13 && e.getAge() <= 18).count()); map.put("age3",list.stream().filter(e -> e.getAge() >= 19 && e.getAge() <= 25).count()); map.put("age4",list.stream().filter(e -> e.getAge() >= 26 && e.getAge() <= 35).count()); map.put("age5",list.stream().filter(e -> e.getAge() >= 36 && e.getAge() <= 50).count()); map.put("age6",list.stream().filter(e -> e.getAge() >= 51).count()); return map; } @PostMapping("/appUser/sexInfo") public Map<String,Integer> sexInfo(@RequestBody UserInfoQueryDTO dto){ Map<String,Integer> map = new HashMap<>(2); LambdaQueryWrapper<TAppUser> wrapper = new LambdaQueryWrapper<>(); if(StringUtils.hasLength(dto.getCityCode())){ wrapper.eq(TAppUser::getCityCode,dto.getCityCode()); } if(Objects.nonNull(dto.getOperatorId())){ wrapper.eq(TAppUser::getInsertType,2); wrapper.eq(TAppUser::getAddUserId,dto.getOperatorId()); } if(Objects.nonNull(dto.getStoreId())){ wrapper.eq(TAppUser::getInsertType,3); wrapper.eq(TAppUser::getAddUserId,dto.getStoreId()); } // 查询会员 int boyCount = appUserService.count(wrapper.eq(TAppUser::getGender,1)); int girlCount = appUserService.count(wrapper.eq(TAppUser::getGender,2)); map.put("boyCount",boyCount); map.put("girlCount",girlCount); return map; } @PostMapping("/appUser/groupCityInfo") public List<GroupCityInfoVO> groupCityInfo(@RequestBody UserInfoQueryDTO dto){ // 查询地区会员 return appUserService.groupCityInfo(dto); } } cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java
@@ -195,7 +195,7 @@ royaltyInfo.setRoyaltyDetailInfos(royaltyDetailInfos); model.setRoyaltyInfo(royaltyInfo); System.out.println("=================="+royaltyInfo); System.err.println("=================="+royaltyInfo); // cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java
@@ -79,10 +79,19 @@ @RequestMapping("/base/competition/listAllPayment") public List<PaymentCompetition> listAllPayment(@RequestBody CompetitionQuery query){ List<PaymentCompetition> paymentCompetitions = paymentCompetitionService.listAll(query); List<PaymentCompetition> result = new ArrayList<>(); if (query.getOperatorId()!=null){ for (PaymentCompetition paymentCompetition : paymentCompetitions) { Integer competitionId = paymentCompetition.getCompetitionId(); Competition byId = cttService.getById(competitionId); if (byId!=null){ Integer operatorId = byId.getOperatorId(); if (operatorId!=null){ if (operatorId == query.getOperatorId()){ result.add(paymentCompetition); } } } } } return paymentCompetitions; cloud-server-competition/src/main/java/com/dsh/competition/entity/Competition.java
@@ -229,7 +229,11 @@ @TableField("insertTime") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date insertTime; /** * 运营商ID */ @TableField("operatorId") private Integer operatorId; @Override protected Serializable pkVal() { cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java
@@ -27,10 +27,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.*; import java.util.stream.Collectors; @Api @@ -374,6 +371,8 @@ @ResponseBody @PostMapping("/course/addCourse") public void addCourse(@RequestBody TCourse course){ course.setState(1); course.setInsertTime(new Date()); courseService.save(course); } cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java
@@ -371,6 +371,14 @@ } List<RegisterOrderVO> res = packagePaymentService.listAllRegister(query); // 该运营商下没有门店 if (query.getStoresIds()!=null){ if (query.getStoresIds().size()==0){ List<RegisterOrderVO> registerOrderVOS = new ArrayList<>(); return registerOrderVOS; } } List<RegisterOrderVO> result = new ArrayList<>(); Iterator<RegisterOrderVO> iterator = res.iterator(); while (iterator.hasNext()) { cloud-server-course/src/main/resources/mapper/TCourseMapper.xml
@@ -27,7 +27,6 @@ </where> </update> <select id="queryCourseList" resultType="map"> select id, type, name, introduce, coverDrawing, state from t_course where state != 3 <if test="null != item.name and '' != item.name"> cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/model/Competition.java
@@ -238,7 +238,11 @@ private String eTime; @TableField(exist = false) private String rEndTime; /** * 运营商ID */ @TableField("operatorId") private Integer operatorId; @Override cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CourseClient.java
@@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import java.util.HashMap; import java.util.List; @@ -45,12 +46,11 @@ @PostMapping("/course/queryCourseLists") Page<Map<String, Object>> queryCourseLists(QueryCourseList queryCourseList); /** * 添加课程 * @param course */ @PostMapping("/course/queryCourseList") @PostMapping("/course/addCourse") void addCourse(TCourse course); cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java
@@ -115,28 +115,29 @@ public Object getIncomeData(Integer operatorId,Integer storeId) { // 报名课程查询query RegisterOrderQuery query = new RegisterOrderQuery(); // 充值记录查询query RechargeRecordsQuery rechargeRecordsQuery = new RechargeRecordsQuery(); // 赛事活动查询query CompetitionQuery competitionQuery = new CompetitionQuery(); // 会员支付查询query IncomeQuery incomeQuery = new IncomeQuery(); // 场地预约记录查询query SiteBookingQuery siteBookingQuery = new SiteBookingQuery(); // 根据运营商ID 查询运营商下的所有门店 if (operatorId!=null){ List<TStore> stores = storeService.list(new QueryWrapper<TStore>().eq("operatorId", operatorId)); // 拿到该运营商下的门店id集合 List<Integer> storeIds = stores.stream().map(TStore::getId).collect(Collectors.toList()); query.setStoresIds(storeIds); siteBookingQuery.setStoreIds(storeIds); } // 充值记录查询query RechargeRecordsQuery rechargeRecordsQuery = new RechargeRecordsQuery(); // 赛事活动查询query CompetitionQuery competitionQuery = new CompetitionQuery(); // 会员支付查询query IncomeQuery incomeQuery = new IncomeQuery(); // 场地预约记录查询query SiteBookingQuery siteBookingQuery = new SiteBookingQuery(); Integer roleType = UserExt.getUser().getObjectType(); rechargeRecordsQuery.setInsertType(roleType); query.setInsertType(roleType); competitionQuery.setInsertType(roleType); incomeQuery.setInsertType(roleType); incomeQuery.setInsertType(roleType); List<IncomeVO> incomeVOS = new ArrayList<>(); // 会员支付记录 @@ -193,10 +194,12 @@ if (competition.getAmount() != null) { temp.setAmount(new BigDecimal(competition.getAmount().toString())); } incomeVOS.add(temp); } // 预约场地 if (operatorId!=null){ if (siteBookingQuery.getStoreIds().size()==0){ }else{ List<SiteBooking> siteBookings = siteClient.listAll(siteBookingQuery); for (SiteBooking siteBooking : siteBookings) { IncomeVO temp = new IncomeVO(); @@ -209,6 +212,10 @@ } incomeVOS.add(temp); } } } // 积分商品 List<PointMerchandiseIncomeVo> amount = pointMercharsClient.getAmount(); for (PointMerchandiseIncomeVo pointMerchandiseIncomeVo : amount) { cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCourseController.java
@@ -80,8 +80,6 @@ /** * 获取列表数据 * @param name cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/SiteBookingQuery.java
@@ -1,5 +1,6 @@ package com.dsh.guns.modular.system.model; import io.swagger.models.auth.In; import lombok.Data; import java.math.BigDecimal; @@ -16,5 +17,6 @@ private BigDecimal amount; // 用户ids private List<Integer> userIds; // 门店ids private List<Integer> storeIds; } cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TCourse.java
@@ -1,8 +1,15 @@ package com.dsh.guns.modular.system.model; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.util.Date; @@ -15,42 +22,57 @@ * @since 2023-06-14 */ @Data public class TCourse { @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName("t_course") public class TCourse extends Model<TCourse> { private static final long serialVersionUID = 1L; /** * 主键 */ @TableId(value = "id", type = IdType.AUTO) private Integer id; /** * 课程名称 */ @TableField("name") private String name; /** * 类型(1=课后练习,2=运动教学视频,3=器材教学视频) */ @TableField("type") private Integer type; /** * 介绍 */ @TableField("introduce") private String introduce; /** * 封面图 */ @TableField("coverDrawing") private String coverDrawing; /** * 介绍图 */ @TableField("introductionDrawing") private String introductionDrawing; /** * 课程视频 */ @TableField("courseVideo") private String courseVideo; /** * 状态(1=正常,2=冻结,3=删除) */ @TableField("state") private Integer state; /** * 添加时间 */ @TableField("insertTime") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date insertTime; cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/operatorIncome.html
@@ -409,7 +409,7 @@ }); ajax.set("type",1); ajax.set("",id); ajax.set("operatorId",id); ajax.start(); // 营收 var income = echarts.init(document.getElementById('income')); cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TCouponAdd.html
@@ -107,16 +107,16 @@ <label class="col-sm-3 control-label">*发放方式: </label> <input class="col-sm-1 control-label" name="distributionMethod" type="radio" value="1" checked style="margin-top: 10px"/> <label class="col-sm-1" style="margin-left: -15px;width: 16%;margin-top: 7px">积分购买</label> <label class="col-sm-1" style="margin-left: -15px;width: 11%;margin-top: 7px">积分购买</label> <input class="col-sm-1 control-label" name="distributionMethod" type="radio" value="2" style="margin-left: 5%;margin-top: 10px;width: 13px;height: 13px"/> <label class="col-sm-1" style="width: 16%;margin-top: 7px">注册赠送</label> <label class="col-sm-1" style="width: 11%;margin-top: 7px">注册赠送</label> <input class="col-sm-1 control-label" name="distributionMethod" type="radio" value="3" style="margin-left: 4%;margin-top: 10px;width: 13px;height: 13px"/> <label class="col-sm-1" style="width: 16%;margin-top: 7px">自动发券</label> <label class="col-sm-1" style="width: 11%;margin-top: 7px">自动发券</label> <input class="col-sm-1 control-label" name="distributionMethod" type="radio" value="4" style="margin-left: 4%;margin-top: 10px;width: 13px;height: 13px"/> <label class="col-sm-1" style="width: 16%;margin-top: 7px">课包赠送</label> <label class="col-sm-1" style="width: 11%;margin-top: 7px">课包赠送</label> </div> </div> cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TCoupon.js
@@ -27,7 +27,7 @@ }}, {title: '发放方式', field: 'distributionMethod', visible: true, align: 'center', valign: 'middle', formatter: function (value, row, index) { return {1: "积分购买", 2: "注册赠送", 3: "自动发券"}[value] return {1: "积分购买", 2: "注册赠送", 3: "自动发券",4:"课包赠送"}[value] }}, {title: '有效期', field: 'timeValue', visible: true, align: 'center', valign: 'middle'}, {title: '用户人群', field: 'userPopulation', visible: true, align: 'center', valign: 'middle', cloud-server-other/src/main/java/com/dsh/other/model/SiteBookingQuery.java
@@ -16,5 +16,6 @@ private BigDecimal amount; // 用户ids private List<Integer> userIds; // 门店ids private List<Integer> storeIds; } cloud-server-other/src/main/resources/mapper/SiteBookingMapper.xml
@@ -29,6 +29,12 @@ #{id} </foreach> </if> <if test="query.storeIds != null and query.storeIds.size()>0"> AND t1.storeId IN <foreach collection="query.storeIds" separator="," item="id" open="(" close=")"> #{id} </foreach> </if> <if test="sTime !=null and sTime!= '' and eTime !=null and eTime!= ''"> and t1.insertTime between #{sTime} and #{eTime} </if>