main
王宇航 2023-11-30 12:37:52 +08:00
parent 4d7432786d
commit 76295e3954
40 changed files with 897 additions and 53 deletions

View File

@ -95,8 +95,10 @@ public class SysCouponController {
public R<String> verification(HttpServletRequest request ,@Parameter(name = "id", description = "领取记录表ID",
required = true) @RequestParam String id ,
@Parameter(name = "checkCode", description = "核销码",
required = true)@RequestParam String checkCode) {
return this.sysCouponService.verification(id,checkCode);
required = true)@RequestParam String checkCode,
@Parameter(name = "openId", description = "核销码",
required = true)String openId) {
return this.sysCouponService.verification(id,checkCode,openId);
}
}

View File

@ -0,0 +1,58 @@
package com.hb0730.boot.admin.modules.api.buiness.controller;
import cn.hutool.core.collection.CollectionUtil;
import com.hb0730.boot.admin.base.R;
import com.hb0730.boot.admin.modules.api.buiness.mapper.SysReadDataMapper;
import com.hb0730.boot.admin.modules.api.buiness.model.query.CouponQuery;
import com.hb0730.boot.admin.modules.api.buiness.model.vo.CouponDataVO;
import com.hb0730.boot.admin.modules.api.buiness.model.vo.CouponNumVo;
import com.hb0730.boot.admin.modules.api.buiness.service.SysReadDataService;
import com.hb0730.boot.admin.modules.sys.system.vo.TimeDto;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import org.springdoc.core.annotations.ParameterObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/buiness/statis")
@Tag(name = "系统:数据统计")
@RequiredArgsConstructor
public class SysDataStatisticsController {
@Autowired
private SysReadDataService sysReadDataService;
/**
*
*/
@PostMapping("/queryCouponData")
@Operation(summary = "数据统计(报名,核销数量)")
public R<List<CouponNumVo>> queryCouponData(@RequestBody TimeDto timeDto) {
List<CouponNumVo> couponNumVos = sysReadDataService.queryCouponData(timeDto);
if (CollectionUtil.isEmpty(couponNumVos)) {
return R.OK(201, "暂无数据", couponNumVos);
}
return R.OK(couponNumVos);
}
@PostMapping("/queryBar")
@Operation(summary = "数据统计(单个店铺数量统计)")
public R<CouponDataVO> queryBar(@RequestBody TimeDto timeDto) {
CouponDataVO couponDataVO = sysReadDataService.queryBar(timeDto);
if (couponDataVO == null || CollectionUtil.isEmpty(couponDataVO.getyData())) {
return R.OK(201, "暂无数据", couponDataVO);
}
return R.OK(couponDataVO);
}
}

View File

@ -18,4 +18,6 @@ public interface SysCouponMapper extends BaseMapper<SysCoupon> {
List<SysCoupon> queryPage(Page<CouponVO> page, @Param("query") CouponQuery query);
void updateNums(@Param("id")String id);
List<SysCoupon> queryPageByOpenId(Page<CouponVO> page, @Param("query") CouponQuery query);
}

View File

@ -0,0 +1,16 @@
package com.hb0730.boot.admin.modules.api.buiness.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hb0730.boot.admin.modules.api.buiness.model.SysMenuData;
import com.hb0730.boot.admin.modules.api.buiness.model.SysShopData;
import com.hb0730.boot.admin.modules.api.buiness.model.vo.CouponNumVo;
import com.hb0730.boot.admin.modules.sys.system.vo.TimeDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface SysMenuDataMapper extends BaseMapper<SysMenuData> {
CouponNumVo querySeasonData(@Param("timeDto") TimeDto timeDto);
CouponNumVo queryHourData(@Param("timeDto") TimeDto timeDto);
}

View File

@ -0,0 +1,19 @@
package com.hb0730.boot.admin.modules.api.buiness.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hb0730.boot.admin.modules.api.buiness.model.SysReadData;
import com.hb0730.boot.admin.modules.api.buiness.model.vo.CouponDataVO;
import com.hb0730.boot.admin.modules.api.buiness.model.vo.CouponNumVo;
import com.hb0730.boot.admin.modules.api.buiness.model.vo.DataTypeVo;
import com.hb0730.boot.admin.modules.sys.system.vo.TimeDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface SysReadDataMapper extends BaseMapper<SysReadData> {
CouponNumVo queryCouponData(@Param("timeDto")TimeDto timeDto);
CouponNumVo queryCouponCheckData(@Param("timeDto") TimeDto timeDto);
}

View File

@ -0,0 +1,14 @@
package com.hb0730.boot.admin.modules.api.buiness.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hb0730.boot.admin.modules.api.buiness.model.SysReadData;
import com.hb0730.boot.admin.modules.api.buiness.model.SysShopData;
import com.hb0730.boot.admin.modules.api.buiness.model.vo.CouponNumVo;
import com.hb0730.boot.admin.modules.sys.system.vo.TimeDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface SysShopDataMapper extends BaseMapper<SysShopData> {
CouponNumVo queryShopData(@Param("timeDto") TimeDto timeDto);
}

View File

@ -0,0 +1,17 @@
package com.hb0730.boot.admin.modules.api.buiness.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hb0730.boot.admin.modules.api.buiness.model.SysReadData;
import com.hb0730.boot.admin.modules.api.buiness.model.SysShopOnly;
import com.hb0730.boot.admin.modules.api.buiness.model.vo.CouponNumVo;
import com.hb0730.boot.admin.modules.sys.system.vo.TimeDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface SysShopOnlyMapper extends BaseMapper<SysShopOnly> {
List<CouponNumVo> queryBar(@Param("timeDto") TimeDto timeDto);
}

View File

@ -18,7 +18,6 @@
t.activity_dec,
t.gift_name,
t.gift_image,
t.open_id,
t.tag_img
</sql>
@ -35,4 +34,28 @@
UPDATE sys_coupon SET nums = nums - 1 WHERE id = #{id};
</update>
<select id="queryPageByOpenId" resultType="com.hb0730.boot.admin.modules.api.buiness.model.SysCoupon">
select
t.id,
t.created_by,
t.created,
t.modified_by,
t.modified,
t.coupon_name,
t.nums,
t.title,
t.receive_date,
t.receive_time,
t.activity_rules,
t.activity_dec,
t.gift_name,
t.gift_image,
t.tag_img,
c.state,
c.verif_state
from sys_coupon t
left join sys_coupon_log c on t.id = c.coupon_id
where c.open_id = #{query.openId}
</select>
</mapper>

View File

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hb0730.boot.admin.modules.api.buiness.mapper.SysMenuDataMapper">
<select id="querySeasonData" resultType="com.hb0730.boot.admin.modules.api.buiness.model.vo.CouponNumVo">
SELECT count(*) as value , t.name FROM
(SELECT a.name,
a.created,
a.type
FROM
sys_menu_data a
WHERE type = 0
<if test="timeDto.startTime!=null">AND a.created>= #{timeDto.startTime} </if>
<if test="timeDto.endTime!=null">AND a.created &lt;= #{timeDto.endTime} </if>
)t Group by t.name ORDER BY MIN(created) ASC
</select>
<select id="queryHourData" resultType="com.hb0730.boot.admin.modules.api.buiness.model.vo.CouponNumVo">
SELECT count(*) as value , t.name FROM
(SELECT a.name ,
a.created,
a.type
FROM
sys_menu_data a
WHERE type = 1
<if test="timeDto.startTime!=null">
AND a.created>= #{timeDto.startTime}
</if>
<if test="timeDto.endTime!=null">
AND a.created &lt;= #{timeDto.endTime}
</if>
)t Group by t.name ORDER BY MIN(created) ASC
</select>
</mapper>

View File

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hb0730.boot.admin.modules.api.buiness.mapper.SysReadDataMapper">
<select id="queryCouponData" resultType="com.hb0730.boot.admin.modules.api.buiness.model.vo.CouponNumVo">
SELECT t.type , count(id) as value , t.couponName as name FROM
(SELECT
a.id,
a.type,
b.created,
a.name as couponName
FROM
sys_read_data a
LEFT JOIN sys_coupon b ON a.coupon_id = b.id
WHERE type = 0
<if test="timeDto.startTime!=null">
AND a.created>= #{timeDto.startTime}
</if>
<if test="timeDto.endTime!=null">
AND a.created &lt;= #{timeDto.endTime}
</if>
)t Group by t.couponName ORDER BY MIN(created) ASC
</select>
<select id="queryCouponCheckData" resultType="com.hb0730.boot.admin.modules.api.buiness.model.vo.CouponNumVo">
SELECT t.type , count(id) as value , t.couponName as name FROM
(SELECT
a.id,
a.type,
b.created,
a.name as couponName
FROM
sys_read_data a
LEFT JOIN sys_coupon b ON a.coupon_id = b.id
WHERE
type = 1
<if test="timeDto.startTime!=null">
AND a.created>= #{timeDto.startTime}
</if>
<if test="timeDto.endTime!=null">
AND a.created &lt;= #{timeDto.endTime}
</if>
)t Group by t.couponName ORDER BY MIN(created) ASC
</select>
</mapper>

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hb0730.boot.admin.modules.api.buiness.mapper.SysShopDataMapper">
<select id="queryShopData" resultType="com.hb0730.boot.admin.modules.api.buiness.model.vo.CouponNumVo">
SELECT count(*) as value , t.name as name FROM
(SELECT
a.id,
a.name ,
a.created
FROM
sys_shop_data a
WHERE 1=1
<if test="timeDto.startTime!=null">
AND a.created>= #{timeDto.startTime}
</if>
<if test="timeDto.endTime!=null">
AND a.created &lt;= #{timeDto.endTime}
</if>
)t Group by t.name ORDER BY MIN(created) ASC
</select>
</mapper>

View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hb0730.boot.admin.modules.api.buiness.mapper.SysShopOnlyMapper">
<select id="queryBar" resultType="com.hb0730.boot.admin.modules.api.buiness.model.vo.CouponNumVo">
SELECT t.shop_name as name, t.num as value
FROM (
SELECT a.id, a.shop_name, a.num, a.created
FROM sys_shop_only a
where 1=1
<if test="timeDto.startTime!=null and timeDto.startTime!=''">
AND a.created>= #{timeDto.startTime}
</if>
<if test="timeDto.startTime!=null and timeDto.startTime!=''">
AND a.created &lt;= #{timeDto.endTime}
</if>
) t
GROUP BY t.shop_name, t.num
ORDER BY MIN(created)
</select>
</mapper>

View File

@ -1,5 +1,6 @@
package com.hb0730.boot.admin.modules.api.buiness.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.hb0730.boot.admin.data.domain.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
@ -45,7 +46,18 @@ public class SysCoupon extends BaseEntity {
private String giftImage;
@TableField(exist = false)
private String openId;
private String tagImg;
@TableField(exist = false)
private Boolean state = false;
@TableField(exist = false)
private Boolean verifState = false ;
@TableField(exist = false)
private String recordId;
}

View File

@ -1,5 +1,6 @@
package com.hb0730.boot.admin.modules.api.buiness.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.hb0730.boot.admin.data.domain.BaseEntity;
import lombok.Data;
@ -33,5 +34,9 @@ public class SysCouponLog extends BaseEntity {
private String userName;
private String giftName;
@TableField(value = "state")
private Boolean state = true;
@TableField(value = "verif_state")
private Boolean verifState = true;
}

View File

@ -0,0 +1,26 @@
package com.hb0730.boot.admin.modules.api.buiness.model;
import com.baomidou.mybatisplus.annotation.TableName;
import com.hb0730.boot.admin.data.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
/**
*
*
* @author <a href="mailto:huangbing0730@gmail">hb0730</a>
* @date 2023/2/4
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ToString
@TableName(value = "sys_menu_data")
public class SysMenuData extends BaseEntity {
private Integer type;
private String name;
}

View File

@ -0,0 +1,30 @@
package com.hb0730.boot.admin.modules.api.buiness.model;
import com.baomidou.mybatisplus.annotation.TableName;
import com.hb0730.boot.admin.data.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
/**
*
*
* @author <a href="mailto:huangbing0730@gmail">hb0730</a>
* @date 2023/2/4
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ToString
@TableName(value = "sys_read_data")
public class SysReadData extends BaseEntity {
/**
*
*/
private String couponId;
private Integer type;
private String name;
}

View File

@ -77,7 +77,7 @@ public class SysShop extends BaseEntity {
/**
*
*/
private Integer floor;
private String floor;
/**
* truefalse
*/

View File

@ -0,0 +1,27 @@
package com.hb0730.boot.admin.modules.api.buiness.model;
import com.baomidou.mybatisplus.annotation.TableName;
import com.hb0730.boot.admin.data.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
/**
*
*
* @author <a href="mailto:huangbing0730@gmail">hb0730</a>
* @date 2023/2/4
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ToString
@TableName(value = "sys_shop_data")
public class SysShopData extends BaseEntity {
/**
*
*/
private String shopId;
private String name;
}

View File

@ -0,0 +1,29 @@
package com.hb0730.boot.admin.modules.api.buiness.model;
import com.baomidou.mybatisplus.annotation.TableName;
import com.hb0730.boot.admin.data.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
/**
*
*
* @author <a href="mailto:huangbing0730@gmail">hb0730</a>
* @date 2023/2/4
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ToString
@TableName(value = "sys_shop_only")
public class SysShopOnly extends BaseEntity {
/**
*
*/
private String shopId;
private String shopName;
private Integer num;
}

View File

@ -19,4 +19,6 @@ public class CouponQuery extends BasePageQuery {
private String id;
private String openId;
}

View File

@ -0,0 +1,37 @@
package com.hb0730.boot.admin.modules.api.buiness.model.vo;
import lombok.Data;
import java.util.List;
/**
* <p>
* TODO CommentNumberVO
* </p>
*
* @author jianpòlan hhwzyan@163.com
* @since 2023-07-01
*/
public class CouponDataVO {
private List<Integer> yData;
private List<String> XData;
public List<Integer> getyData() {
return yData;
}
public void setyData(List<Integer> yData) {
this.yData = yData;
}
public List<String> getxData() {
return XData;
}
public void setxData(List<String> XData) {
this.XData = XData;
}
}

View File

@ -0,0 +1,11 @@
package com.hb0730.boot.admin.modules.api.buiness.model.vo;
import lombok.Data;
@Data
public class CouponNumVo {
private String name;
private Integer value;
}

View File

@ -1,5 +1,6 @@
package com.hb0730.boot.admin.modules.api.buiness.model.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.hb0730.boot.admin.data.domain.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
@ -93,4 +94,13 @@ public class CouponVO extends BaseEntity {
private String giftImage;
@Schema(description = "标签图片")
private String tagImg;
@TableField(exist = false)
private Boolean state = false;
@TableField(exist = false)
private Boolean verifState = false ;
@TableField(exist = false)
private String recordId;
}

View File

@ -0,0 +1,12 @@
package com.hb0730.boot.admin.modules.api.buiness.model.vo;
import lombok.Data;
@Data
public class DataTypeVo {
private String type;
private Integer value;
}

View File

@ -1,5 +1,6 @@
package com.hb0730.boot.admin.modules.api.buiness.model.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.hb0730.boot.admin.data.domain.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
@ -96,4 +97,7 @@ public class GetCouponLogVO extends BaseEntity {
@Schema(description = "用户名称")
private String userName;
@TableField(exist = false)
private String recordId;
}

View File

@ -110,7 +110,7 @@ public class ShopVO implements Serializable {
*
*/
@Schema(description = "店铺楼层")
private Integer floor;
private String floor;
/**
* truefalse

View File

@ -25,5 +25,5 @@ public interface SysCouponService extends IService<SysCoupon> {
R<GetCouponLogVO> getCoupon(String id , String openId);
R<String> verification(String id, String checkCode);
R<String> verification(String id, String checkCode,String openId);
}

View File

@ -0,0 +1,10 @@
package com.hb0730.boot.admin.modules.api.buiness.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hb0730.boot.admin.modules.api.buiness.model.SysMenuData;
import com.hb0730.boot.admin.modules.api.buiness.model.SysShopData;
public interface SysMenuDataService extends IService<SysMenuData> {
}

View File

@ -0,0 +1,23 @@
package com.hb0730.boot.admin.modules.api.buiness.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hb0730.boot.admin.base.R;
import com.hb0730.boot.admin.data.domain.BasePage;
import com.hb0730.boot.admin.modules.api.buiness.model.SysCouponLog;
import com.hb0730.boot.admin.modules.api.buiness.model.SysReadData;
import com.hb0730.boot.admin.modules.api.buiness.model.query.CouponQuery;
import com.hb0730.boot.admin.modules.api.buiness.model.vo.CouponDataVO;
import com.hb0730.boot.admin.modules.api.buiness.model.vo.CouponLogVO;
import com.hb0730.boot.admin.modules.api.buiness.model.vo.CouponNumVo;
import com.hb0730.boot.admin.modules.sys.system.vo.TimeDto;
import java.util.List;
import java.util.Map;
public interface SysReadDataService extends IService<SysReadData> {
List<CouponNumVo> queryCouponData(TimeDto timeDto);
CouponDataVO queryBar(TimeDto timeDto);
}

View File

@ -0,0 +1,14 @@
package com.hb0730.boot.admin.modules.api.buiness.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hb0730.boot.admin.modules.api.buiness.model.SysReadData;
import com.hb0730.boot.admin.modules.api.buiness.model.SysShopData;
import com.hb0730.boot.admin.modules.api.buiness.model.vo.CouponNumVo;
import com.hb0730.boot.admin.modules.sys.system.vo.TimeDto;
import java.util.List;
public interface SysShopDataService extends IService<SysShopData> {
}

View File

@ -0,0 +1,10 @@
package com.hb0730.boot.admin.modules.api.buiness.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hb0730.boot.admin.modules.api.buiness.model.SysShopData;
import com.hb0730.boot.admin.modules.api.buiness.model.SysShopOnly;
public interface SysShopOnlyService extends IService<SysShopOnly> {
}

View File

@ -7,14 +7,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hb0730.boot.admin.base.R;
import com.hb0730.boot.admin.data.domain.BasePage;
import com.hb0730.boot.admin.modules.api.buiness.mapper.SysBoxMapper;
import com.hb0730.boot.admin.modules.api.buiness.mapper.SysCouponLogMapper;
import com.hb0730.boot.admin.modules.api.buiness.mapper.SysCouponMapper;
import com.hb0730.boot.admin.modules.api.buiness.mapper.SysShopMapper;
import com.hb0730.boot.admin.modules.api.buiness.model.SysBox;
import com.hb0730.boot.admin.modules.api.buiness.model.SysCoupon;
import com.hb0730.boot.admin.modules.api.buiness.model.SysCouponLog;
import com.hb0730.boot.admin.modules.api.buiness.model.SysShop;
import com.hb0730.boot.admin.modules.api.buiness.mapper.*;
import com.hb0730.boot.admin.modules.api.buiness.model.*;
import com.hb0730.boot.admin.modules.api.buiness.model.query.BoxQuery;
import com.hb0730.boot.admin.modules.api.buiness.model.query.CouponQuery;
import com.hb0730.boot.admin.modules.api.buiness.model.vo.BoxVO;
@ -24,6 +18,7 @@ import com.hb0730.boot.admin.modules.api.buiness.model.vo.ShopVO;
import com.hb0730.boot.admin.modules.api.buiness.service.SysBoxService;
import com.hb0730.boot.admin.modules.api.buiness.service.SysCouponLogService;
import com.hb0730.boot.admin.modules.api.buiness.service.SysCouponService;
import com.hb0730.boot.admin.modules.api.buiness.service.SysReadDataService;
import com.hb0730.boot.admin.modules.sys.system.mapper.SysUserMapper;
import com.hb0730.boot.admin.modules.sys.system.model.entity.SysUser;
import com.hb0730.boot.admin.security.util.SecurityUtil;
@ -37,6 +32,7 @@ import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Formatter;
import java.util.List;
import java.util.Objects;
@ -52,18 +48,45 @@ public class SysCouponServiceImpl extends ServiceImpl<SysCouponMapper, SysCoupon
@Autowired
private SysCouponLogMapper sysCouponLogMapper;
@Autowired
private SysReadDataMapper sysReadDataMapper;
@Override
public BasePage<CouponVO> queryPage(CouponQuery query) {
Page<CouponVO> page = new Page<>();
if ( query.getSize() == 0 || query.getCurrent() == 0) {
List<SysCoupon> coupons = new ArrayList<>();
if (query.getSize() == 0 || query.getCurrent() == 0) {
page = new Page<>(0, Integer.MAX_VALUE);
}else {
} else {
page = new Page<>(query.getCurrent(), query.getSize());
}
List<SysCoupon> coupons = baseMapper.queryPage(page, query);
coupons = this.baseMapper.queryPage(page, query);
// 查询出来的礼券列表根据领取记录的礼券id给领取状态和核销状态赋值如果领取过为true未领取过为false
List<CouponVO> collect = coupons.stream().map(coupon -> {
if (query.getOpenId() != null) {
LambdaQueryWrapper<SysCouponLog> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SysCouponLog::getOpenId, query.getOpenId()).eq(SysCouponLog::getCouponId, coupon.getId());
SysCouponLog sysCouponLog = sysCouponLogMapper.selectOne(wrapper);
if (sysCouponLog!=null && sysCouponLog.getState() ) {
coupon.setState(sysCouponLog.getState());
}else {
coupon.setState(false);
}
if (sysCouponLog!=null && sysCouponLog.getVerifState() ) {
coupon.setVerifState(sysCouponLog.getVerifState());
}
else {
coupon.setVerifState(false);
}
}
CouponVO couponVO = new CouponVO();
BeanUtils.copyProperties(coupon, couponVO);
return couponVO;
@ -79,9 +102,8 @@ public class SysCouponServiceImpl extends ServiceImpl<SysCouponMapper, SysCoupon
SysCoupon box = this.baseMapper.selectOne(wrapper);
CouponVO couponVO = new CouponVO();
BeanUtil.copyProperties(box, couponVO);
BeanUtil.copyProperties(box, couponVO);
return R.OK(couponVO);
@ -91,7 +113,7 @@ public class SysCouponServiceImpl extends ServiceImpl<SysCouponMapper, SysCoupon
public R<CouponVO> saveShop(CouponVO couponVO) {
SysCoupon coupon = new SysCoupon();
BeanUtils.copyProperties(couponVO,coupon);
BeanUtils.copyProperties(couponVO, coupon);
coupon.setCreated(LocalDateTime.now());
coupon.setCreatedBy(SecurityUtil.getCurrentUsername());
coupon.setModified(LocalDateTime.now());
@ -99,38 +121,37 @@ public class SysCouponServiceImpl extends ServiceImpl<SysCouponMapper, SysCoupon
this.baseMapper.insert(coupon);
return R.OK(couponVO);
}
//
@Override
public R<CouponVO> updateById(String id, CouponVO couponVO) {
//
@Override
public R<CouponVO> updateById(String id, CouponVO couponVO) {
SysCoupon coupon = getById(id);
if (null == coupon) {
return R.NG("优惠券不存在");
SysCoupon coupon = getById(id);
if (null == coupon) {
return R.NG("优惠券不存在");
}
BeanUtil.copyProperties(couponVO, coupon);
baseMapper.updateById(coupon);
return R.OK(couponVO);
}
BeanUtil.copyProperties(couponVO, coupon);
baseMapper.updateById(coupon);
return R.OK(couponVO);
}
@Override
public R<GetCouponLogVO> getCoupon(String id,String openid) {
public R<GetCouponLogVO> getCoupon(String id, String openid) {
LambdaQueryWrapper<SysCouponLog> logs = new LambdaQueryWrapper<>();
SysCoupon coupon = this.baseMapper.selectById(id);
LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
SysUser user = sysUserMapper.selectOne(wrapper.eq(SysUser::getOpenId, openid));
long l = System.currentTimeMillis();
String s = Long.toString(l, 36);
//
// long l = System.currentTimeMillis();
// String s = Long.toString(l, 36);
SysCouponLog sysCouponLog = new SysCouponLog();
if(Objects.nonNull(user)){
if (Objects.nonNull(user)) {
sysCouponLog.setUserId(user.getId());
if (StringUtils.isNotEmpty(user.getUsername())) {
sysCouponLog.setUserName(user.getUsername());
@ -142,30 +163,55 @@ public class SysCouponServiceImpl extends ServiceImpl<SysCouponMapper, SysCoupon
sysCouponLog.setGiftName(coupon.getGiftName());
sysCouponLog.setCreated(LocalDateTime.now());
sysCouponLog.setCheckCode(s);
sysCouponLog.setCheckCode("1234");
sysCouponLog.setState(true);
sysCouponLog.setVerifState(false);
sysCouponLogMapper.insert(sysCouponLog);
baseMapper.updateNums(id);
SysReadData sysReadData = new SysReadData();
sysReadData.setCreated(LocalDateTime.now());
sysReadData.setCreatedBy(SecurityUtil.getCurrentUsername());
sysReadData.setType(0);
sysReadData.setCouponId(coupon.getId());
sysReadData.setModified(LocalDateTime.now());
sysReadData.setModifiedBy(SecurityUtil.getCurrentUsername());
sysReadData.setName("领取");
sysReadDataMapper.insert(sysReadData);
GetCouponLogVO getCouponLogVO = new GetCouponLogVO();
BeanUtils.copyProperties(sysCouponLog,getCouponLogVO);
getCouponLogVO.setRecordId(sysCouponLog.getId());
BeanUtils.copyProperties(sysCouponLog, getCouponLogVO);
return R.OK(getCouponLogVO);
}
@Override
public R<String> verification(String id, String checkCode) {
public R<String> verification(String id, String checkCode,String openId) {
LambdaQueryWrapper<SysCouponLog> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SysCouponLog::getCheckCode, checkCode);
wrapper.eq(SysCouponLog::getId, id);
wrapper.eq(SysCouponLog::getCouponId, id);
wrapper.eq(SysCouponLog::getOpenId, openId);
SysCouponLog sysCouponLog = sysCouponLogMapper.selectOne(wrapper);
if(Objects.nonNull(sysCouponLog)){
if (Objects.nonNull(sysCouponLog)) {
UpdateWrapper<SysCouponLog> updateWrapper = new UpdateWrapper();
updateWrapper.set("modified", LocalDateTime.now());
updateWrapper.eq("id", id);
sysCouponLogMapper.update(sysCouponLog,updateWrapper);
updateWrapper.set("verif_state", 1);
updateWrapper.eq("coupon_id", id).eq("open_id", openId);
baseMapper.updateNums(sysCouponLog.getCouponId());
sysCouponLogMapper.update(sysCouponLog, updateWrapper);
SysReadData sysReadData = new SysReadData();
sysReadData.setCreated(LocalDateTime.now());
sysReadData.setCreatedBy(SecurityUtil.getCurrentUsername());
sysReadData.setType(0);
sysReadData.setCouponId(sysCouponLog.getCouponId());
sysReadData.setModified(LocalDateTime.now());
sysReadData.setModifiedBy(SecurityUtil.getCurrentUsername());
sysReadData.setName("核销");
sysReadDataMapper.insert(sysReadData);
return R.OK("验证通过!!!");
}else {
return R.error(201,"验证失败!!!!");
} else {
return R.error(201, "验证失败!!!!");
}
}

View File

@ -0,0 +1,19 @@
package com.hb0730.boot.admin.modules.api.buiness.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hb0730.boot.admin.modules.api.buiness.mapper.SysMenuDataMapper;
import com.hb0730.boot.admin.modules.api.buiness.mapper.SysShopDataMapper;
import com.hb0730.boot.admin.modules.api.buiness.model.SysMenuData;
import com.hb0730.boot.admin.modules.api.buiness.model.SysShopData;
import com.hb0730.boot.admin.modules.api.buiness.service.SysMenuDataService;
import com.hb0730.boot.admin.modules.api.buiness.service.SysShopDataService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@Service
@Slf4j
public class SysMenuDataServiceImpl extends ServiceImpl<SysMenuDataMapper, SysMenuData> implements SysMenuDataService {
}

View File

@ -0,0 +1,83 @@
package com.hb0730.boot.admin.modules.api.buiness.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hb0730.boot.admin.base.R;
import com.hb0730.boot.admin.modules.api.buiness.mapper.SysMenuDataMapper;
import com.hb0730.boot.admin.modules.api.buiness.mapper.SysReadDataMapper;
import com.hb0730.boot.admin.modules.api.buiness.mapper.SysShopDataMapper;
import com.hb0730.boot.admin.modules.api.buiness.mapper.SysShopOnlyMapper;
import com.hb0730.boot.admin.modules.api.buiness.model.SysReadData;
import com.hb0730.boot.admin.modules.api.buiness.model.vo.CouponDataVO;
import com.hb0730.boot.admin.modules.api.buiness.model.vo.CouponNumVo;
import com.hb0730.boot.admin.modules.api.buiness.model.vo.CouponVO;
import com.hb0730.boot.admin.modules.api.buiness.model.vo.DataTypeVo;
import com.hb0730.boot.admin.modules.api.buiness.service.SysMenuDataService;
import com.hb0730.boot.admin.modules.api.buiness.service.SysReadDataService;
import com.hb0730.boot.admin.modules.sys.system.vo.TimeDto;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
@Slf4j
public class SysReadDataServiceImpl extends ServiceImpl<SysReadDataMapper, SysReadData> implements SysReadDataService {
@Autowired
private SysShopDataMapper sysShopDataMapper;
@Autowired
private SysMenuDataMapper sysMenuDataMapper;
@Autowired
private SysShopOnlyMapper sysShopOnlyMapper;
@Override
public List<CouponNumVo> queryCouponData(TimeDto timeDto) {
CouponNumVo couponData = baseMapper.queryCouponData(timeDto);
CouponNumVo checkData = baseMapper.queryCouponCheckData(timeDto);
CouponNumVo shopData = sysShopDataMapper.queryShopData(timeDto);
CouponNumVo seasonData = sysMenuDataMapper.querySeasonData(timeDto);
CouponNumVo hourData = sysMenuDataMapper.queryHourData(timeDto);
List<CouponNumVo> couponDataVOS = new ArrayList<>();
if (ObjectUtil.isNotNull(couponData)){
couponDataVOS.add(couponData);
}
if (ObjectUtil.isNotNull(checkData)){
couponDataVOS.add(checkData);
}
if (ObjectUtil.isNotNull(shopData)){
couponDataVOS.add(shopData);
}
if (ObjectUtil.isNotNull(seasonData)){
couponDataVOS.add(seasonData);
}
if (ObjectUtil.isNotNull(hourData)){
couponDataVOS.add(hourData);
}
return couponDataVOS;
}
@Override
public CouponDataVO queryBar(TimeDto timeDto) {
List<CouponNumVo> couponNumVos =new ArrayList<>();
CouponDataVO commentNumberVO = new CouponDataVO();
couponNumVos = sysShopOnlyMapper.queryBar(timeDto);
List<String> collectX = couponNumVos.stream().map(i -> i.getName()).collect(Collectors.toList());
List<Integer> collectY = couponNumVos.stream().map(i -> i.getValue()).collect(Collectors.toList());
commentNumberVO.setxData(collectX);
commentNumberVO.setyData(collectY);
return commentNumberVO;
}
}

View File

@ -0,0 +1,29 @@
package com.hb0730.boot.admin.modules.api.buiness.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hb0730.boot.admin.modules.api.buiness.mapper.SysMenuDataMapper;
import com.hb0730.boot.admin.modules.api.buiness.mapper.SysReadDataMapper;
import com.hb0730.boot.admin.modules.api.buiness.mapper.SysShopDataMapper;
import com.hb0730.boot.admin.modules.api.buiness.mapper.SysShopOnlyMapper;
import com.hb0730.boot.admin.modules.api.buiness.model.SysReadData;
import com.hb0730.boot.admin.modules.api.buiness.model.SysShopOnly;
import com.hb0730.boot.admin.modules.api.buiness.model.vo.CouponDataVO;
import com.hb0730.boot.admin.modules.api.buiness.model.vo.CouponNumVo;
import com.hb0730.boot.admin.modules.api.buiness.service.SysReadDataService;
import com.hb0730.boot.admin.modules.api.buiness.service.SysShopOnlyService;
import com.hb0730.boot.admin.modules.sys.system.vo.TimeDto;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
@Slf4j
public class SysReadOnlyServiceImpl extends ServiceImpl<SysShopOnlyMapper, SysShopOnly> implements SysShopOnlyService {
}

View File

@ -0,0 +1,27 @@
package com.hb0730.boot.admin.modules.api.buiness.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hb0730.boot.admin.modules.api.buiness.mapper.SysReadDataMapper;
import com.hb0730.boot.admin.modules.api.buiness.mapper.SysShopDataMapper;
import com.hb0730.boot.admin.modules.api.buiness.mapper.SysShopMapper;
import com.hb0730.boot.admin.modules.api.buiness.model.SysReadData;
import com.hb0730.boot.admin.modules.api.buiness.model.SysShopData;
import com.hb0730.boot.admin.modules.api.buiness.model.vo.CouponNumVo;
import com.hb0730.boot.admin.modules.api.buiness.service.SysReadDataService;
import com.hb0730.boot.admin.modules.api.buiness.service.SysShopDataService;
import com.hb0730.boot.admin.modules.api.buiness.service.SysShopService;
import com.hb0730.boot.admin.modules.sys.system.vo.TimeDto;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
@Slf4j
public class SysShopDataServiceImpl extends ServiceImpl<SysShopDataMapper, SysShopData> implements SysShopDataService {
}

View File

@ -2,16 +2,24 @@ package com.hb0730.boot.admin.modules.api.buiness.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hb0730.boot.admin.base.R;
import com.hb0730.boot.admin.data.domain.BasePage;
import com.hb0730.boot.admin.modules.api.buiness.mapper.SysMenuDataMapper;
import com.hb0730.boot.admin.modules.api.buiness.mapper.SysShopDataMapper;
import com.hb0730.boot.admin.modules.api.buiness.mapper.SysShopMapper;
import com.hb0730.boot.admin.modules.api.buiness.mapper.SysShopOnlyMapper;
import com.hb0730.boot.admin.modules.api.buiness.model.SysMenuData;
import com.hb0730.boot.admin.modules.api.buiness.model.SysShop;
import com.hb0730.boot.admin.modules.api.buiness.model.SysShopData;
import com.hb0730.boot.admin.modules.api.buiness.model.SysShopOnly;
import com.hb0730.boot.admin.modules.api.buiness.model.query.ShopQuery;
import com.hb0730.boot.admin.modules.api.buiness.model.vo.HourVO;
import com.hb0730.boot.admin.modules.api.buiness.model.vo.SeasonVO;
import com.hb0730.boot.admin.modules.api.buiness.model.vo.ShopVO;
import com.hb0730.boot.admin.modules.api.buiness.service.SysShopDataService;
import com.hb0730.boot.admin.modules.api.buiness.service.SysShopService;
import com.hb0730.boot.admin.security.util.SecurityUtil;
import lombok.extern.slf4j.Slf4j;
@ -30,12 +38,28 @@ public class SysShopServiceImpl extends ServiceImpl<SysShopMapper, SysShop> impl
@Autowired
private SysShopMapper sysShopMapper;
@Autowired
private SysShopDataMapper sysShopDataMapper;
@Autowired
private SysShopOnlyMapper sysShopOnlyMapper;
@Autowired
private SysMenuDataMapper sysMenuDataMapper;
@Override
public BasePage<ShopVO> queryPage(ShopQuery query) {
Page<ShopVO> page = new Page<>();
if ( query.getSize() == 0 || query.getCurrent() == 0) {
page = new Page<>(0, Integer.MAX_VALUE);
SysShopData sysShopData = new SysShopData();
sysShopData.setName("店铺访问量");
sysShopData.setCreated(LocalDateTime.now());
sysShopData.setModified(LocalDateTime.now());
sysShopData.setModifiedBy(SecurityUtil.getCurrentUsername());
sysShopData.setCreatedBy(SecurityUtil.getCurrentUsername());
sysShopDataMapper.insert(sysShopData);
}else {
page = new Page<>(query.getCurrent(), query.getSize());
}
@ -59,6 +83,23 @@ public class SysShopServiceImpl extends ServiceImpl<SysShopMapper, SysShop> impl
SysShop shop = this.baseMapper.selectById(id);
ShopVO shopVO = new ShopVO();
BeanUtil.copyProperties(shop, shopVO);
LambdaQueryWrapper<SysShopOnly> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SysShopOnly::getShopId, id);
SysShopOnly sysShopOnly = sysShopOnlyMapper.selectOne(wrapper);
if (sysShopOnly == null){
SysShopOnly shopOnly = new SysShopOnly();
shopOnly.setShopId(id);
shopOnly.setShopName(shop.getName());
shopOnly.setNum(1);
shopOnly.setCreatedBy(SecurityUtil.getCurrentUsername());
shopOnly.setModifiedBy(SecurityUtil.getCurrentUsername());
shopOnly.setCreated(LocalDateTime.now());
shopOnly.setModified(LocalDateTime.now());
sysShopOnlyMapper.insert(shopOnly);
}else {
sysShopOnly.setNum(sysShopOnly.getNum() + 1);
sysShopOnlyMapper.updateById(sysShopOnly);
}
return R.OK(shopVO);
}
@ -96,13 +137,31 @@ public class SysShopServiceImpl extends ServiceImpl<SysShopMapper, SysShop> impl
@Override
public List<SeasonVO> getSeason() {
List<SeasonVO> season = this.baseMapper.getSeason();
SysMenuData sysMenuData = new SysMenuData();
sysMenuData.setCreated(LocalDateTime.now());
sysMenuData.setModified(LocalDateTime.now());
sysMenuData.setModifiedBy(SecurityUtil.getCurrentUsername());
sysMenuData.setCreatedBy(SecurityUtil.getCurrentUsername());
sysMenuData.setType(0);
sysMenuData.setName("季节限定");
sysMenuDataMapper.insert(sysMenuData);
return season;
}
@Override
public List<HourVO> getHour() {
List<HourVO> hour = this.baseMapper.getHour();
SysMenuData sysMenuData = new SysMenuData();
sysMenuData.setCreated(LocalDateTime.now());
sysMenuData.setModified(LocalDateTime.now());
sysMenuData.setModifiedBy(SecurityUtil.getCurrentUsername());
sysMenuData.setCreatedBy(SecurityUtil.getCurrentUsername());
sysMenuData.setType(1);
sysMenuData.setName("酒水菜单");
sysMenuDataMapper.insert(sysMenuData);
return hour;
}

View File

@ -74,7 +74,7 @@ public class WxLoginController {
@Operation(summary = "微信登录")
@GetMapping("/wxlogin")
public R getWechatLoginInfo(@RequestParam String code) {
String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=wxbad2e8a91c62a734&secret=e1b7fc425ca9cca05dd83609a6dc9c00&code=" + code + "&grant_type=authorization_code";
String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx292995002b9476f3&secret=896202811f43b146123f8d3f9ad3c153&code=" + code + "&grant_type=authorization_code";
String H5 = HttpTool.get(url, String.class);
Gson gson = new Gson();
H5LoginResponse h5LoginResponse = gson.fromJson(H5, H5LoginResponse.class);
@ -96,7 +96,9 @@ public class WxLoginController {
sysUser.setOpenId(userResponse.getOpenId());
sysUser.setUnionId(userResponse.getOpenId());
sysUser.setPassword("123456");
System.out.println(userResponse.getNicName());
sysUserService.save(sysUser);
}
JSH5LoginResponse jsh5LoginResponse = new JSH5LoginResponse();
@ -110,8 +112,8 @@ public class WxLoginController {
public R access(String url){
Gson gson = new Gson();
Map<String,Object> map = new HashMap<>();
map.put("appid","wxbad2e8a91c62a734");
map.put("secret", "e1b7fc425ca9cca05dd83609a6dc9c00");
map.put("appid","wx292995002b9476f3");
map.put("secret", "896202811f43b146123f8d3f9ad3c153");
map.put("grant_type","client_credential");
String tokenUrl = "https://api.weixin.qq.com/cgi-bin/stable_token";
String access = REST_TEMPLATE.postForObject(tokenUrl, map, String.class);
@ -130,8 +132,6 @@ public class WxLoginController {
// 替换成你的公众号AppID和AppSecret
String appId = "wxbad2e8a91c62a734";
String appSecret = "e1b7fc425ca9cca05dd83609a6dc9c00";
String nonceStr = createNonceStr();
String timestamp = createTimestamp();
String jsapiTicket = jsResponse.getTicket();

View File

@ -0,0 +1,25 @@
package com.hb0730.boot.admin.modules.sys.system.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
/**
* <p>
* TODO TimeDto
* </p>
*
* @author jianpòlan hhwzyan@163.com
* @since 2023-07-01
*/
@Data
public class TimeDto {
@JsonFormat(pattern="yyyy-MM-dd")
private String startTime;
@JsonFormat(pattern="yyyy-MM-dd")
private String endTime;
}

View File

@ -91,6 +91,7 @@ public class WebSecurityConfiguration {
.requestMatchers("/buiness/user").permitAll()
.requestMatchers("/buiness/box/**").permitAll()
.requestMatchers("/buiness/oss/**").permitAll()
.requestMatchers("/buiness/statis/**").permitAll()
// 文件
.requestMatchers("/avatar/**").permitAll()
.requestMatchers("/file/**").permitAll()