| | |
| | | @ApiModelProperty(value = "剩余体验人数") |
| | | private Integer explorationSurp; |
| | | |
| | | @ApiModelProperty(value = "领券1开2关") |
| | | private Integer platformCouponFlag; |
| | | |
| | | @ApiModelProperty(value = "生日卡1开2关") |
| | | private Integer platformBirthdayFlag; |
| | | |
| | | } |
| | |
| | | package com.ruoyi.system.api.domain.vo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | |
| | | @ApiModelProperty(value = "商户类型1.经销商2.代理商") |
| | | private Integer shopType; |
| | | |
| | | @ApiModelProperty(value = "商户二维码地址") |
| | | private String shopCodeUrl; |
| | | |
| | | } |
| | |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.*; |
| | | import java.util.Calendar; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | |
| | | return day + "天" + hour + "小时" + min + "分钟"; |
| | | } |
| | | |
| | | public static long diffTime(Date startTime, Date endTime){ |
| | | // 获取Calendar实例 |
| | | Calendar cal1 = Calendar.getInstance(); |
| | | Calendar cal2 = Calendar.getInstance(); |
| | | // 设置Calendar对象的时间 |
| | | cal1.setTime(startTime); |
| | | cal2.setTime(endTime); |
| | | // 获取时间差 |
| | | long milliseconds1 = cal1.getTimeInMillis(); |
| | | long milliseconds2 = cal2.getTimeInMillis(); |
| | | long diff = milliseconds2 - milliseconds1; |
| | | return diff; |
| | | } |
| | | |
| | | /** |
| | | * 增加 LocalDateTime ==> Date |
| | | */ |
| | |
| | | |
| | | import java.awt.*; |
| | | import java.io.*; |
| | | import java.time.LocalDate; |
| | | import java.time.format.DateTimeFormatter; |
| | | |
| | | |
| | | public class ImgUtils { |
| | | |
| | | public static void main(String[] args) { |
| | | LocalDate currentDate = LocalDate.now(); |
| | | LocalDate endBirthday = currentDate.minusYears(23); |
| | | DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); |
| | | System.out.println(endBirthday.format(formatter)); |
| | | LocalDate currentDatea = LocalDate.now(); |
| | | LocalDate startBirthday = currentDatea.minusYears(24); |
| | | DateTimeFormatter formattera = DateTimeFormatter.ofPattern("yyyy-MM-dd"); |
| | | System.out.println(startBirthday.format(formattera)); |
| | | } |
| | | |
| | | /** |
| | | * 使用hutool 工具类 |
| | |
| | | ta.propaganda_poster propagandaPoster, |
| | | ta.activity_introduce activityIntroduce |
| | | FROM t_activity ta |
| | | WHERE ta.del_flag = 0 AND ta.activity_status <=1 AND (ta.shop_flag = 1 OR (ta.shop_flag = 2 AND FIND_IN_SET(#{shopId}, ta.applicable_shop) > 0)) |
| | | WHERE ta.del_flag = 0 AND ta.activity_status <=1 AND CURRENT_TIME < ta.activity_end_time AND (ta.shop_flag = 1 OR (ta.shop_flag = 2 AND FIND_IN_SET(#{shopId}, ta.applicable_shop) > 0)) |
| | | group by ta.activity_id |
| | | ORDER BY ta.activity_status ASC,ta.create_time DESC |
| | | </select> |
| | |
| | | IFNULL(tsg.service_num,tg.service_num) serviceNum |
| | | FROM t_goods tg |
| | | LEFT JOIN t_goods_file tgf ON tg.goods_id = tgf.goods_id AND tgf.del_flag = 0 AND tgf.file_type = 1 |
| | | LEFT JOIN t_shop_goods tsg ON tg.goods_id = tsg.goods_id AND tsg.shop_id = #{param.shopId} AND tsg.del_flag = 0 |
| | | LEFT JOIN t_shop_goods tsg ON tg.goods_id = tsg.goods_id AND tsg.shop_id = #{shopId} AND tsg.del_flag = 0 |
| | | WHERE tg.del_flag = 0 AND tg.goods_status = 1 AND tg.goods_type = 1 AND cycle_num_flag = 1 |
| | | ORDER BY tg.create_time DESC |
| | | </select> |
| | |
| | | INNER JOIN t_goods tg ON tg.goods_id = tag.goods_id |
| | | LEFT JOIN t_goods_file tgf ON tg.goods_id = tgf.goods_id AND tgf.del_flag = 0 AND tgf.file_type = 1 |
| | | LEFT JOIN t_shop_goods tsg ON tg.goods_id = tsg.goods_id AND tsg.shop_id = #{param.shopId} |
| | | WHERE tg.del_flag = 0 AND tg.goods_status = 1 AND tag.activity_id = #{param.activityId} |
| | | WHERE tag.del_flag = 0 AND tg.del_flag = 0 AND tg.goods_status = 1 AND tag.activity_id = #{param.activityId} |
| | | ORDER BY tg.create_time DESC |
| | | </select> |
| | | |
| | |
| | | Long userId = SecurityUtils.getUserId(); |
| | | Member member = memberService.getByUserId(userId); |
| | | AppBirthdayCardVo appBirthdayCardVo = new AppBirthdayCardVo(); |
| | | if(StringUtils.isNotBlank(member.getBirthday())){ |
| | | appBirthdayCardVo.setHaveBirthdayFlag(1); |
| | | String birthday = member.getBirthday(); |
| | | LocalDate today = LocalDate.now(); |
| | | int birthdayMonth = Integer.parseInt(birthday.split("-")[1]); |
| | | int todayMonth = today.getMonthValue(); |
| | | if (birthdayMonth == todayMonth) { |
| | | appBirthdayCardVo = birthdayCardService.getUserBirthdayCard(userId,member.getRelationShopId()); |
| | | appBirthdayCardVo.setHaveBirthdayFlag(1); |
| | | appBirthdayCardVo.setInBirthdayFlag(1); |
| | | } else { |
| | | appBirthdayCardVo.setHaveBirthdayFlag(1); |
| | | appBirthdayCardVo.setInBirthdayFlag(0); |
| | | appBirthdayCardVo.setCheckBirthdayCard(0); |
| | | if(member.getBindingFlag()==1){ |
| | | Integer check = birthdayCardService.checkBirthdayCard(member.getRelationShopId()); |
| | | if(check==1){ |
| | | appBirthdayCardVo.setCheckBirthdayCard(1); |
| | | if(StringUtils.isNotBlank(member.getBirthday())){ |
| | | appBirthdayCardVo.setHaveBirthdayFlag(1); |
| | | String birthday = member.getBirthday(); |
| | | LocalDate today = LocalDate.now(); |
| | | int birthdayMonth = Integer.parseInt(birthday.split("-")[1]); |
| | | int todayMonth = today.getMonthValue(); |
| | | if (birthdayMonth == todayMonth) { |
| | | appBirthdayCardVo = birthdayCardService.getUserBirthdayCard(userId,member.getRelationShopId()); |
| | | appBirthdayCardVo.setHaveBirthdayFlag(1); |
| | | appBirthdayCardVo.setInBirthdayFlag(1); |
| | | } else { |
| | | appBirthdayCardVo.setHaveBirthdayFlag(1); |
| | | appBirthdayCardVo.setInBirthdayFlag(0); |
| | | } |
| | | }else{ |
| | | appBirthdayCardVo.setHaveBirthdayFlag(0); |
| | | } |
| | | } |
| | | }else{ |
| | | appBirthdayCardVo.setHaveBirthdayFlag(0); |
| | | } |
| | | return R.ok(appBirthdayCardVo); |
| | | } |
| | |
| | | @ApiModelProperty(value = "用户标签") |
| | | private String memberTag; |
| | | |
| | | @ApiModelProperty(value = "剩余次数") |
| | | @ApiModelProperty(value = "剩余次数1.5次以下2.5-10次3.10次以上") |
| | | private Integer surpNum; |
| | | |
| | | @ApiModelProperty(value = "剩余次数") |
| | | private Integer surpStartNum; |
| | | |
| | | @ApiModelProperty(value = "剩余次数") |
| | | private Integer surpEndNum; |
| | | |
| | | @ApiModelProperty(value = "会员等级") |
| | | private String memberLevel; |
| | | |
| | |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @ClassName MgtMemberSuggestPageDto |
| | | * @Description TODO |
| | |
| | | |
| | | @ApiModelProperty(value = "商户id集合",hidden = true) |
| | | private String shopIds; |
| | | |
| | | @ApiModelProperty(value = "建议类型1平台响应正序2平台响应倒序3商户响应正序4商户响应倒序") |
| | | private Integer suggestSort; |
| | | } |
| | |
| | | |
| | | @TableField("response_time") |
| | | private String responseTime; |
| | | |
| | | @TableField("response_timestamp") |
| | | private Long responseTimestamp; |
| | | /** |
| | | * 商户id |
| | | */ |
| | |
| | | @TableField("shop_response_time") |
| | | private String shopResponseTime; |
| | | |
| | | @TableField("shop_response_timestamp") |
| | | private Long shopResponseTimestamp; |
| | | |
| | | /** |
| | | * 回复标记 |
| | | */ |
| | |
| | | @Data |
| | | public class AppBirthdayCardVo { |
| | | |
| | | @ApiModelProperty(value = "生日卡是否开启0否1是") |
| | | private Integer checkBirthdayCard; |
| | | |
| | | @ApiModelProperty(value = "是否有生日0否1是") |
| | | private Integer haveBirthdayFlag; |
| | | |
| | |
| | | private Date deadlineTime; |
| | | |
| | | @ApiModelProperty(value = "使用时间") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @JsonFormat(pattern = "yyyy.MM.dd HH:mm:ss") |
| | | private Date useTime; |
| | | |
| | | @ApiModelProperty(value = "核销店铺") |
| | |
| | | @Excel(name = "平台响应时间", width = 30) |
| | | @ApiModelProperty(value = "平台响应时间") |
| | | private String responseTime; |
| | | @Excel(name = "回复商户名", width = 30) |
| | | @ApiModelProperty(value = "回复商户名") |
| | | private String replayShopName; |
| | | @Excel(name = "商户回复人姓名", width = 30) |
| | | @ApiModelProperty(value = "商户回复人姓名") |
| | | private String shopReplayUserName; |
| | |
| | | * @return List<AppMemberPrizePageVo> |
| | | */ |
| | | List<AppMemberPrizePageVo> pageAppMemberPrize(Page page, Long userId); |
| | | |
| | | /** |
| | | * @description 判断生日卡开启状态 |
| | | * @author jqs |
| | | * @date 2023/8/1 15:43 |
| | | * @param |
| | | * @return void |
| | | */ |
| | | Integer checkBirthdayCard(Long shopId); |
| | | } |
| | |
| | | birthdayGift.setGiftName(dto.getGiftName()); |
| | | birthdayGift.setGiftNumber(dto.getGiftNumber()); |
| | | birthdayGift.setMoney(dto.getMoney()); |
| | | birthdayGift.setWinningProbability(dto.getWinningProbability()); |
| | | birthdayGift.setWinningProbability(new BigDecimal("100.00")); |
| | | birthdayGiftList.add(birthdayGift); |
| | | }); |
| | | // 批量保存生日礼物 |
| | |
| | | break; |
| | | case 4: |
| | | // 礼物类型为4,即礼品 |
| | | appBirthdayGiftVo.setGiftName(birthdayGift.getCouponName()); |
| | | appBirthdayGiftVo.setGiftNumber(birthdayGift.getCouponNumber()); |
| | | appBirthdayGiftVo.setGiftName(birthdayGift.getGiftName()); |
| | | appBirthdayGiftVo.setGiftNumber(birthdayGift.getGiftNumber()); |
| | | memberGiftRecord.setGiftName(birthdayGift.getGiftName()); |
| | | memberGiftRecord.setGiftNumber(birthdayGift.getGiftNumber()); |
| | | break; |
| | |
| | | } |
| | | return memberPrizePageVoList; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * @description 判断生日卡开启状态 |
| | | * @author jqs |
| | | * @date 2023/8/1 15:43 |
| | | * @param |
| | | * @return void |
| | | */ |
| | | @Override |
| | | public Integer checkBirthdayCard(Long shopId){ |
| | | // 获取平台生日卡信息 |
| | | BirthdayCard plBirthdayCard = birthdayCardMapper.getPlatformBirthdayCard(shopId); |
| | | // 如果生日卡存在 |
| | | if (plBirthdayCard == null || plBirthdayCard.getCardStatus()!=1) { |
| | | return 0; |
| | | } |
| | | Integer marketingStatus = remoteShopService.getShopMarketingStatus(shopId).getData(); |
| | | if(marketingStatus<=1){ |
| | | return 0; |
| | | } |
| | | return 1; |
| | | } |
| | | } |
| | |
| | | public void auditMgtCoupon(MgtCouponAuditDto mgtCouponAuditDto){ |
| | | Coupon coupon = this.getById(mgtCouponAuditDto.getCouponId()); |
| | | //判断优惠券是否审核 |
| | | if(coupon.getCouponStatus()!=1){ |
| | | if(coupon.getAuditStatus()!=1){ |
| | | throw new ServiceException(AppErrorConstant.COUPON_AUDIT_DOUBLE); |
| | | } |
| | | coupon.setAuditStatus(mgtCouponAuditDto.getAuditStatus()); |
| | |
| | | coupon.setUpdateTime(new Date()); |
| | | coupon.setUpdateUserId(mgtCouponAuditDto.getUserId()); |
| | | //审核通过后判断是否立即发放 |
| | | if(coupon.getCouponStatus()==2&&coupon.getSendTimeType()==1){ |
| | | if(coupon.getAuditStatus()==2&&coupon.getSendTimeType()==1){ |
| | | List<CouponRelUser> couponRelUserList = couponRelUserService.list(new LambdaQueryWrapper<CouponRelUser>().eq(CouponRelUser::getDelFlag,0).eq(CouponRelUser::getCouponId,coupon.getCouponId())); |
| | | List<Long> userIdList = new ArrayList<>(); |
| | | if(couponRelUserList!=null&&!couponRelUserList.isEmpty()){ |
| | |
| | | coupon.setValidTimeType(merCouponEditDto.getValidTimeType()); |
| | | coupon.setValidStartTime(merCouponEditDto.getValidStartTime()); |
| | | coupon.setValidEndTime(merCouponEditDto.getValidEndTime()); |
| | | coupon.setLimitNumber(merCouponEditDto.getLimitNumber()); |
| | | coupon.setValidDay(merCouponEditDto.getValidDay()); |
| | | coupon.setUpdateTime(new Date()); |
| | | coupon.setUpdateUserId(merCouponEditDto.getUserId()); |
| | |
| | | memberCouponRecord.setLimitNum(99999); |
| | | } |
| | | // 如果数量达到限制数量,则设置限制标志为1 |
| | | if (memberCouponRecord.getNum()>memberCouponRecord.getLimitNum()) { |
| | | if (memberCouponRecord.getNum()>=memberCouponRecord.getLimitNum()) { |
| | | memberCouponRecord.setLimitFlag(1); |
| | | } else { |
| | | memberCouponRecord.setLimitFlag(0); |
| | |
| | | memberCouponRecord.setLimitNum(99999); |
| | | } |
| | | // 根据数量是否达到限制数量设置限制标志 |
| | | if (memberCouponRecord.getNum()>memberCouponRecord.getLimitNum()) { |
| | | if (memberCouponRecord.getNum()>=memberCouponRecord.getLimitNum()) { |
| | | memberCouponRecord.setLimitFlag(1); |
| | | } else { |
| | | memberCouponRecord.setLimitFlag(0); |
| | |
| | | */ |
| | | @Override |
| | | public List<MerMemberPageVo> pageMerMember(Page page, MerMemberPageDto merMemberPageDto) { |
| | | //处理活跃度 |
| | | List<Activeness> activenessList = remoteConfigService.listActiveness().getData(); |
| | | if (StringUtils.isNotBlank(merMemberPageDto.getMemberActiveness())) { |
| | | if(!activenessList.isEmpty()){ |
| | |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //处理剩余次数 |
| | | if(merMemberPageDto.getSurpNum()!=null){ |
| | | if(merMemberPageDto.getSurpNum()==1){ |
| | | merMemberPageDto.setSurpStartNum(0); |
| | | merMemberPageDto.setSurpEndNum(5); |
| | | }else if(merMemberPageDto.getSurpNum()==2){ |
| | | merMemberPageDto.setSurpStartNum(5); |
| | | merMemberPageDto.setSurpEndNum(10); |
| | | }else if(merMemberPageDto.getSurpNum()==3){ |
| | | merMemberPageDto.setSurpStartNum(10); |
| | | merMemberPageDto.setSurpEndNum(999999999); |
| | | } |
| | | } |
| | | List<MerMemberPageVo> merMemberPageVoList = memberMapper.pageMerMember(page, merMemberPageDto); |
| | |
| | | } |
| | | if(merMemberPageDto.getEndAge()!=null){ |
| | | LocalDate currentDate = LocalDate.now(); |
| | | LocalDate startBirthday = currentDate.minusYears(merMemberPageDto.getEndAge()); |
| | | LocalDate startBirthday = currentDate.minusYears(merMemberPageDto.getEndAge()+1); |
| | | DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); |
| | | merMemberPageDto.setStartBirthday(startBirthday.format(formatter)); |
| | | } |
| | |
| | | @Override |
| | | public List<MgtMemberSuggestPageVo> pageMgtMemberSuggest(Page page,MgtMemberSuggestPageDto memberSuggestPageDto){ |
| | | //如果区域代码不为null获取对应的商户id |
| | | List<MgtMemberSuggestPageVo> mgtMemberSuggestPageVoList = new ArrayList<>(); |
| | | if(StringUtils.isNotBlank(memberSuggestPageDto.getKeyword())||StringUtils.isNotBlank(memberSuggestPageDto.getShopProvinceCode())||StringUtils.isNotBlank(memberSuggestPageDto.getShopCityCode())||StringUtils.isNotBlank(memberSuggestPageDto.getShopAreaCode())){ |
| | | MgtShopIdByCodeDto mgtShopIdByCodeDto = new MgtShopIdByCodeDto(); |
| | | mgtShopIdByCodeDto.setShopName(memberSuggestPageDto.getKeyword()); |
| | |
| | | MgtShopIdByCodeVo mgtShopIdByCodeVo = remoteShopService.getShopIdByCode(mgtShopIdByCodeDto).getData(); |
| | | if(StringUtils.isNotBlank(mgtShopIdByCodeVo.getShopIds())){ |
| | | memberSuggestPageDto.setShopIds(mgtShopIdByCodeVo.getShopIds()); |
| | | }else{ |
| | | return mgtMemberSuggestPageVoList; |
| | | } |
| | | } |
| | | //处理标签为正则方便sql判断 |
| | |
| | | memberSuggestPageDto.setSuggestStatus(0); |
| | | } |
| | | //获取返回结果 |
| | | List<MgtMemberSuggestPageVo> mgtMemberSuggestPageVoList = memberSuggestMapper.pageMgtMemberSuggest(page, memberSuggestPageDto); |
| | | mgtMemberSuggestPageVoList = memberSuggestMapper.pageMgtMemberSuggest(page, memberSuggestPageDto); |
| | | return mgtMemberSuggestPageVoList; |
| | | } |
| | | |
| | |
| | | memberSuggest.setReplayFlag(1); |
| | | String responseTime = DateUtils.formatDuration(memberSuggest.getCreateTime(), memberSuggest.getReplayTime()); |
| | | memberSuggest.setResponseTime(responseTime); |
| | | long responseTimestamp = DateUtils.diffTime(memberSuggest.getCreateTime(), memberSuggest.getReplayTime()); |
| | | memberSuggest.setResponseTimestamp(responseTimestamp); |
| | | this.saveOrUpdate(memberSuggest); |
| | | } |
| | | |
| | |
| | | coupon_id couponId, |
| | | coupon_name couponName |
| | | FROM t_coupon |
| | | WHERE del_flag = 0 |
| | | WHERE del_flag = 0 AND coupon_status = 1 AND audit_status = 2 |
| | | <if test="param.shopId!=null and param.shopId!='' "> |
| | | AND shop_id = #{param.shopId} |
| | | </if> |
| | |
| | | tc.discount_percent discountPercent, |
| | | tc.rel_goods_ids relGoodsIds |
| | | FROM t_coupon tc |
| | | WHERE tc.del_flag = 0 AND tc.coupon_status = 1 AND tc.send_type = 1 AND (tc.coupon_from = 1 OR (tc.coupon_from = 2 AND tc.shop_id = #{shopId})) |
| | | WHERE tc.del_flag = 0 AND tc.coupon_status = 1 AND tc.audit_status = 2 AND tc.send_type = 1 AND (tc.coupon_from = 1 OR (tc.coupon_from = 2 AND tc.shop_id = #{shopId})) |
| | | AND (tc.send_target = 2 |
| | | <if test="memberFlag != null and memberFlag = 1"> |
| | | OR tc.send_target = 3 |
| | |
| | | <if test="param.taskEndDate!=null and param.taskEndDate!=''"> |
| | | AND Date(tmt.next_task_time) <= #{param.taskEndDate} |
| | | </if> |
| | | <if test="param.surpNum != null and param.surpNum != ''"> |
| | | AND tmt.useable_service_count = #{param.surpNum} |
| | | <if test="param.surpStartNum != null and param.surpStartNum != ''"> |
| | | AND tmt.useable_service_count >= #{param.surpStartNum} |
| | | </if> |
| | | <if test="param.surpEndNum != null and param.surpEndNum != ''"> |
| | | AND tmt.useable_service_count < #{param.surpEndNum} |
| | | </if> |
| | | <if test="param.memberNurse != null and param.memberNurse != ''"> |
| | | AND FIND_IN_SET(#{param.memberNurse},tm.member_nurse) > 0 |
| | |
| | | tm.user_id userId, |
| | | tm.real_name realName, |
| | | tm.nick_name nickName, |
| | | tm.mobile mobile |
| | | tm.mobile userMobile |
| | | FROM t_member tm |
| | | WHERE tm.del_flag = 0 AND FIND_IN_SET(tm.user_id, #{userIds}) > 0 |
| | | </select> |
| | |
| | | tm.nick_name userNickName, |
| | | CASE tm.gender WHEN 0 THEN "男" WHEN 1 THEN "女" ELSE "未知" END gender, |
| | | tm.mobile userMobile, |
| | | CASE tms.suggest_type WHEN 1 THEN "平台" WHEN 1 THEN "门店" ELSE "未知" END suggestType, |
| | | CASE tms.suggest_type WHEN 1 THEN "平台建议" WHEN 2 THEN "店铺建议" ELSE "未知" END suggestType, |
| | | tms.suggest_content suggestContent, |
| | | tms.replay_content replayContent, |
| | | tms.shop_replay_content shopReplayContent, |
| | |
| | | AND tms.suggest_type = #{param.suggestType} |
| | | </if> |
| | | <if test="param.shopIds!=null and param.shopIds!=''"> |
| | | AND tms.shop_id IN (#{param.shopIds}) |
| | | AND FIND_IN_SET(tms.shop_id, #{param.shopIds}) > 0 |
| | | </if> |
| | | ORDER BY tms.replay_flag ASC,tms.create_time DESC |
| | | ORDER BY |
| | | <if test="param.suggestSort!=null and param.suggestSort==1"> |
| | | tms.response_timestamp ASC, |
| | | </if> |
| | | <if test="param.suggestSort!=null and param.suggestSort==2"> |
| | | tms.response_timestamp DESC, |
| | | </if> |
| | | <if test="param.suggestSort!=null and param.suggestSort==3"> |
| | | tms.shop_response_timestamp ASC, |
| | | </if> |
| | | <if test="param.suggestSort!=null and param.suggestSort==4"> |
| | | tms.shop_response_timestamp DESC, |
| | | </if> |
| | | tms.replay_flag ASC,tms.create_time DESC |
| | | </select> |
| | | </mapper> |
| | |
| | | MerOrderFromRankVo orderTotalVo = orderService.getMerOrderFromRank(merTotalDto); |
| | | return R.ok(orderTotalVo); |
| | | } |
| | | |
| | | } |
| | |
| | | appPlaceOrderVo.setOrderId(order.getOrderId()); |
| | | appPlaceOrderVo.setOrderNo(order.getOrderNo()); |
| | | appPlaceOrderVo.setPayType(order.getPayType()); |
| | | appPlaceOrderVo.setPayMoney(order.getPayMoney()); |
| | | appPlaceOrderVo.setUnpaidMoney(order.getPayMoney()); |
| | | Integer delayTime = 30; |
| | | if(redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)){ |
| | |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @author jqs34 |
| | | * @ClassName MerMemberNoClearOrderDto |
| | |
| | | @ApiModelProperty(value = "会员用户id") |
| | | private Long memberUserId; |
| | | |
| | | @ApiModelProperty(value = "会员用户id",hidden = true) |
| | | private List<Long> memberUserIdList; |
| | | |
| | | @ApiModelProperty(value = "搜索关键词") |
| | | private String keyword; |
| | | |
| | |
| | | @ApiModelProperty(value = "订单状态0.已取消1.待支付2.待核销3.已完成") |
| | | private Integer orderStatus; |
| | | |
| | | @ApiModelProperty(value = "支付方式1.全款2.订金") |
| | | private Integer payType; |
| | | |
| | | @ApiModelProperty(value = "商品总价") |
| | | private BigDecimal orderGoodsMoney; |
| | | |
| | |
| | | |
| | | |
| | | /** |
| | | * 定时检查跟进任务状态 |
| | | * 定时检查订单状态任务开始执行 |
| | | */ |
| | | @Scheduled(cron="0 0/15 * * * ?") |
| | | private void timingCheckMemberCoupon(){ |
| | |
| | | import com.ruoyi.common.core.utils.uuid.IdUtils; |
| | | import com.ruoyi.order.domain.dto.*; |
| | | import com.ruoyi.order.domain.pojo.order.ConsumerGoods; |
| | | import com.ruoyi.order.domain.pojo.order.ServiceRecordDetail; |
| | | import com.ruoyi.order.domain.pojo.order.UserServiceRecord; |
| | | import com.ruoyi.order.domain.vo.AppConsumerPageVo; |
| | | import com.ruoyi.order.domain.vo.MerConsumerGoodsListVo; |
| | |
| | | import com.ruoyi.order.domain.vo.MerMemberConsumerGoodsTotalVo; |
| | | import com.ruoyi.order.mapper.order.ConsumerGoodsMapper; |
| | | import com.ruoyi.order.service.order.ConsumerGoodsService; |
| | | import com.ruoyi.order.service.order.ServiceRecordDetailService; |
| | | import com.ruoyi.order.service.order.UserServiceRecordService; |
| | | import com.ruoyi.system.api.constant.AppErrorConstant; |
| | | import com.ruoyi.system.api.domain.dto.AppShopGoodsGetDto; |
| | |
| | | |
| | | @Resource |
| | | private RemoteGoodsService remoteGoodsService; |
| | | |
| | | @Resource |
| | | private ServiceRecordDetailService serviceRecordDetailService; |
| | | |
| | | /** |
| | | * 获取用户服务 |
| | |
| | | public void useMerConsumerGoods(MerSureConsumerGoodsDto merSureConsumerGoodsDto){ |
| | | List<MerSureConsumerGoodsListDto> goodsList = merSureConsumerGoodsDto.getMerSureConsumerGoodsListDtoList(); |
| | | if (goodsList != null && !goodsList.isEmpty()) { |
| | | ConsumerGoods goods; |
| | | ConsumerGoods consumerGoods; |
| | | Integer serviceNum; |
| | | Integer usedNum; |
| | | Integer useNum; |
| | |
| | | Integer experienceService = 0; |
| | | Integer experiencePerson = 0; |
| | | //获取会员商品总数 |
| | | List<ServiceRecordDetail> serviceRecordDetailList = new ArrayList<>(); |
| | | ServiceRecordDetail serviceRecordDetail; |
| | | MerMemberConsumerGoodsTotalVo memberGoodsTotal = this.getMemberConsumerGoodsTotalVo(merSureConsumerGoodsDto.getMemberUserId(), merSureConsumerGoodsDto.getShopId()); |
| | | for (MerSureConsumerGoodsListDto goodsDto : goodsList) { |
| | | goods = this.getById(goodsDto.getConsumerGoodsId()); |
| | | serviceNum = goods.getServiceNum(); |
| | | usedNum = goods.getUsedNum(); |
| | | consumerGoods = this.getById(goodsDto.getConsumerGoodsId()); |
| | | serviceRecordDetail = new ServiceRecordDetail(); |
| | | serviceNum = consumerGoods.getServiceNum(); |
| | | usedNum = consumerGoods.getUsedNum(); |
| | | surplusNum = serviceNum - usedNum; |
| | | useNum = goodsDto.getServiceNum(); |
| | | //判断使用数量是否超过剩余数量 |
| | | if (useNum > surplusNum) { |
| | | throw new ServiceException(AppErrorConstant.BEYOND_SURP_NUM); |
| | | } |
| | | goods.setUsedNum(usedNum + useNum); |
| | | goods.setUseTime(new Date()); |
| | | consumerGoods.setUsedNum(usedNum + useNum); |
| | | consumerGoods.setUseTime(new Date()); |
| | | //判断商品是否已使用完 |
| | | if (goods.getUsedNum().equals(serviceNum)) { |
| | | goods.setServiceStatus(2); |
| | | goods.setCompleteTime(new Date()); |
| | | if (consumerGoods.getUsedNum().equals(serviceNum)) { |
| | | consumerGoods.setServiceStatus(2); |
| | | consumerGoods.setCompleteTime(new Date()); |
| | | } |
| | | this.saveOrUpdate(goods); |
| | | shopId = goods.getShopId(); |
| | | userId = goods.getUserId(); |
| | | serviceType = goods.getGoodsType(); |
| | | this.saveOrUpdate(consumerGoods); |
| | | shopId = consumerGoods.getShopId(); |
| | | userId = consumerGoods.getUserId(); |
| | | serviceType = consumerGoods.getGoodsType(); |
| | | //拼接商品ID |
| | | if (StringUtils.isBlank(goodsIds)) { |
| | | goodsIds = goods.getConsumerGoodsId(); |
| | | goodsIds = consumerGoods.getConsumerGoodsId(); |
| | | } else { |
| | | goodsIds = goodsIds + "," + goods.getConsumerGoodsId(); |
| | | goodsIds = goodsIds + "," + consumerGoods.getConsumerGoodsId(); |
| | | } |
| | | //拼接商品名称 |
| | | if (StringUtils.isBlank(goodsNames)) { |
| | | goodsNames = goods.getGoodsName(); |
| | | goodsNames = consumerGoods.getGoodsName(); |
| | | } else { |
| | | goodsNames = goodsNames + "、" + goods.getGoodsName(); |
| | | goodsNames = goodsNames + "、" + consumerGoods.getGoodsName(); |
| | | } |
| | | //处理商品服务次数 |
| | | switch (goods.getGoodsType()) { |
| | | switch (consumerGoods.getGoodsType()) { |
| | | case 1: |
| | | cycleService = cycleService + useNum; |
| | | break; |
| | |
| | | default: |
| | | break; |
| | | } |
| | | serviceRecordDetail.setDelFlag(0); |
| | | serviceRecordDetail.setConsumerGoodsId(consumerGoods.getConsumerGoodsId()); |
| | | serviceRecordDetail.setConsumerGoodsName(consumerGoods.getGoodsName()); |
| | | serviceRecordDetail.setServiceNum(consumerGoods.getServiceNum()); |
| | | serviceRecordDetail.setSurpNum(consumerGoods.getServiceNum()-consumerGoods.getUsedNum()); |
| | | serviceRecordDetailList.add(serviceRecordDetail); |
| | | } |
| | | //判断是否减人 |
| | | if (cycleService > 0 && memberGoodsTotal.getCycleOrder() - cycleService < 1) { |
| | |
| | | serviceRecord.setConsumerGoodsIds(goodsIds); |
| | | serviceRecord.setConsumerGoodsNames(goodsNames); |
| | | userServiceRecordService.saveOrUpdate(serviceRecord); |
| | | for(ServiceRecordDetail serviceRecordDetail1 : serviceRecordDetailList){ |
| | | serviceRecordDetail1.setRecordId(serviceRecord.getId()); |
| | | } |
| | | serviceRecordDetailService.saveBatch(serviceRecordDetailList); |
| | | //更新商户和会员服务统计 |
| | | MemberTotalChangeDto memberTotalChange = new MemberTotalChangeDto(); |
| | | memberTotalChange.setUserId(merSureConsumerGoodsDto.getMemberUserId()); |
| | |
| | | } else if (couponType == 2 && appMemberCouponVo.getDiscountPercent() != null) { |
| | | discountPercent = appMemberCouponVo.getDiscountPercent(); |
| | | goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN,2,BigDecimal.ROUND_HALF_UP); |
| | | discountMoney = goodsRealPrice.subtract(goodsTotalPrice); |
| | | discountMoney = goodsTotalPrice.subtract(goodsRealPrice); |
| | | useCoupon = 1; |
| | | userCouponIdSet.add(memberCouponId); |
| | | appSureOrderGoodsVo.setMemberCouponId(memberCouponId); |
| | |
| | | } else if (couponType == 2 && appMemberCouponVo.getDiscountPercent() != null) { |
| | | discountPercent = appMemberCouponVo.getDiscountPercent(); |
| | | goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN,2, BigDecimal.ROUND_HALF_UP); |
| | | discountMoney = goodsRealPrice.subtract(goodsTotalPrice); |
| | | discountMoney = goodsTotalPrice.subtract(goodsRealPrice); |
| | | useCoupon = 1; |
| | | } else if (couponType == 3 && appMemberCouponVo.getDiscountMoney() != null) { |
| | | discountMoney = appMemberCouponVo.getDiscountMoney(); |
| | |
| | | */ |
| | | @Override |
| | | public List<MerOrderPageVo> pageMerOrder(Page page, MerOrderPageDto merOrderPageDto) { |
| | | if(StringUtils.isNotBlank(merOrderPageDto.getKeyword())){ |
| | | MgtUserIdByKeywordDto userIdByKeywordDto = new MgtUserIdByKeywordDto(); |
| | | userIdByKeywordDto.setKeyword(merOrderPageDto.getKeyword()); |
| | | MgtUserIdByKeywordVo userIdByKeywordVo = remoteMemberService.getUserIdByKeyword(userIdByKeywordDto).getData(); |
| | | if(StringUtils.isNotBlank(userIdByKeywordVo.getUserIds())){ |
| | | List<Long> userIdList = Arrays.stream(userIdByKeywordVo.getUserIds().split(",")) |
| | | .map(Long::parseLong) |
| | | .collect(Collectors.toList()); |
| | | merOrderPageDto.setMemberUserIdList(userIdList); |
| | | merOrderPageDto.setMemberUserId(null); |
| | | } |
| | | } |
| | | List<MerOrderPageVo> merOrderPageVoList = orderMapper.pageMerOrder(page, merOrderPageDto); |
| | | if (merOrderPageVoList != null && !merOrderPageVoList.isEmpty()) { |
| | | Long userId; |
| | |
| | | Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream() |
| | | .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity())); |
| | | for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) { |
| | | merOrderPageVo.setUserName(userMap.get(merOrderPageVo.getUserId()).getRealName()); |
| | | merOrderPageVo.setNickName(userMap.get(merOrderPageVo.getUserId()).getNickName()); |
| | | merOrderPageVo.setUserMobile(userMap.get(merOrderPageVo.getUserId()).getUserMobile()); |
| | | if(merOrderPageVo.getUserId()!=null&&userMap.get(merOrderPageVo.getUserId())!=null){ |
| | | merOrderPageVo.setUserName(userMap.get(merOrderPageVo.getUserId()).getRealName()); |
| | | merOrderPageVo.setNickName(userMap.get(merOrderPageVo.getUserId()).getNickName()); |
| | | merOrderPageVo.setUserMobile(userMap.get(merOrderPageVo.getUserId()).getUserMobile()); |
| | | }else{ |
| | | log.debug("订单merOrderPageVo"+merOrderPageVo.getOrderId()+"缺少用户"); |
| | | } |
| | | } |
| | | } |
| | | return merOrderPageVoList; |
| | |
| | | mgtOrderDetailVo.setCancelTime(order.getCancelTime()); |
| | | mgtOrderDetailVo.setOrderRemark(order.getOrderRemark()); |
| | | mgtOrderDetailVo.setShopId(order.getShopId()); |
| | | mgtOrderDetailVo.setShopName(shop.getShopName()); |
| | | if(shop!=null){ |
| | | mgtOrderDetailVo.setShopName(shop.getShopName()); |
| | | }else{ |
| | | mgtOrderDetailVo.setShopName("商户已被删除"); |
| | | } |
| | | mgtOrderDetailVo.setVerifyTime(order.getUseTime()); |
| | | //获取支付记录 |
| | | List<MgtOrderPayListVo> orderPayListVoList = payRecordService.listMgtOrderPayVo(orderId); |
| | |
| | | delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); |
| | | } |
| | | delayTime = delayTime + 5; |
| | | Date checkTime = DateUtils.addMinutes(new Date(),delayTime); |
| | | Date checkTime = DateUtils.addMinutes(new Date(),-delayTime); |
| | | LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.eq(Order::getDelFlag,0); |
| | | queryWrapper.lt(Order::getCreateTime,checkTime); |
| | | queryWrapper.eq(Order::getOrderStatus,1); |
| | | List<Order> orderList = this.list(queryWrapper); |
| | | if(orderList!=null&&!orderList.isEmpty()){ |
| | | for(Order order: orderList){ |
| | | for(Order order: orderList){ |
| | | autoTimeCancelOrder(order); |
| | | } |
| | | } |
| | |
| | | import com.ruoyi.order.domain.vo.MgtMemberServiceTotalVo; |
| | | import com.ruoyi.order.mapper.order.UserServiceRecordMapper; |
| | | import com.ruoyi.order.service.order.UserServiceRecordService; |
| | | import com.ruoyi.system.api.domain.dto.MgtBaseBathDto; |
| | | import com.ruoyi.system.api.domain.vo.MgtSimpleShopVo; |
| | | import com.ruoyi.system.api.service.RemoteShopService; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.HashSet; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.function.Function; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | |
| | | @Resource |
| | | private UserServiceRecordMapper userServiceRecordMapper; |
| | | |
| | | @Resource |
| | | private RemoteShopService remoteShopService; |
| | | |
| | | /** |
| | | * 分页获取用户服务记录 |
| | |
| | | */ |
| | | @Override |
| | | public List<MgtMemberServiceRecordPageVo> pageMgtMemberServiceRecord(Page page, MgtMemberServiceRecordPageDto mgtMemberServiceRecordPageDto){ |
| | | return userServiceRecordMapper.pageMgtMemberServiceRecord(page, mgtMemberServiceRecordPageDto); |
| | | List<MgtMemberServiceRecordPageVo> mgtMemberServiceRecordPageVoList = userServiceRecordMapper.pageMgtMemberServiceRecord(page, mgtMemberServiceRecordPageDto); |
| | | if(mgtMemberServiceRecordPageVoList!=null&&!mgtMemberServiceRecordPageVoList.isEmpty()){ |
| | | HashSet<Long> shopIdSet = new HashSet<>(); |
| | | for(MgtMemberServiceRecordPageVo mgtMemberServiceRecordPageVo : mgtMemberServiceRecordPageVoList){ |
| | | if(mgtMemberServiceRecordPageVo.getShopId()!=null){ |
| | | shopIdSet.add(mgtMemberServiceRecordPageVo.getShopId()); |
| | | } |
| | | } |
| | | String shopJoinedString = String.join(",", shopIdSet.stream().map(Object::toString).collect(Collectors.toList())); |
| | | MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto(); |
| | | mgtBaseBathDto.setIds(shopJoinedString); |
| | | List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(mgtBaseBathDto).getData(); |
| | | Map<Long, MgtSimpleShopVo> shopMap = simpleShopVoList.stream() |
| | | .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity())); |
| | | for(MgtMemberServiceRecordPageVo mgtMemberServiceRecordPageVo : mgtMemberServiceRecordPageVoList){ |
| | | if(mgtMemberServiceRecordPageVo.getShopId()!=null){ |
| | | mgtMemberServiceRecordPageVo.setShopName(shopMap.get(mgtMemberServiceRecordPageVo.getShopId()).getShopName()); |
| | | } |
| | | } |
| | | } |
| | | return mgtMemberServiceRecordPageVoList; |
| | | } |
| | | |
| | | /** |
| | |
| | | <result column="userId" property="userId"/> |
| | | <result column="orderId" property="orderId"/> |
| | | <result column="orderStatus" property="orderStatus"/> |
| | | <result column="payType" property="payType"/> |
| | | <result column="orderNo" property="orderNo"/> |
| | | <result column="orderGoodsMoney" property="orderGoodsMoney"/> |
| | | <result column="couponDiscount" property="couponDiscount"/> |
| | |
| | | toc.user_id userId, |
| | | toc.order_id orderId, |
| | | toc.order_no orderNo, |
| | | toc.pay_type payType, |
| | | toc.order_status orderStatus, |
| | | toc.order_money orderGoodsMoney, |
| | | toc.coupon_money couponDiscount, |
| | |
| | | WHERE toc.del_flag = 0 AND toc.shop_id = #{param.shopId} |
| | | <if test="param.memberUserId != null and param.memberUserId != ''"> |
| | | AND toc.user_id = #{param.memberUserId} |
| | | </if> |
| | | <if test="param.memberUserIdList != null and param.memberUserIdList.size()>0"> |
| | | AND toc.user_id IN |
| | | <foreach collection="param.memberUserIdList" item="item" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </if> |
| | | <if test="param.type != null and param.type ==1 "> |
| | | AND (toc.order_status = 2 OR toc.order_status = 3) |
| | |
| | | #{item} |
| | | </foreach> |
| | | </if> |
| | | <if test="param.startDate!=null and param.startDate!=''"> |
| | | AND Date(create_time) >= #{param.startDate} |
| | | </if> |
| | | <if test="param.endDate!=null and param.endDate!=''"> |
| | | AND Date(create_time) <= #{param.endDate} |
| | | </if> |
| | | GROUP BY tog.goods_type |
| | | </select> |
| | | |
| | |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.common.security.utils.SecurityUtils; |
| | | import com.ruoyi.shop.domain.dto.*; |
| | | import com.ruoyi.shop.domain.vo.MerAgencyTaskPageVo; |
| | | import com.ruoyi.shop.domain.vo.MerAgencyTaskRecordPageVo; |
| | | import com.ruoyi.shop.domain.vo.MerMemberTaskPageVo; |
| | | import com.ruoyi.shop.domain.vo.MerMemberTaskRecordPageVo; |
| | | import com.ruoyi.shop.domain.vo.*; |
| | | import com.ruoyi.shop.service.task.AgencyTaskRecordService; |
| | | import com.ruoyi.shop.service.task.AgencyTaskService; |
| | | import com.ruoyi.shop.service.task.MemberTaskRecordService; |
| | |
| | | return R.ok(page.setRecords(merAgencyTaskPageVoList)); |
| | | } |
| | | |
| | | @RequestMapping(value = "/pageMerAgencySimpleTaskRecord", method = RequestMethod.POST) |
| | | @ApiOperation(value = "分页获取商户代理商简易跟进任务记录列表") |
| | | public R<Page<MerAgencySimpleTaskRecordPageVo>> pageMerAgencySimpleTaskRecord(@RequestBody MerAgencyTaskPageDto merAgencyTaskPageDto) { |
| | | Long userId = SecurityUtils.getUserId(); |
| | | merAgencyTaskPageDto.setUserId(userId); |
| | | Page<MerAgencySimpleTaskRecordPageVo> page = new Page<>(); |
| | | page.setSize(merAgencyTaskPageDto.getPageSize()); |
| | | page.setCurrent(merAgencyTaskPageDto.getPageNum()); |
| | | List<MerAgencySimpleTaskRecordPageVo> merAgencySimpleTaskRecordPageVos = agencyTaskService.pageMerAgencySimpleTaskRecord(page,merAgencyTaskPageDto); |
| | | return R.ok(page.setRecords(merAgencySimpleTaskRecordPageVos)); |
| | | } |
| | | |
| | | @RequestMapping(value = "/pageMerAgencyTaskRecord", method = RequestMethod.POST) |
| | | @ApiOperation(value = "分页获取商户代理商跟进任务记录列表") |
| | | public R<Page<MerAgencyTaskRecordPageVo>> pageMerAgencyTaskRecord(@RequestBody MerAgencyTaskPageDto merAgencyTaskPageDto) { |
| | |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @author jqs34 |
| | | * @version 1.0 |
| | |
| | | @ApiModelProperty(value = "回复结束时间") |
| | | private String replayEndTime; |
| | | |
| | | |
| | | @ApiModelProperty(value = "建议排序1回复时间正序2回复时间倒序") |
| | | private Integer suggestSort; |
| | | } |
| | |
| | | @TableField("response_time") |
| | | private String responseTime; |
| | | |
| | | @TableField("response_timestamp") |
| | | private Long responseTimestamp; |
| | | |
| | | /** |
| | | * 商品标签 |
| | | */ |
New file |
| | |
| | | package com.ruoyi.shop.domain.vo; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @ClassName MerAgencySimpleTaskRecordPageVo |
| | | * @Description TODO |
| | | * @Author jqs |
| | | * @Date 2023/8/1 17:45 |
| | | * @Version 1.0 |
| | | */ |
| | | @Data |
| | | public class MerAgencySimpleTaskRecordPageVo { |
| | | |
| | | @ApiModelProperty(value="跟进时间") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date createTime; |
| | | |
| | | @ApiModelProperty(value="跟踪类型1电话2手动") |
| | | private String followType; |
| | | |
| | | @ApiModelProperty(value="跟踪内容") |
| | | private String followContent; |
| | | |
| | | |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.shop.domain.dto.MerAgencyTaskPageDto; |
| | | import com.ruoyi.shop.domain.pojo.task.AgencyTask; |
| | | import com.ruoyi.shop.domain.vo.MerAgencySimpleTaskRecordPageVo; |
| | | import com.ruoyi.shop.domain.vo.MerAgencyTaskPageVo; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | |
| | | * @return |
| | | */ |
| | | List<MerAgencyTaskPageVo> pageMerAgencyTask(Page page, @Param("param") MerAgencyTaskPageDto merAgencyTaskPageDto); |
| | | |
| | | /** |
| | | * @description |
| | | * @author jqs |
| | | * @date 2023/8/1 18:16 |
| | | * @param page |
| | | * @param merAgencyTaskPageDto |
| | | * @return List<MerAgencySimpleTaskRecordPageVo> |
| | | */ |
| | | List<MerAgencySimpleTaskRecordPageVo>pageMerAgencySimpleTaskRecord(Page page,@Param("param") MerAgencyTaskPageDto merAgencyTaskPageDto); |
| | | } |
| | |
| | | import com.ruoyi.shop.service.task.MemberTaskService; |
| | | import com.ruoyi.shop.service.task.ShopFileService; |
| | | import com.ruoyi.shop.service.task.ShopTaskService; |
| | | import com.ruoyi.shop.util.WxShopUtils; |
| | | import com.ruoyi.shop.util.dto.*; |
| | | import com.ruoyi.system.api.constant.AppErrorConstant; |
| | | import com.ruoyi.system.api.domain.dto.*; |
| | |
| | | merHomeShopTotalVo.setShopId(shopId); |
| | | Shop shop = this.getById(shopId); |
| | | merHomeShopTotalVo.setShopType(shop.getShopType()); |
| | | merHomeShopTotalVo.setPlatformCouponFlag(shop.getPlatformCouponFlag()); |
| | | merHomeShopTotalVo.setPlatformBirthdayFlag(shop.getPlatformBirthdayFlag()); |
| | | MerHomeShopTotalVo orderVo = remoteOrderService.getMerHomeTotal(merHomeShopTotalVo).getData(); |
| | | ShopTotal shopTotal = shopTotalService.getById(shopId); |
| | | merHomeShopTotalVo.setShopId(shopId); |
| | |
| | | submitInfo.setBusiness_addition_pics(shopAuthentication.getBaPics()); |
| | | submitInfo.setBusiness_addition_desc(shopAuthentication.getBaDesc()); |
| | | //提交审核 |
| | | try { |
| | | /*try { |
| | | WxShopUtils.ApplymentSubMch(submitInfo); |
| | | } catch (Exception e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | }*/ |
| | | |
| | | } |
| | | |
| | |
| | | merStaffInfoVo.setBusinessTime(shop.getBusinessStartTime()+"-"+shop.getBusinessEndTime()); |
| | | merStaffInfoVo.setShopType(shop.getShopType()); |
| | | merStaffInfoVo.setShopNumber(shop.getShopNumber()); |
| | | String shopCodeUrl = "https://wxapp.hhhrt.cn/mini/shop?shopId="+shop.getShopId(); |
| | | merStaffInfoVo.setShopCodeUrl(shopCodeUrl); |
| | | return merStaffInfoVo; |
| | | } |
| | | |
| | |
| | | shopSuggest.setReplayFlag(1); |
| | | String responseTime = DateUtils.formatDuration(shopSuggest.getCreateTime(), shopSuggest.getReplayTime()); |
| | | shopSuggest.setResponseTime(responseTime); |
| | | long responseTimestamp = DateUtils.diffTime(shopSuggest.getCreateTime(), shopSuggest.getReplayTime()); |
| | | shopSuggest.setResponseTimestamp(responseTimestamp); |
| | | this.saveOrUpdate(shopSuggest); |
| | | } |
| | | |
| | |
| | | import com.ruoyi.shop.domain.dto.MerFollowAgencyTaskDto; |
| | | import com.ruoyi.shop.domain.dto.MerFollowPhoneDto; |
| | | import com.ruoyi.shop.domain.pojo.task.*; |
| | | import com.ruoyi.shop.domain.vo.MerAgencySimpleTaskRecordPageVo; |
| | | import com.ruoyi.shop.domain.vo.MerAgencyTaskPageVo; |
| | | import com.ruoyi.shop.mapper.task.AgencyTaskMapper; |
| | | import com.ruoyi.shop.service.task.AgencyTaskRecordService; |
| | |
| | | } |
| | | |
| | | /** |
| | | * @description |
| | | * @author jqs |
| | | * @date 2023/8/1 18:16 |
| | | * @param page |
| | | * @param merAgencyTaskPageDto |
| | | * @return List<MerAgencySimpleTaskRecordPageVo> |
| | | */ |
| | | @Override |
| | | public List<MerAgencySimpleTaskRecordPageVo>pageMerAgencySimpleTaskRecord(Page page, MerAgencyTaskPageDto merAgencyTaskPageDto){ |
| | | return agencyTaskMapper.pageMerAgencySimpleTaskRecord(page, merAgencyTaskPageDto); |
| | | } |
| | | |
| | | /** |
| | | * |
| | | * @param merCreateAgencyTaskDto |
| | | */ |
| | |
| | | */ |
| | | List<StaffAgencyTaskRecordPageVo> pageStaffAgencyTaskRecord(Page page, StaffAgencyPageDto staffAgencyPageDto); |
| | | |
| | | |
| | | } |
| | |
| | | import com.ruoyi.shop.domain.dto.MerAgencyTaskPageDto; |
| | | import com.ruoyi.shop.domain.dto.MerCreateAgencyTaskDto; |
| | | import com.ruoyi.shop.domain.dto.MerFollowAgencyTaskDto; |
| | | import com.ruoyi.shop.domain.dto.MerMemberTaskPageDto; |
| | | import com.ruoyi.shop.domain.pojo.task.AgencyTask; |
| | | import com.ruoyi.shop.domain.vo.MerAgencySimpleTaskRecordPageVo; |
| | | import com.ruoyi.shop.domain.vo.MerAgencyTaskPageVo; |
| | | import com.ruoyi.shop.domain.vo.MerMemberTaskPageVo; |
| | | |
| | | import java.util.List; |
| | | |
| | |
| | | List<MerAgencyTaskPageVo> pageMerAgencyTask(Page page, MerAgencyTaskPageDto merAgencyTaskPageDto); |
| | | |
| | | /** |
| | | * @description |
| | | * @author jqs |
| | | * @date 2023/8/1 18:20 |
| | | * @param page |
| | | * @param merAgencyTaskPageDto |
| | | * @return List<MerAgencySimpleTaskRecordPageVo> |
| | | */ |
| | | List<MerAgencySimpleTaskRecordPageVo>pageMerAgencySimpleTaskRecord(Page page, MerAgencyTaskPageDto merAgencyTaskPageDto); |
| | | |
| | | /** |
| | | * |
| | | * @param merCreateAgencyTaskDto |
| | | */ |
| | |
| | | tss.replay_time replayTime, |
| | | tss.response_time responseTime, |
| | | tss.suggest_tags suggestTags |
| | | FROM |
| | | t_shop_suggest tss |
| | | FROM t_shop_suggest tss |
| | | LEFT JOIN t_shop ts ON tss.shop_id = ts.shop_id |
| | | WHERE tss.del_flag = 0 |
| | | <if test="param.keyword!=null and param.keyword !=''"> |
| | |
| | | <if test="param.replayEndTime!=null and param.replayEndTime!=''"> |
| | | AND Date(tss.replay_time) <= #{param.replayEndTime} |
| | | </if> |
| | | ORDER BY tss.replay_flag ASC,tss.create_time DESC |
| | | ORDER BY |
| | | <if test="param.suggestSort!=null and param.suggestSort==1"> |
| | | tss.response_timestamp ASC, |
| | | </if> |
| | | <if test="param.suggestSort!=null and param.suggestSort==2"> |
| | | tss.response_timestamp DESC, |
| | | </if> |
| | | tss.replay_flag ASC,tss.create_time DESC |
| | | </select> |
| | | </mapper> |
| | |
| | | ORDER BY tat.task_date DESC |
| | | </select> |
| | | |
| | | <select id="pageMerAgencyTask" resultType="com.ruoyi.shop.domain.vo.MerAgencySimpleTaskRecordPageVo"> |
| | | SELECT |
| | | tmtr.create_time createTime, |
| | | CASE tmtr.follow_type WHEN 1 THEN "电话跟进" WHEN 2 THEN "手动跟进" END followType, |
| | | tmtr.follow_content followContent |
| | | FROM t_agency_task tat |
| | | LEFT JOIN t_agency_task_record tmtr ON tat.task_id = tmtr.task_id |
| | | WHERE tat.del_flag = 0 AND tat.shop_id = #{param.shopId} AND tat.agency_id = #{param.agencyId} |
| | | AND tat.task_status = 2 |
| | | ORDER BY tmtr.create_time DESC |
| | | </select> |
| | | </mapper> |
| | |
| | | return R.ok(page.setRecords(mgtOperLogPageVoList)); |
| | | } |
| | | |
| | | @RequestMapping(value = "/deleteOperlog", method = RequestMethod.POST) |
| | | @Log(title = "日志管理", businessType = BusinessType.DELETE,operContent = "清空日志") |
| | | @ApiOperation(value = "清空日志") |
| | | public R deleteOperlog() { |
| | | customConfigService.deleteOperlog(); |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/exportPageOperLog", method = RequestMethod.POST) |
| | | @ApiOperation(value = "导出操作日志") |
| | | public void exportPageOperLog(MgtOperLogPageDto mgtOperLogPageDto, HttpServletResponse response) { |
| | |
| | | @ApiModelProperty(value = "回复结束时间") |
| | | private String replayEndTime; |
| | | |
| | | @ApiModelProperty(value = "建议排序1回复时间正序2回复时间倒序") |
| | | private Integer suggestSort; |
| | | |
| | | } |
| | |
| | | */ |
| | | @TableField("response_time") |
| | | private String responseTime; |
| | | |
| | | @TableField("response_timestamp") |
| | | private Long responseTimestamp; |
| | | /** |
| | | * 商户id |
| | | */ |
| | |
| | | * @param mgtOperLogPageDto |
| | | * @return List<MgtOperLogPageVo> |
| | | */ |
| | | List<MgtOperLogPageVo> pageOperLog(Page page, MgtOperLogPageDto mgtOperLogPageDto); |
| | | List<MgtOperLogPageVo> pageOperLog(Page page, @Param("param")MgtOperLogPageDto mgtOperLogPageDto); |
| | | |
| | | /** |
| | | * @description |
| | |
| | | * @return List<String> |
| | | */ |
| | | List<String> listOperTitle(); |
| | | |
| | | /** |
| | | * @description 删除日志 |
| | | * @author jqs |
| | | * @date 2023/8/1 19:04 |
| | | * @param |
| | | * @return void |
| | | */ |
| | | void deleteOperlog(); |
| | | } |
| | |
| | | List<MgtOperLogPageVo> pageOperLog(Page page, MgtOperLogPageDto mgtOperLogPageDto); |
| | | |
| | | /** |
| | | * @description 删除日志 |
| | | * @author jqs |
| | | * @date 2023/8/1 19:39 |
| | | * @param |
| | | * @return void |
| | | */ |
| | | void deleteOperlog(); |
| | | |
| | | /** |
| | | * @description |
| | | * @author jqs |
| | | * @date 2023/7/13 15:53 |
| | |
| | | advert.setAdUrl(mgtAdvertEditDto.getAdUrl()); |
| | | advert.setAdContent(mgtAdvertEditDto.getHomeSlogan()); |
| | | advert.setTargetType(mgtAdvertEditDto.getTargetType()); |
| | | advert.setLinkType(mgtAdvertEditDto.getLinkType()); |
| | | advert.setLinkUrl(mgtAdvertEditDto.getLinkUrl()); |
| | | advert.setJumpType(mgtAdvertEditDto.getJumpType()); |
| | | advert.setJumpId(mgtAdvertEditDto.getJumpId()); |
| | |
| | | mgtAllCustomConfigVo.setHomeLogo(advert.getLogoUrl()); |
| | | mgtAllCustomConfigVo.setAdUrl(advert.getAdUrl()); |
| | | mgtAllCustomConfigVo.setTargetType(advert.getTargetType()); |
| | | mgtAllCustomConfigVo.setLinkType(advert.getLinkType()); |
| | | mgtAllCustomConfigVo.setLinkUrl(advert.getLinkUrl()); |
| | | mgtAllCustomConfigVo.setJumpType(advert.getJumpType()); |
| | | mgtAllCustomConfigVo.setJumpId(advert.getJumpId()); |
| | |
| | | } |
| | | |
| | | /** |
| | | * @description 删除日志 |
| | | * @author jqs |
| | | * @date 2023/8/1 19:39 |
| | | * @param |
| | | * @return void |
| | | */ |
| | | @Override |
| | | public void deleteOperlog(){ |
| | | customConfigMapper.deleteOperlog(); |
| | | } |
| | | |
| | | /** |
| | | * @description |
| | | * @author jqs |
| | | * @date 2023/7/13 15:52 |
| | |
| | | staffSuggest.setReplayFlag(1); |
| | | String responseTime = DateUtils.formatDuration(staffSuggest.getCreateTime(), staffSuggest.getReplayTime()); |
| | | staffSuggest.setResponseTime(responseTime); |
| | | long responseTimestamp = DateUtils.diffTime(staffSuggest.getCreateTime(), staffSuggest.getReplayTime()); |
| | | staffSuggest.setResponseTimestamp(responseTimestamp); |
| | | this.saveOrUpdate(staffSuggest); |
| | | } |
| | | |
| | |
| | | oper_ip operIp, |
| | | oper_content operContent |
| | | FROM sys_oper_log |
| | | WHERE operator_type = 1 |
| | | WHERE operator_type = 1 AND del_flag = 0 |
| | | <if test="param.operContent != null and param.operContent !=''"> |
| | | oper_content LIKE concat('%', #{param.operContent}, '%') |
| | | </if> |
| | | <if test="param.operTitle != null and param.operTitle !=''"> |
| | | title = #{param.operTitle} |
| | | </if> |
| | | <if test="param.operStartTime!=null and param.operStartTime!=''"> |
| | | AND Date(oper_time) >= #{param.operStartTime} |
| | | </if> |
| | | <if test="param.operEndTime!=null and param.operEndTime!=''"> |
| | | AND Date(oper_time) <= #{param.operEndTime} |
| | | </if> |
| | | ORDER BY oper_time DESC |
| | | </select> |
| | | |
| | | <update id="deleteOperlog"> |
| | | UPDATE sys_oper_log SET del_flag = 1 WHERE del_flag = 0 |
| | | </update> |
| | | |
| | | <select id="listOperTitle" resultType="java.lang.String"> |
| | | SELECT DISTINCT title FROM sys_oper_log |
| | | WHERE operator_type = 1 |
| | |
| | | <if test="param.replayEndTime!=null and param.replayEndTime!=''"> |
| | | AND Date(tss.replay_time) <= #{param.replayEndTime} |
| | | </if> |
| | | ORDER BY tss.replay_flag ASC,tss.create_time DESC |
| | | ORDER BY |
| | | <if test="param.suggestSort!=null and param.suggestSort==1"> |
| | | tss.response_timestamp ASC, |
| | | </if> |
| | | <if test="param.suggestSort!=null and param.suggestSort==2"> |
| | | tss.response_timestamp DESC, |
| | | </if> |
| | | tss.replay_flag ASC,tss.create_time DESC |
| | | </select> |
| | | |
| | | <select id="pageStaffShopSuggest" resultType="com.ruoyi.system.domain.vo.StaffSuggestPageVo"> |