9 files added
3 files deleted
22 files modified
| | |
| | | registration.excludePathPatterns("/api/xcxPay/wxpayCallback");
|
| | | registration.excludePathPatterns("/api/xcxPay/rechargeCallBack");
|
| | | registration.excludePathPatterns("/api/xcxPay/fapiaoCallBack");
|
| | | registration.excludePathPatterns("/api/xcxPay/activityOrderCallback");
|
| | | registration.excludePathPatterns("/api/happyCategory/allCategory");
|
| | | registration.excludePathPatterns("/api/happyCategory/indexCategory");
|
| | | registration.excludePathPatterns("/api/happyActivity/activityList");
|
| | |
| | | |
| | | @Getter |
| | | public enum StateUpDownEnum { |
| | | |
| | | /** |
| | | * 活动订单失效时间 |
| | | * 分钟 |
| | | */ |
| | | ORDER_OVERTIME(30), |
| | | |
| | | /** |
| | | * 来源类型 1-活动 2-社区圈子发布 |
| | |
| | | VOTE_OPTION_STATE_AUDIT_REFUSE(2), |
| | | |
| | | /** |
| | | * 订单状态 1-待支付 2-待使用 3-已使用 4-售后 |
| | | * 订单状态 1-待支付 2-待使用 3-已使用 4-售后 5-已评价 6-删除 7-已失效 |
| | | */ |
| | | ORDER_STATE_WAIT_PAY(1), |
| | | ORDER_STATE_WAIT_USE(2), |
| | | ORDER_STATE_USED(3), |
| | | ORDER_STATE_AFTER_SALE(4), |
| | | ORDER_STATE_COMMENT(5), |
| | | ORDER_STATE_DELETE(6), |
| | | ORDER_STATE_OVERTIME(7), |
| | | |
| | | /** |
| | | * 支付状态 0-待支付 1-支付成功 2-支付失败 |
| | |
| | | * 删除标识 0-未删除 1-已删除 |
| | | * 使用状态 0-待使用 1-已使用 |
| | | * 是否是核销员 0-否 1-是 |
| | | * 匿名状态 1:匿名 0:不匿名 |
| | | * 展示状态 1:显示 0:隐藏 |
| | | */ |
| | | DOWN(0), |
| | | UP(1); |
| | |
| | | log.info("/ /` / / \\ | |\\/| | |_) | | | |_ | | | |_ "); |
| | | log.info("\\_\\_, \\_\\_/ |_| | |_| |_|__ |_|__ |_| |_|__ "); |
| | | log.info(" "); |
| | | log.info("blnka 权限系统启动完毕,地址:{}", url); |
| | | log.info("快乐社区 权限系统启动完毕,地址:{}", url); |
| | | |
| | | boolean auto = febsProperties.isAutoOpenBrowser(); |
| | | if (auto && StringUtils.equalsIgnoreCase(active, FebsConstant.DEVELOP)) { |
| | |
| | | import cc.mrbird.febs.common.utils.excl.ExcelVersion; |
| | | import cc.mrbird.febs.common.utils.excl.ResponseHeadUtil; |
| | | import cc.mrbird.febs.mall.dto.AdminHappyActivityCategoryDto; |
| | | import cc.mrbird.febs.mall.dto.AdminMallGoodsCommentDto; |
| | | import cc.mrbird.febs.mall.dto.activity.*; |
| | | import cc.mrbird.febs.mall.entity.HappyActivity; |
| | | import cc.mrbird.febs.mall.entity.HappyActivityOption; |
| | |
| | | */ |
| | | @PostMapping("checkOrder") |
| | | @ControllerEndpoint(operation = "订单-手动核销", exceptionMessage = "操作失败") |
| | | public FebsResponse checkOrder(@RequestBody AdminHappyActivityCheckOrderDto dto) { |
| | | public FebsResponse checkOrder(@RequestBody List<Long> dto) { |
| | | |
| | | return adminHappyActivityService.checkOrder(dto); |
| | | } |
| | |
| | | return adminHappyActivityService.activityOrderDel(id); |
| | | } |
| | | |
| | | /** |
| | | * 评论列表 |
| | | */ |
| | | @GetMapping("commentList") |
| | | public FebsResponse getCommentList(AdminActivityCommentDto dto, QueryRequest request) { |
| | | Map<String, Object> data = getDataTable(adminHappyActivityService.getCommentListInPage(dto, request)); |
| | | return new FebsResponse().success().data(data); |
| | | } |
| | | |
| | | /** |
| | | * 评论列表-显示评论 |
| | | */ |
| | | @GetMapping("showStateSwitchOn/{id}") |
| | | @ControllerEndpoint(operation = "评论列表-显示评论", exceptionMessage = "设置失败") |
| | | public FebsResponse showStateSwitchOn(@NotNull(message = "{required}") @PathVariable Long id) { |
| | | return adminHappyActivityService.showStateSwitchOn(id); |
| | | } |
| | | |
| | | |
| | | @SneakyThrows |
| | | @GetMapping("/exportOptionList") |
| | | public void exportOptionList(@RequestParam Map<String, String> params, HttpServletResponse response) { |
| | |
| | | import cc.mrbird.febs.common.annotation.Limit; |
| | | import cc.mrbird.febs.common.entity.FebsResponse; |
| | | import cc.mrbird.febs.mall.dto.*; |
| | | import cc.mrbird.febs.mall.dto.activity.ApiActivityCommentDto; |
| | | import cc.mrbird.febs.mall.dto.activity.ApiOperateValidRegisterActivityDto; |
| | | import cc.mrbird.febs.mall.dto.activity.ApiVoteOptionInPageDto; |
| | | import cc.mrbird.febs.mall.dto.activity.ApiVoteOptionRecordInPageDto; |
| | | import cc.mrbird.febs.mall.service.HappyActivityService; |
| | | import cc.mrbird.febs.mall.vo.*; |
| | | import cc.mrbird.febs.mall.vo.activity.ApiActivityCommentVo; |
| | | import cc.mrbird.febs.mall.vo.activity.ApiVoteActivityHotVo; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | |
| | | return happyActivityService.activityInfo(dto); |
| | | } |
| | | |
| | | |
| | | @ApiOperation(value = "活动评价", notes = "活动评价") |
| | | @ApiResponses({ |
| | | @ApiResponse(code = 200, message = "success", response = ApiActivityCommentVo.class) |
| | | }) |
| | | @PostMapping(value = "/commentByActivityId") |
| | | public FebsResponse commentByActivityId(@RequestBody ApiActivityCommentDto dto) { |
| | | return new FebsResponse().success().data(happyActivityService.commentByActivityId(dto)); |
| | | } |
| | | |
| | | @ApiOperation(value = "点赞关注转发", notes = "点赞关注转发") |
| | | @PostMapping(value = "/operateDo") |
| | | public FebsResponse operateDo(@RequestBody @Validated ApiOperateDoDto dto) { |
| | |
| | | import cc.mrbird.febs.mall.dto.*; |
| | | import cc.mrbird.febs.mall.dto.activity.ApiActivityOrderListDto; |
| | | import cc.mrbird.febs.mall.dto.activity.ApiCheckOrderDto; |
| | | import cc.mrbird.febs.mall.dto.activity.ApiExpireOrderDto; |
| | | import cc.mrbird.febs.mall.dto.activity.ApiPayOrderAddCommentDto; |
| | | import cc.mrbird.febs.mall.service.HappyActivityService; |
| | | import cc.mrbird.febs.mall.vo.*; |
| | | import cc.mrbird.febs.mall.vo.activity.ApiActivityOrderInfoVo; |
| | |
| | | return happyActivityService.connectSave(dto); |
| | | } |
| | | |
| | | @ApiOperation(value = "活动报名-报名-取消订单", notes = "活动报名-报名-创建订单") |
| | | @PostMapping(value = "/expireOrder") |
| | | public FebsResponse expireOrder(@RequestBody @Validated ApiExpireOrderDto dto) { |
| | | |
| | | return happyActivityService.expireOrder(dto); |
| | | } |
| | | |
| | | @ApiOperation(value = "活动报名-报名-创建订单", notes = "活动报名-报名-创建订单") |
| | | @PostMapping(value = "/createOrder") |
| | | public FebsResponse createOrder(@RequestBody @Validated ApiCreateOrderDto dto) { |
| | |
| | | return happyActivityService.checkOrder(dto); |
| | | } |
| | | |
| | | @ApiOperation(value = "我的报名-评价", notes = "我的报名-评价") |
| | | @PostMapping(value = "/addComment") |
| | | public FebsResponse addComment(@RequestBody @Validated ApiPayOrderAddCommentDto dto) { |
| | | |
| | | return happyActivityService.addComment(dto); |
| | | } |
| | | |
| | | } |
| | |
| | | public String orderList() { |
| | | return FebsUtil.view("modules/votesActivity/orderList"); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 活动-订单评论列表 |
| | | */ |
| | | @GetMapping("commentList") |
| | | @RequiresPermissions("commentList:view") |
| | | public String commentList() { |
| | | return FebsUtil.view("modules/votesActivity/commentList"); |
| | | } |
| | | } |
| | |
| | | @ApiModelProperty(value = "支付方式 1-余额支付 2-微信支付 3-积分支付 0-无需支付", example = "1") |
| | | private Integer payType; |
| | | |
| | | @NotBlank(message = "支付密码不能为空") |
| | | // @NotBlank(message = "支付密码不能为空") |
| | | @ApiModelProperty(value = "支付密码", example = "如果选择余额支付需要输入") |
| | | private String tradePwd; |
| | | |
New file |
| | |
| | | package cc.mrbird.febs.mall.dto.activity; |
| | | |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class AdminActivityCommentDto { |
| | | |
| | | private Long activityId; |
| | | } |
New file |
| | |
| | | package cc.mrbird.febs.mall.dto.activity; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import javax.validation.constraints.NotBlank; |
| | | import javax.validation.constraints.NotNull; |
| | | |
| | | @Data |
| | | @ApiModel(value = "ApiActivityCommentDto", description = "参数") |
| | | public class ApiActivityCommentDto { |
| | | |
| | | |
| | | @ApiModelProperty(value = "页码", example = "1") |
| | | private Integer pageNow; |
| | | |
| | | @ApiModelProperty(value = "每页数量", example = "10") |
| | | private Integer pageSize; |
| | | |
| | | |
| | | @NotNull(message = "活动ID不能为空") |
| | | @ApiModelProperty(value = "活动ID", example = "1") |
| | | private Long activityId; |
| | | |
| | | @ApiModelProperty(value = "评价等级", example = "1:好评2:中评3:差评") |
| | | private Integer commentType; |
| | | } |
| | |
| | | @ApiModelProperty(value = "第几页", example = "1") |
| | | private Integer pageNum; |
| | | |
| | | @ApiModelProperty(value = "订单状态", example = "订单状态 1-待支付 2-待使用 3-已使用 4-售后") |
| | | @ApiModelProperty(value = "订单状态", example = "订单状态 1-待支付 2-待参加 3-待评价 4-售后 5-已评价") |
| | | private Integer state; |
| | | |
| | | } |
New file |
| | |
| | | package cc.mrbird.febs.mall.dto.activity; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | @ApiModel(value = "ApiExpireOrderDto", description = "参数") |
| | | public class ApiExpireOrderDto { |
| | | |
| | | |
| | | @ApiModelProperty(value = "订单ID", example = "1") |
| | | private List<Long> ids; |
| | | } |
New file |
| | |
| | | package cc.mrbird.febs.mall.dto.activity; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import javax.validation.constraints.NotBlank; |
| | | import javax.validation.constraints.NotNull; |
| | | |
| | | @Data |
| | | @ApiModel(value = "ApiPayOrderAddCommentDto", description = "参数") |
| | | public class ApiPayOrderAddCommentDto { |
| | | |
| | | |
| | | @NotNull(message = "订单ID不能为空") |
| | | @ApiModelProperty(value = "订单ID") |
| | | private Long orderId; |
| | | |
| | | @NotNull(message = "评分不能为空") |
| | | @ApiModelProperty(value = "评分 4.0") |
| | | private Double star; |
| | | |
| | | @NotBlank(message = "评论不能为空") |
| | | @ApiModelProperty(value = "评论") |
| | | private String comment; |
| | | |
| | | private String images; |
| | | |
| | | } |
New file |
| | |
| | | package cc.mrbird.febs.mall.entity; |
| | | |
| | | import cc.mrbird.febs.common.entity.BaseEntity; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @TableName("happy_activity_comment") |
| | | public class HappyActivityComment extends BaseEntity { |
| | | /** |
| | | * |
| | | `member_id` bigint(20) DEFAULT NULL COMMENT '会员ID', |
| | | `order_id` bigint(20) DEFAULT NULL COMMENT '订单ID', |
| | | `activity_id` bigint(20) DEFAULT NULL COMMENT '活动ID', |
| | | `activity_name` varchar(500) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '活动名称', |
| | | `star` double(5,1) DEFAULT NULL COMMENT '评分', |
| | | `comment` text CHARACTER SET utf8mb4 COMMENT '评论', |
| | | `images` text CHARACTER SET utf8mb4 COMMENT '图片', |
| | | `show_state` int(11) DEFAULT '1' COMMENT '展示状态 1:显示 0:隐藏', |
| | | `anonymous_state` int(11) DEFAULT '0' COMMENT '匿名状态 1:匿名 0:不匿名', |
| | | */ |
| | | |
| | | private Long memberId; |
| | | private Long orderId; |
| | | private Long activityId; |
| | | private String activityName; |
| | | private Double star; |
| | | private String comment; |
| | | private String images; |
| | | private Integer showState; |
| | | private Integer anonymousState; |
| | | //查询条件 :评价等级 1:好评2:中评3:差评 |
| | | @TableField(exist = false) |
| | | private Integer commentType; |
| | | } |
| | |
| | | `pay_order_no` text COMMENT '支付订单号', |
| | | `wx_order_no` varchar(100) DEFAULT NULL COMMENT '微信订单编号', |
| | | `state` int(11) DEFAULT '1' COMMENT '订单状态 1-待支付 2-待使用 3-已使用 4-售后', |
| | | `fail_time` datetime DEFAULT NULL COMMENT '失效时间', |
| | | */ |
| | | |
| | | |
| | |
| | | private String payOrderNo; |
| | | private String wxOrderNo; |
| | | private Integer state; |
| | | private Date failTime; |
| | | |
| | | |
| | | @TableField(exist = false) |
New file |
| | |
| | | package cc.mrbird.febs.mall.mapper; |
| | | |
| | | import cc.mrbird.febs.mall.entity.HappyActivityComment; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | public interface HappyActivityCommentMapper extends BaseMapper<HappyActivityComment> { |
| | | } |
| | |
| | | package cc.mrbird.febs.mall.mapper; |
| | | |
| | | import cc.mrbird.febs.mall.dto.activity.AdminHappyActivityOrderDto; |
| | | import cc.mrbird.febs.mall.dto.activity.ApiVoteOptionInPageDto; |
| | | import cc.mrbird.febs.mall.dto.activity.ApiVoteOptionRecordInPageDto; |
| | | import cc.mrbird.febs.mall.dto.activity.*; |
| | | import cc.mrbird.febs.mall.entity.HappyActivity; |
| | | import cc.mrbird.febs.mall.dto.ApiActivityInfoDto; |
| | | import cc.mrbird.febs.mall.entity.HappyActivityOrder; |
| | |
| | | import cc.mrbird.febs.mall.dto.ApiVoteRecordInPageDto; |
| | | import cc.mrbird.febs.mall.vo.ApiActivityOptionListVo; |
| | | import cc.mrbird.febs.mall.vo.ApiVoteRecordInPageVo; |
| | | import cc.mrbird.febs.mall.vo.activity.AdminActivityCommentVo; |
| | | import cc.mrbird.febs.mall.vo.activity.ApiActivityCommentVo; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | |
| | | public interface HappyActivityMapper extends BaseMapper<HappyActivity> { |
| | | |
| | |
| | | Page<HappyActivityOrder> selectOrderInPage(Page<HappyActivityOrder> page, @Param("record")AdminHappyActivityOrderDto dto); |
| | | |
| | | Page<ApiActivityOptionListVo> getVoteOptionRecordInPage(Page<ApiActivityOptionListVo> page, @Param("record")ApiVoteOptionRecordInPageDto dto); |
| | | |
| | | List<ApiActivityCommentVo> selectActivityCommentPage(Page<ApiActivityCommentVo> page, @Param("record")ApiActivityCommentDto dto); |
| | | |
| | | IPage<AdminActivityCommentVo> getCommentListInPage(Page<AdminActivityCommentVo> page, @Param("record")AdminActivityCommentDto dto); |
| | | } |
| | |
| | | import cc.mrbird.febs.mall.dto.ApiOperateDoDto; |
| | | import cc.mrbird.febs.mall.dto.ApiOperateVoteDto; |
| | | import cc.mrbird.febs.mall.dto.ApiVoteRecordInPageDto; |
| | | import cc.mrbird.febs.mall.vo.activity.ApiActivityCommentVo; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | import java.util.List; |
| | | |
| | | public interface HappyActivityService extends IService<HappyActivity> { |
| | | |
| | |
| | | |
| | | FebsResponse connectSave(ApiConnectSaveDto dto); |
| | | |
| | | FebsResponse expireOrder(ApiExpireOrderDto dto); |
| | | |
| | | FebsResponse createOrder(ApiCreateOrderDto dto); |
| | | |
| | | FebsResponse payOrder(ApiPayOrderDto dto); |
| | |
| | | void checkActivityItem(Long orderId); |
| | | |
| | | void overtimeJob(); |
| | | |
| | | FebsResponse addComment(ApiPayOrderAddCommentDto dto); |
| | | |
| | | List<ApiActivityCommentVo> commentByActivityId(ApiActivityCommentDto dto); |
| | | } |
| | |
| | | import cc.mrbird.febs.mall.dto.AdminHappyActivityCategoryDto; |
| | | import cc.mrbird.febs.mall.dto.activity.*; |
| | | import cc.mrbird.febs.mall.entity.*; |
| | | import cc.mrbird.febs.mall.vo.activity.AdminActivityCommentVo; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | |
| | | |
| | | IPage<HappyActivityOrder> activityOrderList(AdminHappyActivityOrderDto dto, QueryRequest request); |
| | | |
| | | FebsResponse checkOrder(AdminHappyActivityCheckOrderDto dto); |
| | | FebsResponse checkOrder(List<Long> dto); |
| | | |
| | | FebsResponse activityOrderDel(Long id); |
| | | |
| | | List<HappyActivityOption> getVoteOptionListForExport(Map<String, String> params); |
| | | |
| | | IPage<AdminActivityCommentVo> getCommentListInPage(AdminActivityCommentDto dto, QueryRequest request); |
| | | |
| | | FebsResponse showStateSwitchOn(Long id); |
| | | } |
| | |
| | | import cc.mrbird.febs.common.entity.FebsResponse; |
| | | import cc.mrbird.febs.common.entity.QueryRequest; |
| | | import cc.mrbird.febs.common.enumerates.StateUpDownEnum; |
| | | import cc.mrbird.febs.common.exception.FebsException; |
| | | import cc.mrbird.febs.common.utils.MallUtils; |
| | | import cc.mrbird.febs.mall.dto.AdminHappyActivityCategoryDto; |
| | | import cc.mrbird.febs.mall.dto.activity.*; |
| | | import cc.mrbird.febs.mall.entity.*; |
| | | import cc.mrbird.febs.mall.mapper.*; |
| | | import cc.mrbird.febs.mall.service.IAdminHappyActivityService; |
| | | import cc.mrbird.febs.mall.vo.AdminMallGoodsCommentVo; |
| | | import cc.mrbird.febs.mall.vo.activity.AdminActivityCommentVo; |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | |
| | | private final HappyActivityCategoryMapper happyActivityCategoryMapper; |
| | | private final HappyActivityOptionMapper happyActivityOptionMapper; |
| | | private final HappyActivityOrderMapper happyActivityOrderMapper; |
| | | private final HappyActivityCommentMapper happyActivityCommentMapper; |
| | | private final HappyActivityOrderItemMapper happyActivityOrderItemMapper; |
| | | private final HappyFollowMapper happyFollowMapper; |
| | | private final MallMemberMapper mallMemberMapper; |
| | |
| | | happyActivity.setName(dto.getName()); |
| | | happyActivity.setType(dto.getType()); |
| | | happyActivity.setJoinCnt(dto.getJoinCnt()); |
| | | happyActivity.setExpectCnt(dto.getJoinCnt()); |
| | | happyActivity.setSurplusCnt(dto.getSurplusCnt()); |
| | | happyActivity.setStartTime(dto.getStartTime()); |
| | | happyActivity.setEndTime(dto.getEndTime()); |
| | | happyActivity.setPhone(dto.getPhone()); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse checkOrder(AdminHappyActivityCheckOrderDto dto) { |
| | | public FebsResponse checkOrder(List<Long> ids) { |
| | | |
| | | List<Long> ids = dto.getIds(); |
| | | if (CollUtil.isEmpty(ids)){ |
| | | return new FebsResponse().fail().message("请选择需要核销的订单"); |
| | | } |
| | | for(Long id : ids){ |
| | | HappyActivityOrder happyActivityOrder = happyActivityOrderMapper.selectById(id); |
| | | happyActivityOrder.setState(StateUpDownEnum.ORDER_STATE_USED.getCode()); |
| | | happyActivityOrderMapper.updateById(happyActivityOrder); |
| | | if(StateUpDownEnum.ORDER_STATE_WAIT_USE.getCode() == happyActivityOrder.getState()){ |
| | | happyActivityOrder.setState(StateUpDownEnum.ORDER_STATE_USED.getCode()); |
| | | happyActivityOrderMapper.updateById(happyActivityOrder); |
| | | |
| | | List<HappyActivityOrderItem> happyActivityOrderItems = happyActivityOrderItemMapper.selectList( |
| | | new LambdaQueryWrapper<HappyActivityOrderItem>() |
| | | .eq(HappyActivityOrderItem::getOrderId, id) |
| | | ); |
| | | if(CollUtil.isNotEmpty(happyActivityOrderItems)){ |
| | | happyActivityOrderItems.forEach(happyActivityOrderItem -> { |
| | | happyActivityOrderItem.setState(StateUpDownEnum.UP.getCode()); |
| | | happyActivityOrderItemMapper.updateById(happyActivityOrderItem); |
| | | }); |
| | | List<HappyActivityOrderItem> happyActivityOrderItems = happyActivityOrderItemMapper.selectList( |
| | | new LambdaQueryWrapper<HappyActivityOrderItem>() |
| | | .eq(HappyActivityOrderItem::getOrderId, id) |
| | | ); |
| | | if(CollUtil.isNotEmpty(happyActivityOrderItems)){ |
| | | happyActivityOrderItems.forEach(happyActivityOrderItem -> { |
| | | happyActivityOrderItem.setState(StateUpDownEnum.UP.getCode()); |
| | | happyActivityOrderItemMapper.updateById(happyActivityOrderItem); |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | public FebsResponse activityOrderDel(Long id) { |
| | | |
| | | HappyActivityOrder happyActivityOrder = happyActivityOrderMapper.selectById(id); |
| | | |
| | | if(StateUpDownEnum.ORDER_STATE_OVERTIME.getCode() != happyActivityOrder.getState()){ |
| | | throw new FebsException("该订单状态不是已失效状态!"); |
| | | } |
| | | if(ObjectUtil.isNotEmpty(happyActivityOrder)){ |
| | | happyActivityOrder.setDeleteFlag(StateUpDownEnum.UP.getCode()); |
| | | happyActivityOrderMapper.updateById(happyActivityOrder); |
| | |
| | | } |
| | | return happyActivityOptionMapper.selectList(queryWrapper); |
| | | } |
| | | |
| | | @Override |
| | | public IPage<AdminActivityCommentVo> getCommentListInPage(AdminActivityCommentDto dto, QueryRequest request) { |
| | | Page<AdminActivityCommentVo> page = new Page<>(request.getPageNum(), request.getPageSize()); |
| | | IPage<AdminActivityCommentVo> adminActivityCommentVoIPage = this.baseMapper.getCommentListInPage(page, dto); |
| | | return adminActivityCommentVoIPage; |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse showStateSwitchOn(Long id) { |
| | | |
| | | HappyActivityComment happyActivityComment = happyActivityCommentMapper.selectById(id); |
| | | Integer showState = StateUpDownEnum.UP.getCode() == happyActivityComment.getShowState() ? StateUpDownEnum.DOWN.getCode() : StateUpDownEnum.UP.getCode(); |
| | | happyActivityComment.setShowState(showState); |
| | | happyActivityCommentMapper.updateById(happyActivityComment); |
| | | return new FebsResponse().success().message("操作成功"); |
| | | } |
| | | } |
| | |
| | | import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; |
| | | import cc.mrbird.febs.mall.vo.*; |
| | | import cc.mrbird.febs.mall.dto.ApiOperateDoDto; |
| | | import cc.mrbird.febs.mall.vo.activity.ApiActivityOrderInfoVo; |
| | | import cc.mrbird.febs.mall.vo.activity.ApiActivityOrderListVo; |
| | | import cc.mrbird.febs.mall.vo.activity.ApiCheckOrderVo; |
| | | import cc.mrbird.febs.mall.vo.activity.ApiVoteActivityHotVo; |
| | | import cc.mrbird.febs.mall.vo.activity.*; |
| | | import cc.mrbird.febs.pay.model.BrandWCPayRequestData; |
| | | import cc.mrbird.febs.pay.service.IXcxPayService; |
| | | import cc.mrbird.febs.rabbit.producter.AgentProducer; |
| | |
| | | private final HappyActivityOptionMapper happyActivityOptionMapper; |
| | | private final HappyActivityConnectMapper happyActivityConnectMapper; |
| | | private final HappyActivityOrderMapper happyActivityOrderMapper; |
| | | private final HappyActivityCommentMapper happyActivityCommentMapper; |
| | | private final HappyActivityOrderItemMapper happyActivityOrderItemMapper; |
| | | private final IXcxPayService iXcxPayService; |
| | | private final IApiMallMemberWalletService iApiMallMemberWalletService; |
| | |
| | | ); |
| | | if(happyActivity != null){ |
| | | BeanUtil.copyProperties(happyActivity,apiActivityVo); |
| | | |
| | | Integer commentCount = happyActivityCommentMapper.selectCount( |
| | | new LambdaQueryWrapper<HappyActivityComment>() |
| | | .eq(HappyActivityComment::getActivityId, happyActivity.getId()) |
| | | .eq(HappyActivityComment::getShowState, StateUpDownEnum.UP.getCode()) |
| | | ); |
| | | apiActivityVo.setCommentCount(commentCount); |
| | | |
| | | List<HappyFollow> happyFollows = happyFollowMapper.selectList( |
| | | new LambdaQueryWrapper<HappyFollow>() |
| | | .select(HappyFollow::getId, HappyFollow::getType) |
| | |
| | | new LambdaQueryWrapper<HappyActivityConnect>() |
| | | .eq(HappyActivityConnect::getMemberId, memberId) |
| | | .eq(HappyActivityConnect::getName, dto.getName()) |
| | | .eq(HappyActivityConnect::getPhone, dto.getPhone()) |
| | | ); |
| | | if(CollUtil.isNotEmpty(happyActivityConnects)){ |
| | | throw new FebsException("已经添加过该联系人"); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse expireOrder(ApiExpireOrderDto dto) { |
| | | if(CollUtil.isEmpty(dto.getIds())){ |
| | | throw new FebsException("请选择订单"); |
| | | } |
| | | |
| | | dto.getIds().forEach(id -> { |
| | | HappyActivityOrder happyActivityOrder = happyActivityOrderMapper.selectById(id); |
| | | if(ObjectUtil.isNotEmpty(happyActivityOrder)){ |
| | | Long activityId = happyActivityOrder.getActivityId(); |
| | | Integer numCnt = happyActivityOrder.getNumCnt(); |
| | | this.baseMapper.updateHappyActivitySurplusCnt(activityId,numCnt); |
| | | |
| | | happyActivityOrder.setState(StateUpDownEnum.ORDER_STATE_OVERTIME.getCode()); |
| | | happyActivityOrderMapper.updateById(happyActivityOrder); |
| | | } |
| | | }); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse createOrder(ApiCreateOrderDto dto) { |
| | | Long memberId = LoginUserUtil.getLoginUser().getId(); |
| | | if(CollUtil.isEmpty(dto.getConnectIds())){ |
| | |
| | | } |
| | | |
| | | Long activityId = dto.getActivityId(); |
| | | |
| | | List<HappyActivityOrderItem> happyActivityOrderItems = happyActivityOrderItemMapper.selectList( |
| | | new LambdaQueryWrapper<HappyActivityOrderItem>() |
| | | .eq(HappyActivityOrderItem::getActivityId, activityId) |
| | | .in(HappyActivityOrderItem::getConnectId, connectIds) |
| | | ); |
| | | if(CollUtil.isNotEmpty(happyActivityOrderItems)){ |
| | | //stream流操作happyActivityOrderItems,返回一个orderId的Set集合 |
| | | Set<Long> orderIdSet = happyActivityOrderItems.stream().map(HappyActivityOrderItem::getOrderId).collect(Collectors.toSet()); |
| | | List<HappyActivityOrder> happyActivityOrders = happyActivityOrderMapper.selectList( |
| | | new LambdaQueryWrapper<HappyActivityOrder>() |
| | | .in(HappyActivityOrder::getId, orderIdSet) |
| | | .in(HappyActivityOrder::getState, Arrays.asList(StateUpDownEnum.ORDER_STATE_WAIT_PAY.getCode(),StateUpDownEnum.ORDER_STATE_WAIT_USE.getCode())) |
| | | ); |
| | | if(CollUtil.isNotEmpty(happyActivityOrders)){ |
| | | throw new FebsException("有报名人重复报名了活动,请重新选择"); |
| | | } |
| | | } |
| | | HappyActivity happyActivity = this.baseMapper.selectById(activityId); |
| | | if (ObjectUtil.isEmpty(happyActivity)) { |
| | | throw new FebsException("活动不存在"); |
| | |
| | | if(amount.compareTo(BigDecimal.ZERO) < 0){ |
| | | throw new FebsException("支付金额错误"); |
| | | } |
| | | DateTime failTime = DateUtil.offsetMinute(new Date(), StateUpDownEnum.ORDER_OVERTIME.getCode()); |
| | | HappyActivityOrder happyActivityOrder = new HappyActivityOrder(); |
| | | happyActivityOrder.setOrderNo(MallUtils.getOrderNum()); |
| | | happyActivityOrder.setMemberId(memberId); |
| | |
| | | happyActivityOrder.setNumCnt(dto.getNumCnt()); |
| | | happyActivityOrder.setAmount(amount); |
| | | happyActivityOrder.setPayState(StateUpDownEnum.PAY_STATE_NOT_PAY.getCode()); |
| | | happyActivityOrder.setPayType(StateUpDownEnum.PAY_METHOD_WECHAT.getCode()); |
| | | happyActivityOrder.setFailTime(failTime); |
| | | log.info("创建订单,订单号="+JSONUtil.parse(happyActivityOrder)); |
| | | happyActivityOrderMapper.insert(happyActivityOrder); |
| | | |
| | | for(Long connectId : connectIds){ |
| | |
| | | HashMap<String, Object> stringObjectHashMap = new HashMap<>(); |
| | | stringObjectHashMap.put("orderId",happyActivityOrder.getId()); |
| | | stringObjectHashMap.put("amount",amount); |
| | | stringObjectHashMap.put("failTime",failTime); |
| | | |
| | | return new FebsResponse().success().data(stringObjectHashMap); |
| | | } |
| | |
| | | log.error("支付失败,订单ID:{},支付类型:{}", orderId, payType, e); |
| | | throw new FebsException("支付失败:" + e.getMessage()); |
| | | } |
| | | |
| | | // todo 支付失败要把对应的人数加回来 |
| | | |
| | | // 构造返回结果,包含支付相关信息 |
| | | Map<String, Object> map = new HashMap<>(); |
| | |
| | | |
| | | LambdaQueryWrapper<HappyActivityOrder> happyActivityOrderLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | happyActivityOrderLambdaQueryWrapper.eq(HappyActivityOrder::getMemberId, memberId); |
| | | if(ObjectUtil.isNotEmpty(dto.getState())){ |
| | | if(ObjectUtil.isNotEmpty(dto.getState()) && dto.getState() != 0){ |
| | | happyActivityOrderLambdaQueryWrapper.eq(HappyActivityOrder::getState, dto.getState()); |
| | | } |
| | | happyActivityOrderLambdaQueryWrapper.eq(HappyActivityOrder::getDeleteFlag, StateUpDownEnum.DOWN.getCode()); |
| | |
| | | List<HappyActivity> happyActivities = this.baseMapper.selectList( |
| | | new LambdaQueryWrapper<HappyActivity>() |
| | | .select( |
| | | HappyActivity::getId, |
| | | HappyActivity::getCategoryId, |
| | | HappyActivity::getName, |
| | | HappyActivity::getStartTime, |
| | |
| | | List<HappyActivityOrder> happyActivityOrders = happyActivityOrderMapper.selectList( |
| | | new LambdaQueryWrapper<HappyActivityOrder>() |
| | | .eq(HappyActivityOrder::getState, StateUpDownEnum.ORDER_STATE_WAIT_PAY.getCode()) |
| | | .lt(HappyActivityOrder::getCreatedTime, DateUtil.offsetMinute(new Date(), -10)) |
| | | .lt(HappyActivityOrder::getFailTime, new Date()) |
| | | ); |
| | | if(CollUtil.isNotEmpty(happyActivityOrders)){ |
| | | happyActivityOrders.forEach(happyActivityOrder -> { |
| | |
| | | Integer numCnt = happyActivityOrder.getNumCnt(); |
| | | this.baseMapper.updateHappyActivitySurplusCnt(activityId,numCnt); |
| | | |
| | | happyActivityOrder.setDeleteFlag(StateUpDownEnum.UP.getCode()); |
| | | happyActivityOrder.setState(StateUpDownEnum.ORDER_STATE_OVERTIME.getCode()); |
| | | happyActivityOrderMapper.updateById(happyActivityOrder); |
| | | }); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse addComment(ApiPayOrderAddCommentDto dto) { |
| | | // 获取当前登录用户的ID |
| | | Long memberId = LoginUserUtil.getLoginUser().getId(); |
| | | Long orderId = dto.getOrderId(); |
| | | |
| | | HappyActivityOrder happyActivityOrder = happyActivityOrderMapper.selectById(orderId); |
| | | if(StateUpDownEnum.ORDER_STATE_USED.getCode() != happyActivityOrder.getState()){ |
| | | throw new FebsException("该订单状态不是已使用状态!"); |
| | | } |
| | | |
| | | happyActivityOrder.setState(StateUpDownEnum.ORDER_STATE_COMMENT.getCode()); |
| | | happyActivityOrderMapper.updateById(happyActivityOrder); |
| | | |
| | | HappyActivity happyActivity = this.baseMapper.selectById(happyActivityOrder.getActivityId()); |
| | | |
| | | HappyActivityComment happyActivityComment = new HappyActivityComment(); |
| | | happyActivityComment.setActivityId(happyActivity.getId()); |
| | | happyActivityComment.setActivityName(happyActivity.getName()); |
| | | happyActivityComment.setMemberId(memberId); |
| | | happyActivityComment.setOrderId(orderId); |
| | | happyActivityComment.setStar(dto.getStar()); |
| | | happyActivityComment.setComment(dto.getComment()); |
| | | happyActivityComment.setImages(dto.getImages()); |
| | | happyActivityCommentMapper.insert(happyActivityComment); |
| | | |
| | | return new FebsResponse().success().message("操作成功"); |
| | | } |
| | | |
| | | @Override |
| | | public List<ApiActivityCommentVo> commentByActivityId(ApiActivityCommentDto dto) { |
| | | Page<ApiActivityCommentVo> page = new Page<>(dto.getPageNow(), dto.getPageSize()); |
| | | return this.baseMapper.selectActivityCommentPage(page,dto); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse voteActivityHot(Long id) { |
| | | |
| | | ApiVoteActivityHotVo apiVoteActivityHotVo = new ApiVoteActivityHotVo(); |
| | |
| | | |
| | | @ApiModelProperty(value = "背景图片") |
| | | private String backImg; |
| | | |
| | | @ApiModelProperty(value = "评论数量") |
| | | private Integer commentCount; |
| | | |
| | | } |
New file |
| | |
| | | package cc.mrbird.febs.mall.vo.activity; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | @Data |
| | | public class AdminActivityCommentVo { |
| | | |
| | | private Long id; |
| | | |
| | | @ApiModelProperty(value = "姓名") |
| | | private String memberName; |
| | | |
| | | @ApiModelProperty(value = "订单编号") |
| | | private String orderNo; |
| | | |
| | | @ApiModelProperty(value = "活动名称") |
| | | private String activityName; |
| | | |
| | | @ApiModelProperty(value = "评价时间") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private Date createdTime; |
| | | |
| | | @ApiModelProperty(value = "评分 4.0") |
| | | private Double star; |
| | | |
| | | @ApiModelProperty(value = "评论") |
| | | private String comment; |
| | | |
| | | @ApiModelProperty(value = "图片") |
| | | private String images; |
| | | |
| | | @ApiModelProperty(value = "是否匿名评价 1:匿名 2:不匿名") |
| | | private Integer anonymousState; |
| | | |
| | | @ApiModelProperty(value = "展示状态 1:显示 2:隐藏") |
| | | private Integer showState; |
| | | } |
New file |
| | |
| | | package cc.mrbird.febs.mall.vo.activity; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | @Data |
| | | @ApiModel(value = "ApiActivityCommentVo", description = "参数") |
| | | public class ApiActivityCommentVo { |
| | | |
| | | |
| | | @ApiModelProperty(value = "头像") |
| | | private String avatar; |
| | | |
| | | @ApiModelProperty(value = "名称") |
| | | private String name; |
| | | |
| | | @ApiModelProperty(value = "评价时间") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private Date createdTime; |
| | | |
| | | @ApiModelProperty(value = "评分 4.0") |
| | | private Double star; |
| | | |
| | | @ApiModelProperty(value = "评论") |
| | | private String comment; |
| | | |
| | | @ApiModelProperty(value = "图片") |
| | | private String images; |
| | | |
| | | @ApiModelProperty(value = "是否匿名评价 1:匿名 2:不匿名") |
| | | private Integer anonymousState; |
| | | |
| | | @ApiModelProperty(value = "好评 大于四星") |
| | | private Integer greatNum; |
| | | |
| | | @ApiModelProperty(value = "好评 大于三星小于四星") |
| | | private Integer goodNum; |
| | | |
| | | @ApiModelProperty(value = "差评 小于三星") |
| | | private Integer badNum; |
| | | } |
| | |
| | | @ApiModelProperty(value = "实付金额") |
| | | private BigDecimal price; |
| | | |
| | | |
| | | |
| | | @ApiModelProperty(value = "订单状态 1-待支付 2-待使用 3-已使用 4-售后") |
| | | private Integer orderState; |
| | | |
| | |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private Date endTime; |
| | | |
| | | @ApiModelProperty(value = "订单失效时间") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private Date failTime; |
| | | |
| | | @ApiModelProperty(value = "活动地点") |
| | | private String address; |
| | | |
| | |
| | | import cc.mrbird.febs.common.entity.FebsResponse; |
| | | import cc.mrbird.febs.common.enumerates.*; |
| | | import cc.mrbird.febs.common.properties.XcxProperties; |
| | | import cc.mrbird.febs.common.utils.MallUtils; |
| | | import cc.mrbird.febs.common.utils.RedisUtils; |
| | | import cc.mrbird.febs.common.utils.ShareCodeUtil; |
| | | import cc.mrbird.febs.common.utils.SpringContextHolder; |
| | | import cc.mrbird.febs.mall.dto.RechargeWalletMessageSendDto; |
| | | import cc.mrbird.febs.mall.entity.*; |
| | |
| | | import cc.mrbird.febs.pay.util.Util; |
| | | import cc.mrbird.febs.pay.util.WechatConfigure; |
| | | import cc.mrbird.febs.rabbit.producter.AgentProducer; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.json.JSONObject; |
| | | import cn.hutool.json.JSONUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.wechat.pay.contrib.apache.httpclient.notification.NotificationRequest; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | |
| | | import java.text.ParseException; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @Slf4j |
| | |
| | | public class XcxPayController { |
| | | |
| | | private final HappyActivityOrderMapper happyActivityOrderMapper; |
| | | private final HappyActivityOrderItemMapper happyActivityOrderItemMapper; |
| | | private final MallOrderInfoMapper mallOrderInfoMapper; |
| | | private final MallMoneyFlowMapper mallMoneyFlowMapper; |
| | | private final MallMemberWalletMapper mallMemberWalletMapper; |
| | |
| | | happyActivityOrder.setWxOrderNo(transaction_id); |
| | | happyActivityOrderMapper.updateById(happyActivityOrder); |
| | | |
| | | List<HappyActivityOrderItem> items = happyActivityOrderItemMapper.selectList( |
| | | new LambdaQueryWrapper<HappyActivityOrderItem>() |
| | | .eq(HappyActivityOrderItem::getOrderId, orderId) |
| | | ); |
| | | if (CollUtil.isNotEmpty(items)) { |
| | | for (HappyActivityOrderItem item : items) { |
| | | String code = ShareCodeUtil.toSerialCode(item.getOrderId()) + MallUtils.getRandomNum(10); |
| | | item.setCode(code); |
| | | happyActivityOrderItemMapper.updateById(item); |
| | | } |
| | | } |
| | | |
| | | mallMoneyFlowService.addMoneyFlow( |
| | | happyActivityOrder.getMemberId(), |
| | | happyActivityOrder.getAmount().negate(), |
| | |
| | | |
| | | |
| | | <update id="updateHappyActivitySurplusCnt" > |
| | | update happy_activity set surplus_cnt = likes_cnt + #{cnt} where id = #{id} |
| | | update happy_activity set surplus_cnt = surplus_cnt + #{cnt} where id = #{id} |
| | | </update> |
| | | |
| | | <select id="getVoteOptionInPage" resultType="cc.mrbird.febs.mall.vo.ApiActivityOptionListVo"> |
| | |
| | | order by a.likes_cnt desc |
| | | </select> |
| | | |
| | | <select id="selectActivityCommentPage" resultType="cc.mrbird.febs.mall.vo.activity.ApiActivityCommentVo"> |
| | | select |
| | | a.*, |
| | | b.name name, |
| | | b.avatar avatar |
| | | from happy_activity_comment a |
| | | left join mall_member b on b.id = a.member_id |
| | | <where> |
| | | <if test="record != null"> |
| | | <if test="record.activityId != null and record.activityId != ''"> |
| | | and a.activity_id = #{record.activityId} |
| | | </if> |
| | | <if test="record.commentType != null and record.commentType != '' and record.commentType == 1"> |
| | | and a.star <![CDATA[ > ]]> 4 |
| | | </if> |
| | | <if test="record.commentType != null and record.commentType != '' and record.commentType == 2"> |
| | | and (a.star <![CDATA[ >= ]]> 3 and a.star <![CDATA[ <= ]]> 4) |
| | | </if> |
| | | <if test="record.commentType != null and record.commentType != '' and record.commentType == 3"> |
| | | and (a.star <![CDATA[ < ]]> 3 ) |
| | | </if> |
| | | </if> |
| | | </where> |
| | | group by a.id |
| | | order by a.created_time desc |
| | | </select> |
| | | |
| | | |
| | | |
| | | <select id="getCommentListInPage" resultType="cc.mrbird.febs.mall.vo.activity.AdminActivityCommentVo"> |
| | | select |
| | | a.*, |
| | | b.name memberName, |
| | | c.order_no orderNo |
| | | from happy_activity_comment a |
| | | left join mall_member b on a.member_id = b.id |
| | | left join happy_activity_order c on a.order_id = c.id |
| | | where a.activity_id = #{record.activityId} |
| | | order by a.created_time desc |
| | | </select> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <div class="layui-fluid layui-anim febs-anim" id="febs-activity-comment" lay-title="评论列表"> |
| | | <div class="layui-row febs-container"> |
| | | <div class="layui-col-md12"> |
| | | <div class="layui-card"> |
| | | <div class="layui-card-body febs-table-full"> |
| | | <form class="layui-form layui-table-form" lay-filter="user-table-form"> |
| | | <div class="layui-form-item"> |
| | | <div class="layui-col-md10"> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label layui-form-label-sm">活动</label> |
| | | <div class="layui-input-inline"> |
| | | <select name="activityId" class="activity-type-comment"> |
| | | <option value="">请选择</option> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area"> |
| | | <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="query"> |
| | | <i class="layui-icon"></i> |
| | | </div> |
| | | <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset"> |
| | | <i class="layui-icon"></i> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </form> |
| | | <table lay-filter="activityCommentTable" lay-data="{id: 'activityCommentTable'}"></table> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- 表格操作栏 start --> |
| | | <script type="text/html" id="showStateSwitch"> |
| | | {{# if(d.showState === 1) { }} |
| | | <input type="checkbox" value={{d.id}} lay-text="是|否" checked lay-skin="switch" lay-filter="showStateSwitch"> |
| | | {{# } else { }} |
| | | <input type="checkbox" value={{d.id}} lay-text="是|否" lay-skin="switch" lay-filter="showStateSwitch"> |
| | | {{# } }} |
| | | </script> |
| | | <script id="showScreenHost" type="text/html"> |
| | | {{# var srr=d.images.split(","); |
| | | for(var j in srr) { srr[j] }} |
| | | <div style="margin:0 10px; display:inline-block !important; display:inline; max-width:100px; max-height:100px;"> |
| | | <img style=" max-width:100px; max-height:100px;" src="{{srr[j]}}" alt=""/> |
| | | </div> |
| | | {{# } }} |
| | | </script> |
| | | |
| | | <!-- 表格操作栏 end --> |
| | | <script data-th-inline="none" type="text/javascript"> |
| | | // 引入组件并初始化 |
| | | layui.use([ 'jquery', 'form', 'table', 'febs'], function () { |
| | | var $ = layui.jquery, |
| | | febs = layui.febs, |
| | | form = layui.form, |
| | | table = layui.table, |
| | | $view = $('#febs-activity-comment'), |
| | | $query = $view.find('#query'), |
| | | $reset = $view.find('#reset'), |
| | | $searchForm = $view.find('form'), |
| | | sortObject = {field: 'phone', type: null}, |
| | | tableIns; |
| | | |
| | | form.render(); |
| | | //(下拉框) |
| | | $.get(ctx + 'admin/happyActivity/allOrderActivities', function (res) { |
| | | var data = res.data; |
| | | for (let k in data) |
| | | { |
| | | $(".activity-type-comment").append("<option value='" + data[k].id + "'>" + data[k].name + "</option>"); |
| | | } |
| | | layui.use('form', function () { |
| | | var form = layui.form; |
| | | form.render(); |
| | | }); |
| | | }); |
| | | |
| | | // 表格初始化 |
| | | initTable(); |
| | | |
| | | // 初始化表格操作栏各个按钮功能 |
| | | table.on('tool(activityCommentTable)', function (obj) { |
| | | var data = obj.data, |
| | | layEvent = obj.event; |
| | | }); |
| | | |
| | | // 查询按钮 |
| | | $query.on('click', function () { |
| | | var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type}); |
| | | tableIns.reload({where: params, page: {curr: 1}}); |
| | | }); |
| | | |
| | | // 刷新按钮 |
| | | $reset.on('click', function () { |
| | | $searchForm[0].reset(); |
| | | sortObject.type = 'null'; |
| | | tableIns.reload({where: getQueryParams(), page: {curr: 1}, initSort: sortObject}); |
| | | }); |
| | | |
| | | function initTable() { |
| | | tableIns = febs.table.init({ |
| | | elem: $view.find('table'), |
| | | id: 'activityCommentTable', |
| | | url: ctx + 'admin/happyActivity/commentList', |
| | | cols: [[ |
| | | {field: 'memberName', title: '用户', minWidth: 100,align:'left'}, |
| | | {field: 'orderNo', title: '订单编号', minWidth: 80,align:'left'}, |
| | | {field: 'goodsName', title: '活动名称', minWidth: 80,align:'left'}, |
| | | {field: 'showState', title: '是否展示', templet: '#showStateSwitch', minWidth: 80,align:'center'}, |
| | | {field: 'images', title: '图片', align: 'center', templet: '#showScreenHost', width: 400}, |
| | | {field: 'star', title: '评分', minWidth: 50,align:'left'}, |
| | | {field: 'comment', title: '评论', minWidth: 120,align:'left'}, |
| | | {field: 'createdTime', title: '评价时间', minWidth: 180,align:'left'}, |
| | | ]] |
| | | }); |
| | | } |
| | | |
| | | // 获取查询参数 |
| | | function getQueryParams() { |
| | | return { |
| | | activityId: $searchForm.find("select[name='activityId']").val(), |
| | | }; |
| | | } |
| | | |
| | | function showStateSwitchOn(id) { |
| | | febs.get(ctx + 'admin/happyActivity/showStateSwitchOn/' + id, null, function () { |
| | | febs.alert.success('设置成功'); |
| | | $query.click(); |
| | | }); |
| | | } |
| | | |
| | | |
| | | form.on('switch(showStateSwitch)', function (data) { |
| | | if (data.elem.checked) { |
| | | showStateSwitchOn(data.value); |
| | | } else { |
| | | showStateSwitchOn(data.value); |
| | | } |
| | | }) |
| | | |
| | | }) |
| | | </script> |
| | |
| | | </select> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="layui-row layui-col-space10 layui-form-item"> |
| | | <div class="layui-col-lg6"> |
| | | <label class="layui-form-label febs-form-item-require">门票总数:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="joinCnt" lay-verify="required" |
| | | placeholder="" autocomplete="off" class="layui-input"> |
| | | <div class="layui-form-mid layui-word-aux">门票总数</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="layui-row layui-col-space10 layui-form-item"> |
| | | <div class="layui-col-lg6"> |
| | | <label class="layui-form-label febs-form-item-require">门票剩余:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="surplusCnt" lay-verify="required" |
| | | placeholder="" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-col-lg6"> |
| | |
| | | "payAmount": activity.payAmount, |
| | | "orderCnt": activity.orderCnt, |
| | | "hotState": activity.hotState, |
| | | "surplusCnt": activity.surplusCnt, |
| | | "voteCnt": activity.voteCnt, |
| | | "addState": activity.addState, |
| | | }); |
| | |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label layui-form-label-sm">状态</label> |
| | | <div class="layui-input-inline"> |
| | | <select name="status"> |
| | | <select name="state"> |
| | | <option value="">请选择</option> |
| | | <option value="1">待支付</option> |
| | | <option value="2">待使用</option> |
| | | <option value="3">已使用</option> |
| | | <option value="4">售后</option> |
| | | <option value="5">已评价</option> |
| | | <option value="7">已失效</option> |
| | | </select> |
| | | </div> |
| | | </div> |
| | |
| | | 2: {title: '待使用', color: 'orange'}, |
| | | 3: {title: '已使用', color: 'green'}, |
| | | 4: {title: '售后', color: 'red'}, |
| | | 5: {title: '已评价', color: 'black'}, |
| | | 6: {title: '删除', color: 'black'}, |
| | | 7: {title: '已失效', color: 'black'}, |
| | | }[d.state]; |
| | | }} |
| | | <span class="layui-badge febs-bg-{{state.color}}">{{ state.title }}</span> |
| | |
| | | |
| | | // 初始化表格操作栏各个按钮功能 |
| | | table.on('toolbar(orderActivityTable)', function (obj) { |
| | | console.log("触发事件:", obj.event); // 调试信息 |
| | | let event = obj.event; |
| | | let id = obj.config.id; |
| | | let checkStatus = table.checkStatus(id); |
| | | if(event === 'checkOrder'){ |
| | | |
| | | if (event === 'checkOrder') { |
| | | let data = checkStatus.data; |
| | | let ids = []; |
| | | for(let i = 0;i < data.length;i++){ |
| | | if(data[i].state != 2){ |
| | | febs.alert.warn('请选择待使用的订单'); |
| | | return; |
| | | }else{ |
| | | ids.push(data[i].id); |
| | | } |
| | | } |
| | | console.log(ids); |
| | | if(ids == null || ids == ""){ |
| | | |
| | | // 校验 data 是否为空或未定义 |
| | | if (!Array.isArray(data) || data.length === 0) { |
| | | febs.alert.warn('请选择需要核销的订单'); |
| | | return; |
| | | } |
| | | $.ajax({ |
| | | 'url':ctx + 'admin/happyActivity/checkOrder', |
| | | 'type':'post', |
| | | 'dataType':'json', |
| | | 'headers' : {'Content-Type' : 'application/json;charset=utf-8'}, //接口json格式 |
| | | 'traditional': true,//ajax传递数组必须添加属性 |
| | | 'data':ids, |
| | | 'success':function (data) { |
| | | if(data.code==200){ |
| | | febs.alert.success('操作成功'); |
| | | $query.click(); |
| | | }else{ |
| | | febs.alert.warn(data.message); |
| | | } |
| | | }, |
| | | 'error':function () { |
| | | febs.alert.warn('服务器繁忙'); |
| | | |
| | | let ids = []; |
| | | let hasInvalidOrder = false; |
| | | |
| | | // 遍历数据,筛选符合条件的订单 |
| | | for (let i = 0; i < data.length; i++) { |
| | | if (data[i].state !== 2) { |
| | | hasInvalidOrder = true; |
| | | break; // 提前中断循环,避免无意义的继续遍历 |
| | | } else { |
| | | ids.push(data[i].id); |
| | | } |
| | | }) |
| | | } |
| | | |
| | | if (hasInvalidOrder) { |
| | | febs.alert.warn('请选择待使用的订单'); |
| | | return; |
| | | } |
| | | |
| | | if (ids.length === 0) { // 正确判断数组是否为空 |
| | | febs.alert.warn('请选择需要核销的订单'); |
| | | return; |
| | | } |
| | | |
| | | // 封装 AJAX 请求为独立函数 |
| | | function sendCheckOrderRequest(ids, successCallback, errorCallback) { |
| | | $.ajax({ |
| | | url: ctx + 'admin/happyActivity/checkOrder', // 硬编码路径建议提取为配置项 |
| | | type: 'post', |
| | | dataType: 'json', |
| | | headers: { 'Content-Type': 'application/json;charset=utf-8' }, |
| | | traditional: true, |
| | | data: JSON.stringify(ids), // 确保传递的是 JSON 格式 |
| | | success: function (response) { |
| | | if (response.code === 200) { |
| | | successCallback(response); |
| | | } else { |
| | | errorCallback(response.message); |
| | | } |
| | | }, |
| | | error: function (xhr, status, error) { |
| | | errorCallback(`服务器繁忙: ${error}`); // 捕获具体错误信息 |
| | | } |
| | | }); |
| | | } |
| | | |
| | | // 调用封装的请求函数 |
| | | sendCheckOrderRequest(ids, |
| | | function onSuccess(response) { |
| | | febs.alert.success('操作成功'); |
| | | $query.click(); |
| | | }, |
| | | function onError(message) { |
| | | febs.alert.warn(message); |
| | | } |
| | | ); |
| | | } |
| | | }); |
| | | |
| | | |
| | | |
| | | function initorderActivityTable() { |
| | |
| | | toolbar:"#orderActivityToolbar", |
| | | defaultToolbar:[], |
| | | cols: [[ |
| | | {type: 'checkbox'}, |
| | | {type: 'numbers', title: '', width: 80}, |
| | | {title: '操作', toolbar: '#orderActivityOption', minWidth: 200, align: 'center'}, |
| | | {field: 'name', title: '名称', minWidth: 100,align:'center'}, |