From c20b304c67c4d2c6d85f98069be260e53c1c17b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=AE=87=E8=88=AA?= <653809315@qq.com> Date: Tue, 3 Sep 2024 13:28:20 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=AF=E5=88=86=E4=BB=BB=E5=8A=A1=E5=AE=8C?= =?UTF-8?q?=E6=88=90=EF=BC=8C=E8=AE=A2=E5=8D=95model=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/controller/ArticleController.java | 2 +- .../admin/controller/WxArticleController.java | 69 +++++++ .../wyh/admin/service/IWxArticleService.java | 60 ++++++ .../service/impl/SystemLoginServiceImpl.java | 9 +- .../service/impl/WxArticleServiceImpl.java | 159 ++++++++++++++++ .../java/com/wyh/admin/vo/user/UserVo.java | 4 + .../src/main/resources/application-dev.yml | 6 +- .../java/com/wyh/common/entity/Order.java | 52 +++++ .../com/wyh/common/entity/ShareRecord.java | 40 ++++ .../java/com/wyh/common/entity/SignLog.java | 46 +++++ .../java/com/wyh/common/entity/WxArticle.java | 42 +++++ .../com/wyh/common/mapper/OrderMapper.java | 13 ++ .../wyh/common/mapper/ShareRecordMapper.java | 13 ++ .../com/wyh/common/mapper/SignLogMapper.java | 13 ++ .../wyh/common/mapper/WxArticleMapper.java | 13 ++ .../java/com/wyh/common/util/TimeUtils.java | 20 ++ .../common/validator/OrderCreateValidate.java | 41 ++++ .../common/validator/OrderSearchValidate.java | 33 ++++ .../common/validator/OrderUpdateValidate.java | 50 +++++ .../validator/WxArticleCreateValidate.java | 28 +++ .../validator/WxArticleSearchValidate.java | 23 +++ .../validator/WxArticleUpdateValidate.java | 37 ++++ .../java/com/wyh/common/vo/OrderDetailVo.java | 38 ++++ .../java/com/wyh/common/vo/OrderListedVo.java | 44 +++++ .../java/com/wyh/common/vo/SignDateVo.java | 19 ++ .../java/com/wyh/common/vo/SignLogVo.java | 25 +++ .../com/wyh/common/vo/WxArticleDetailVo.java | 28 +++ .../com/wyh/common/vo/WxArticleListedVo.java | 34 ++++ .../wyh/front/controller/LoginController.java | 10 + .../wyh/front/controller/OrderController.java | 25 +++ .../wyh/front/controller/SignController.java | 55 ++++++ .../com/wyh/front/service/ILoginService.java | 2 + .../com/wyh/front/service/SignService.java | 17 ++ .../front/service/impl/LoginServiceImpl.java | 6 + .../front/service/impl/SignServiceImpl.java | 177 ++++++++++++++++++ .../src/main/resources/application-dev.yml | 18 +- admin/src/api/consumer.ts | 5 + admin/src/api/wxarticle.ts | 26 +++ admin/src/views/article/edit.vue | 128 +++++++++++++ admin/src/views/article/index.vue | 119 ++++++++++++ .../consumer/components/account-adjust.vue | 14 +- admin/src/views/consumer/lists/detail.vue | 11 +- 42 files changed, 1547 insertions(+), 27 deletions(-) create mode 100644 ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/controller/WxArticleController.java create mode 100644 ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/service/IWxArticleService.java create mode 100644 ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/service/impl/WxArticleServiceImpl.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/entity/Order.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/entity/ShareRecord.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/entity/SignLog.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/entity/WxArticle.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/mapper/OrderMapper.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/mapper/ShareRecordMapper.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/mapper/SignLogMapper.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/mapper/WxArticleMapper.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/OrderCreateValidate.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/OrderSearchValidate.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/OrderUpdateValidate.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/WxArticleCreateValidate.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/WxArticleSearchValidate.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/WxArticleUpdateValidate.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/OrderDetailVo.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/OrderListedVo.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/SignDateVo.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/SignLogVo.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/WxArticleDetailVo.java create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/WxArticleListedVo.java create mode 100644 ZJ-java/ZJ-front/src/main/java/com/wyh/front/controller/OrderController.java create mode 100644 ZJ-java/ZJ-front/src/main/java/com/wyh/front/controller/SignController.java create mode 100644 ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/SignService.java create mode 100644 ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/impl/SignServiceImpl.java create mode 100644 admin/src/api/wxarticle.ts create mode 100644 admin/src/views/article/edit.vue create mode 100644 admin/src/views/article/index.vue diff --git a/ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/controller/ArticleController.java b/ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/controller/ArticleController.java index f1f57ed..73f3d84 100644 --- a/ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/controller/ArticleController.java +++ b/ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/controller/ArticleController.java @@ -21,7 +21,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @RestController -@RequestMapping("api/article") +@RequestMapping("api/article1234567") @Api(tags = "文章数据管理") public class ArticleController { diff --git a/ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/controller/WxArticleController.java b/ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/controller/WxArticleController.java new file mode 100644 index 0000000..0778580 --- /dev/null +++ b/ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/controller/WxArticleController.java @@ -0,0 +1,69 @@ +package com.wyh.admin.controller; + +import com.wyh.admin.aop.Log; +import com.wyh.admin.service.IWxArticleService; +import com.wyh.admin.validate.commons.IdValidate; +import com.wyh.admin.validate.commons.PageValidate; +import com.wyh.common.core.AjaxResult; +import com.wyh.common.core.PageResult; +import com.wyh.common.validator.WxArticleCreateValidate; +import com.wyh.common.validator.WxArticleSearchValidate; +import com.wyh.common.validator.WxArticleUpdateValidate; +import com.wyh.common.validator.annotation.IDMust; +import com.wyh.common.vo.WxArticleDetailVo; +import com.wyh.common.vo.WxArticleListedVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +@RestController +@RequestMapping("api/article") +@Api(tags = "分享任务文章管理") +public class WxArticleController { + + @Resource + IWxArticleService iWxArticleService; + + @GetMapping("/list") + @ApiOperation(value="分享任务文章列表") + public AjaxResult> list(@Validated PageValidate pageValidate, + @Validated WxArticleSearchValidate searchValidate) { + PageResult list = iWxArticleService.list(pageValidate, searchValidate); + return AjaxResult.success(list); + } + + @GetMapping("/detail") + @ApiOperation(value="分享任务文章详情") + public AjaxResult detail(@Validated @IDMust() @RequestParam("id") Integer id) { + WxArticleDetailVo detail = iWxArticleService.detail(id); + return AjaxResult.success(detail); + } + + @Log(title = "分享任务文章新增") + @PostMapping("/add") + @ApiOperation(value="分享任务文章新增") + public AjaxResult add(@Validated @RequestBody WxArticleCreateValidate createValidate) { + iWxArticleService.add(createValidate); + return AjaxResult.success(); + } + + @Log(title = "分享任务文章编辑") + @PostMapping("/edit") + @ApiOperation(value="分享任务文章编辑") + public AjaxResult edit(@Validated @RequestBody WxArticleUpdateValidate updateValidate) { + iWxArticleService.edit(updateValidate); + return AjaxResult.success(); + } + + @Log(title = "分享任务文章删除") + @PostMapping("/del") + @ApiOperation(value="分享任务文章删除") + public AjaxResult del(@Validated @RequestBody IdValidate idValidate) { + iWxArticleService.del(idValidate.getId()); + return AjaxResult.success(); + } + +} diff --git a/ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/service/IWxArticleService.java b/ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/service/IWxArticleService.java new file mode 100644 index 0000000..8d965e1 --- /dev/null +++ b/ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/service/IWxArticleService.java @@ -0,0 +1,60 @@ +package com.wyh.admin.service; + +import com.wyh.admin.validate.commons.PageValidate; +import com.wyh.common.core.PageResult; +import com.wyh.common.validator.WxArticleCreateValidate; +import com.wyh.common.validator.WxArticleSearchValidate; +import com.wyh.common.validator.WxArticleUpdateValidate; +import com.wyh.common.vo.WxArticleDetailVo; +import com.wyh.common.vo.WxArticleListedVo; + +/** + * 分享任务文章服务接口类 + * @author wyh + */ +public interface IWxArticleService { + + /** + * 分享任务文章列表 + * + * @author wyh + * @param pageValidate 分页参数 + * @param searchValidate 搜索参数 + * @return PageResult + */ + PageResult list(PageValidate pageValidate, WxArticleSearchValidate searchValidate); + + /** + * 分享任务文章详情 + * + * @author wyh + * @param id 主键ID + * @return WxArticleDetailVo + */ + WxArticleDetailVo detail(Integer id); + + /** + * 分享任务文章新增 + * + * @author wyh + * @param createValidate 参数 + */ + void add(WxArticleCreateValidate createValidate); + + /** + * 分享任务文章编辑 + * + * @author wyh + * @param updateValidate 参数 + */ + void edit(WxArticleUpdateValidate updateValidate); + + /** + * 分享任务文章删除 + * + * @author wyh + * @param id 主键ID + */ + void del(Integer id); + +} diff --git a/ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/service/impl/SystemLoginServiceImpl.java b/ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/service/impl/SystemLoginServiceImpl.java index 506a928..e689534 100644 --- a/ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/service/impl/SystemLoginServiceImpl.java +++ b/ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/service/impl/SystemLoginServiceImpl.java @@ -36,9 +36,11 @@ import java.util.*; @Service public class SystemLoginServiceImpl implements ISystemLoginService { + @Resource Producer captchaProducer; + @Resource SystemLogLoginMapper systemLogLoginMapper; @@ -163,8 +165,11 @@ public class SystemLoginServiceImpl implements ISystemLoginService { * @param token 令牌 */ @Override - public void logout(String token) { - //RedisUtil.del(AdminConfig.backstageTokenKey + token); + public void logout(String token) { + + Integer adminId = StpUtil.getLoginIdAsInt(); + StpUtil.logout(adminId); +// RedisUtils.del("Authorization"); } /** diff --git a/ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/service/impl/WxArticleServiceImpl.java b/ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/service/impl/WxArticleServiceImpl.java new file mode 100644 index 0000000..d297b1e --- /dev/null +++ b/ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/service/impl/WxArticleServiceImpl.java @@ -0,0 +1,159 @@ +package com.wyh.admin.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.wyh.admin.service.IWxArticleService; +import com.wyh.admin.validate.commons.PageValidate; +import com.wyh.common.core.PageResult; +import com.wyh.common.entity.WxArticle; +import com.wyh.common.mapper.WxArticleMapper; +import com.wyh.common.util.TimeUtils; +import com.wyh.common.util.UrlUtils; +import com.wyh.common.validator.WxArticleCreateValidate; +import com.wyh.common.validator.WxArticleSearchValidate; +import com.wyh.common.validator.WxArticleUpdateValidate; +import com.wyh.common.vo.WxArticleDetailVo; +import com.wyh.common.vo.WxArticleListedVo; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.Assert; + +import javax.annotation.Resource; +import java.util.LinkedList; +import java.util.List; + +/** + * 分享任务文章实现类 + * @author wyh + */ +@Service +public class WxArticleServiceImpl implements IWxArticleService { + + @Resource + WxArticleMapper wxArticleMapper; + + /** + * 分享任务文章列表 + * + * @author wyh + * @param pageValidate 分页参数 + * @param searchValidate 搜索参数 + * @return PageResult + */ + @Override + public PageResult list(PageValidate pageValidate, WxArticleSearchValidate searchValidate) { + Integer page = pageValidate.getPageNo(); + Integer limit = pageValidate.getPageSize(); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("is_delete", 0); + queryWrapper.orderByDesc("id"); + + wxArticleMapper.setSearch(queryWrapper, searchValidate, new String[]{ + "=:linkUrl@link_url:str", + "like:title:str", + "=:image:str", + }); + + IPage iPage = wxArticleMapper.selectPage(new Page<>(page, limit), queryWrapper); + + List list = new LinkedList<>(); + for(WxArticle item : iPage.getRecords()) { + WxArticleListedVo vo = new WxArticleListedVo(); + BeanUtils.copyProperties(item, vo); + vo.setImage(UrlUtils.toAbsoluteUrl(item.getImage())); + vo.setCreateTime(TimeUtils.timestampToDate(item.getCreateTime())); + vo.setUpdateTime(TimeUtils.timestampToDate(item.getUpdateTime())); + list.add(vo); + } + + return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list); + } + + /** + * 分享任务文章详情 + * + * @author wyh + * @param id 主键参数 + * @return WxArticle + */ + @Override + public WxArticleDetailVo detail(Integer id) { + WxArticle model = wxArticleMapper.selectOne( + new QueryWrapper() + .eq("id", id) + .eq("is_delete", 0) + .last("limit 1")); + + Assert.notNull(model, "数据不存在"); + + WxArticleDetailVo vo = new WxArticleDetailVo(); + BeanUtils.copyProperties(model, vo); + vo.setImage(UrlUtils.toAbsoluteUrl(model.getImage())); + return vo; + } + + /** + * 分享任务文章新增 + * + * @author wyh + * @param createValidate 参数 + */ + @Override + public void add(WxArticleCreateValidate createValidate) { + WxArticle model = new WxArticle(); + model.setCreateTime(System.currentTimeMillis() / 1000); + model.setUpdateTime(System.currentTimeMillis() / 1000); + model.setLinkUrl(createValidate.getLinkUrl()); + model.setTitle(createValidate.getTitle()); + model.setImage(UrlUtils.toRelativeUrl(createValidate.getImage())); + wxArticleMapper.insert(model); + } + + /** + * 分享任务文章编辑 + * + * @author wyh + * @param updateValidate 参数 + */ + @Override + public void edit(WxArticleUpdateValidate updateValidate) { + WxArticle model = wxArticleMapper.selectOne( + new QueryWrapper() + .eq("id", updateValidate.getId()) + .eq("is_delete", 0) + .last("limit 1")); + + Assert.notNull(model, "数据不存在!"); + + model.setId(updateValidate.getId()); + model.setUpdateTime(System.currentTimeMillis() / 1000); + model.setLinkUrl(updateValidate.getLinkUrl()); + model.setTitle(updateValidate.getTitle()); + model.setImage(UrlUtils.toRelativeUrl(updateValidate.getImage())); + wxArticleMapper.updateById(model); + } + + /** + * 分享任务文章删除 + * + * @author wyh + * @param id 主键ID + */ + @Override + public void del(Integer id) { + WxArticle model = wxArticleMapper.selectOne( + new QueryWrapper() + .eq("id", id) + .eq("is_delete", 0) + .last("limit 1")); + + Assert.notNull(model, "数据不存在!"); + + model.setIsDelete(1); + model.setDeleteTime(System.currentTimeMillis() / 1000); + wxArticleMapper.updateById(model); + } + +} diff --git a/ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/vo/user/UserVo.java b/ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/vo/user/UserVo.java index 25585fb..146d11d 100644 --- a/ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/vo/user/UserVo.java +++ b/ZJ-java/ZJ-admin/src/main/java/com/wyh/admin/vo/user/UserVo.java @@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; +import java.math.BigDecimal; @Data @ApiModel("用户Vo") @@ -48,6 +49,9 @@ public class UserVo implements Serializable { @ApiModelProperty(value = "创建时间") private String createTime; + @ApiModelProperty("用户钱包") + private BigDecimal money; + public void setSex(Integer sex) { switch (sex) { case 0: diff --git a/ZJ-java/ZJ-admin/src/main/resources/application-dev.yml b/ZJ-java/ZJ-admin/src/main/resources/application-dev.yml index 5f486ca..c623a88 100644 --- a/ZJ-java/ZJ-admin/src/main/resources/application-dev.yml +++ b/ZJ-java/ZJ-admin/src/main/resources/application-dev.yml @@ -24,6 +24,6 @@ spring: database: 11 # Mybatis-plus配置 【是否开启SQL日志输出】 -mybatis-plus: - configuration: - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl \ No newline at end of file +#mybatis-plus: +# configuration: +# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl \ No newline at end of file diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/entity/Order.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/entity/Order.java new file mode 100644 index 0000000..fc524fa --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/entity/Order.java @@ -0,0 +1,52 @@ +package com.wyh.common.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +@ApiModel("订单信息实体") +public class Order implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value="id", type= IdType.AUTO) + @ApiModelProperty(value = "主键") + private Integer id; + + @ApiModelProperty(value = "是否删除: 0=否, 1=是") + private Integer isDelete; + + @ApiModelProperty(value = "创建时间") + private Long createTime; + + @ApiModelProperty(value = "更新时间") + private Long updateTime; + + @ApiModelProperty(value = "删除时间") + private Long deleteTime; + + @ApiModelProperty(value = "用户id") + private Integer userId; + + @ApiModelProperty(value = "地址信息id") + private Integer adId; + + @ApiModelProperty(value = "订单状态:1:待审核,2:待收货,3:租用中,4:已返还") + private Integer status; + + @ApiModelProperty(value = "订单总金额") + private BigDecimal totalPrice; + + @ApiModelProperty(value = "订单编号") + private String sn; + + @ApiModelProperty(value = "外部订单号") + private String outSn; + +} \ No newline at end of file diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/entity/ShareRecord.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/entity/ShareRecord.java new file mode 100644 index 0000000..9177a89 --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/entity/ShareRecord.java @@ -0,0 +1,40 @@ +package com.wyh.common.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +@ApiModel("分享任务记录实体") +public class ShareRecord implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value="id", type= IdType.AUTO) + @ApiModelProperty(value = "主键") + private Integer id; + + @ApiModelProperty(value = "是否删除: 0=否, 1=是") + private Integer isDelete; + + @ApiModelProperty(value = "创建时间") + private Long createTime; + + @ApiModelProperty(value = "更新时间") + private Long updateTime; + + @ApiModelProperty(value = "删除时间") + private Long deleteTime; + + @ApiModelProperty(value = "任务执行人") + private Integer userId; + + @ApiModelProperty(value = "得分") + private BigDecimal scope; + +} \ No newline at end of file diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/entity/SignLog.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/entity/SignLog.java new file mode 100644 index 0000000..cd8b9fd --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/entity/SignLog.java @@ -0,0 +1,46 @@ +package com.wyh.common.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +@ApiModel("签到任务记录实体") +public class SignLog implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value="id", type= IdType.AUTO) + @ApiModelProperty(value = "主键") + private Integer id; + + @ApiModelProperty(value = "是否删除: 0=否, 1=是") + private Integer isDelete; + + @ApiModelProperty(value = "创建时间") + private Long createTime; + + @ApiModelProperty(value = "更新时间") + private Long updateTime; + + @ApiModelProperty(value = "删除时间") + private Long deleteTime; + + @ApiModelProperty(value = "签到用户") + private Integer userId; + + @ApiModelProperty(value = "签到日期") + private String signDate; + + @ApiModelProperty(value = "连续签到天数") + private Integer continueNums; + + @ApiModelProperty(value = "签到获取金额") + private BigDecimal signMoney; + +} \ No newline at end of file diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/entity/WxArticle.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/entity/WxArticle.java new file mode 100644 index 0000000..8ccbda4 --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/entity/WxArticle.java @@ -0,0 +1,42 @@ +package com.wyh.common.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +@ApiModel("分享任务文章实体") +public class WxArticle implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value="id", type= IdType.AUTO) + @ApiModelProperty(value = "主键") + private Integer id; + + @ApiModelProperty(value = "是否删除: 0=否, 1=是") + private Integer isDelete; + + @ApiModelProperty(value = "创建时间") + private Long createTime; + + @ApiModelProperty(value = "更新时间") + private Long updateTime; + + @ApiModelProperty(value = "删除时间") + private Long deleteTime; + + @ApiModelProperty(value = "链接地址") + private String linkUrl; + + @ApiModelProperty(value = "文章标题") + private String title; + + @ApiModelProperty(value = "文章分享图") + private String image; + +} \ No newline at end of file diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/mapper/OrderMapper.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/mapper/OrderMapper.java new file mode 100644 index 0000000..32f179e --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/mapper/OrderMapper.java @@ -0,0 +1,13 @@ +package com.wyh.common.mapper; + +import com.wyh.common.core.basics.IBaseMapper; +import com.wyh.common.entity.Order; +import org.apache.ibatis.annotations.Mapper; + +/** + * 订单信息Mapper + * @author wyh + */ +@Mapper +public interface OrderMapper extends IBaseMapper { +} diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/mapper/ShareRecordMapper.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/mapper/ShareRecordMapper.java new file mode 100644 index 0000000..7c77b14 --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/mapper/ShareRecordMapper.java @@ -0,0 +1,13 @@ +package com.wyh.common.mapper; + +import com.wyh.common.core.basics.IBaseMapper; +import com.wyh.common.entity.ShareRecord; +import org.apache.ibatis.annotations.Mapper; + +/** + * 分享任务记录Mapper + * @author wyh + */ +@Mapper +public interface ShareRecordMapper extends IBaseMapper { +} diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/mapper/SignLogMapper.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/mapper/SignLogMapper.java new file mode 100644 index 0000000..f54fce2 --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/mapper/SignLogMapper.java @@ -0,0 +1,13 @@ +package com.wyh.common.mapper; + +import com.wyh.common.core.basics.IBaseMapper; +import com.wyh.common.entity.SignLog; +import org.apache.ibatis.annotations.Mapper; + +/** + * 签到任务记录Mapper + * @author wyh + */ +@Mapper +public interface SignLogMapper extends IBaseMapper { +} diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/mapper/WxArticleMapper.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/mapper/WxArticleMapper.java new file mode 100644 index 0000000..d87802a --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/mapper/WxArticleMapper.java @@ -0,0 +1,13 @@ +package com.wyh.common.mapper; + +import com.wyh.common.core.basics.IBaseMapper; +import com.wyh.common.entity.WxArticle; +import org.apache.ibatis.annotations.Mapper; + +/** + * 分享任务文章Mapper + * @author wyh + */ +@Mapper +public interface WxArticleMapper extends IBaseMapper { +} diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/util/TimeUtils.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/util/TimeUtils.java index cadc4c7..0a8162a 100644 --- a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/util/TimeUtils.java +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/util/TimeUtils.java @@ -5,6 +5,7 @@ import java.lang.management.ManagementFactory; import java.text.DateFormat; import java.text.ParsePosition; import java.text.SimpleDateFormat; +import java.time.LocalDate; import java.util.*; import java.util.regex.Pattern; @@ -535,4 +536,23 @@ public class TimeUtils { // long sec = diff % nd % nh % nm / ns; return day + "天" + hour + "小时" + min + "分钟"; } + + + + + public static List generateDateList() { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + + LocalDate startDate = LocalDate.now().minusDays(2); + LocalDate endDate = LocalDate.now().plusDays(4); + + List dateRange = new ArrayList<>(); + LocalDate tempDate = startDate; + while (!tempDate.isAfter(endDate)) { + dateRange.add(simpleDateFormat.format(java.sql.Date.valueOf(tempDate))); + tempDate = tempDate.plusDays(1); + } + + return dateRange; + } } diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/OrderCreateValidate.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/OrderCreateValidate.java new file mode 100644 index 0000000..5ec1621 --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/OrderCreateValidate.java @@ -0,0 +1,41 @@ +package com.wyh.common.validator; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +@ApiModel("订单信息创建参数") +public class OrderCreateValidate implements Serializable { + + private static final long serialVersionUID = 1L; + + @NotNull(message = "userId参数缺失") + @ApiModelProperty(value = "用户id") + private Integer userId; + + @NotNull(message = "adId参数缺失") + @ApiModelProperty(value = "地址信息id") + private Integer adId; + + @NotNull(message = "status参数缺失") + @ApiModelProperty(value = "订单状态:1:待审核,2:待收货,3:租用中,4:已返还") + private Integer status; + + @NotNull(message = "totalPrice参数缺失") + @ApiModelProperty(value = "订单总金额") + private BigDecimal totalPrice; + + @NotNull(message = "sn参数缺失") + @ApiModelProperty(value = "订单编号") + private String sn; + + @NotNull(message = "outSn参数缺失") + @ApiModelProperty(value = "外部订单号") + private String outSn; + +} diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/OrderSearchValidate.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/OrderSearchValidate.java new file mode 100644 index 0000000..a57ba38 --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/OrderSearchValidate.java @@ -0,0 +1,33 @@ +package com.wyh.common.validator; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +@ApiModel("订单信息搜素参数") +public class OrderSearchValidate implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "用户id") + private Integer userId; + + @ApiModelProperty(value = "地址信息id") + private Integer adId; + + @ApiModelProperty(value = "订单状态:1:待审核,2:待收货,3:租用中,4:已返还") + private Integer status; + + @ApiModelProperty(value = "订单总金额") + private BigDecimal totalPrice; + + @ApiModelProperty(value = "订单编号") + private String sn; + + @ApiModelProperty(value = "外部订单号") + private String outSn; + +} diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/OrderUpdateValidate.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/OrderUpdateValidate.java new file mode 100644 index 0000000..0c43f45 --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/OrderUpdateValidate.java @@ -0,0 +1,50 @@ +package com.wyh.common.validator; + +import com.wyh.common.validator.annotation.IDMust; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 订单信息参数 + * @author wyh + */ +@Data +@ApiModel("订单信息更新参数") +public class OrderUpdateValidate implements Serializable { + + private static final long serialVersionUID = 1L; + + @IDMust(message = "id参数必传且需大于0") + @ApiModelProperty(value = "主键") + private Integer id; + + @NotNull(message = "userId参数缺失") + @ApiModelProperty(value = "用户id") + private Integer userId; + + @NotNull(message = "adId参数缺失") + @ApiModelProperty(value = "地址信息id") + private Integer adId; + + @NotNull(message = "status参数缺失") + @ApiModelProperty(value = "订单状态:1:待审核,2:待收货,3:租用中,4:已返还") + private Integer status; + + @NotNull(message = "totalPrice参数缺失") + @ApiModelProperty(value = "订单总金额") + private BigDecimal totalPrice; + + @NotNull(message = "sn参数缺失") + @ApiModelProperty(value = "订单编号") + private String sn; + + @NotNull(message = "outSn参数缺失") + @ApiModelProperty(value = "外部订单号") + private String outSn; + +} diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/WxArticleCreateValidate.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/WxArticleCreateValidate.java new file mode 100644 index 0000000..2563674 --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/WxArticleCreateValidate.java @@ -0,0 +1,28 @@ +package com.wyh.common.validator; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +@Data +@ApiModel("分享任务文章创建参数") +public class WxArticleCreateValidate implements Serializable { + + private static final long serialVersionUID = 1L; + + @NotNull(message = "linkUrl参数缺失") + @ApiModelProperty(value = "链接地址") + private String linkUrl; + + @NotNull(message = "title参数缺失") + @ApiModelProperty(value = "文章标题") + private String title; + + @NotNull(message = "image参数缺失") + @ApiModelProperty(value = "文章分享图") + private String image; + +} diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/WxArticleSearchValidate.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/WxArticleSearchValidate.java new file mode 100644 index 0000000..22494e7 --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/WxArticleSearchValidate.java @@ -0,0 +1,23 @@ +package com.wyh.common.validator; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import java.io.Serializable; + +@Data +@ApiModel("分享任务文章搜素参数") +public class WxArticleSearchValidate implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "链接地址") + private String linkUrl; + + @ApiModelProperty(value = "文章标题") + private String title; + + @ApiModelProperty(value = "文章分享图") + private String image; + +} diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/WxArticleUpdateValidate.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/WxArticleUpdateValidate.java new file mode 100644 index 0000000..d55d440 --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/WxArticleUpdateValidate.java @@ -0,0 +1,37 @@ +package com.wyh.common.validator; + +import com.wyh.common.validator.annotation.IDMust; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 分享任务文章参数 + * @author wyh + */ +@Data +@ApiModel("分享任务文章更新参数") +public class WxArticleUpdateValidate implements Serializable { + + private static final long serialVersionUID = 1L; + + @IDMust(message = "id参数必传且需大于0") + @ApiModelProperty(value = "主键") + private Integer id; + + @NotNull(message = "linkUrl参数缺失") + @ApiModelProperty(value = "链接地址") + private String linkUrl; + + @NotNull(message = "title参数缺失") + @ApiModelProperty(value = "文章标题") + private String title; + + @NotNull(message = "image参数缺失") + @ApiModelProperty(value = "文章分享图") + private String image; + +} diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/OrderDetailVo.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/OrderDetailVo.java new file mode 100644 index 0000000..1ef1af5 --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/OrderDetailVo.java @@ -0,0 +1,38 @@ +package com.wyh.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +@ApiModel("订单信息详情Vo") +public class OrderDetailVo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + private Integer id; + + @ApiModelProperty(value = "用户id") + private Integer userId; + + @ApiModelProperty(value = "地址信息id") + private Integer adId; + + @ApiModelProperty(value = "订单状态:1:待审核,2:待收货,3:租用中,4:已返还") + private Integer status; + + @ApiModelProperty(value = "订单总金额") + private BigDecimal totalPrice; + + @ApiModelProperty(value = "订单编号") + private String sn; + + @ApiModelProperty(value = "外部订单号") + private String outSn; + + +} diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/OrderListedVo.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/OrderListedVo.java new file mode 100644 index 0000000..2acf7c6 --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/OrderListedVo.java @@ -0,0 +1,44 @@ +package com.wyh.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +@ApiModel("订单信息列表Vo") +public class OrderListedVo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + private Integer id; + + @ApiModelProperty(value = "创建时间") + private String createTime; + + @ApiModelProperty(value = "更新时间") + private String updateTime; + + @ApiModelProperty(value = "用户id") + private Integer userId; + + @ApiModelProperty(value = "地址信息id") + private Integer adId; + + @ApiModelProperty(value = "订单状态:1:待审核,2:待收货,3:租用中,4:已返还") + private Integer status; + + @ApiModelProperty(value = "订单总金额") + private BigDecimal totalPrice; + + @ApiModelProperty(value = "订单编号") + private String sn; + + @ApiModelProperty(value = "外部订单号") + private String outSn; + + +} diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/SignDateVo.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/SignDateVo.java new file mode 100644 index 0000000..5796864 --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/SignDateVo.java @@ -0,0 +1,19 @@ +package com.wyh.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@ApiModel("签到记录") +public class SignDateVo { + @ApiModelProperty("日期") + private String date; + @ApiModelProperty("是否签到") + private Boolean isSign; + + @ApiModelProperty("签到获取金额") + private BigDecimal signMoney; +} diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/SignLogVo.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/SignLogVo.java new file mode 100644 index 0000000..b248054 --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/SignLogVo.java @@ -0,0 +1,25 @@ +package com.wyh.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@ApiModel("用户签到记录VO") +@Data +public class SignLogVo { + + @ApiModelProperty("用户id") + private Integer userId; + + @ApiModelProperty("积分余额") + private BigDecimal money; + + @ApiModelProperty("连续签到天数") + private Integer continuousDays; + + @ApiModelProperty("签到日期列表") + private List signDateList; +} diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/WxArticleDetailVo.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/WxArticleDetailVo.java new file mode 100644 index 0000000..8a20ace --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/WxArticleDetailVo.java @@ -0,0 +1,28 @@ +package com.wyh.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +@ApiModel("分享任务文章详情Vo") +public class WxArticleDetailVo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + private Integer id; + + @ApiModelProperty(value = "链接地址") + private String linkUrl; + + @ApiModelProperty(value = "文章标题") + private String title; + + @ApiModelProperty(value = "文章分享图") + private String image; + + +} diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/WxArticleListedVo.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/WxArticleListedVo.java new file mode 100644 index 0000000..3a06ada --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/WxArticleListedVo.java @@ -0,0 +1,34 @@ +package com.wyh.common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +@ApiModel("分享任务文章列表Vo") +public class WxArticleListedVo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + private Integer id; + + @ApiModelProperty(value = "创建时间") + private String createTime; + + @ApiModelProperty(value = "更新时间") + private String updateTime; + + @ApiModelProperty(value = "链接地址") + private String linkUrl; + + @ApiModelProperty(value = "文章标题") + private String title; + + @ApiModelProperty(value = "文章分享图") + private String image; + + +} diff --git a/ZJ-java/ZJ-front/src/main/java/com/wyh/front/controller/LoginController.java b/ZJ-java/ZJ-front/src/main/java/com/wyh/front/controller/LoginController.java index b3d6c1a..0488e6c 100644 --- a/ZJ-java/ZJ-front/src/main/java/com/wyh/front/controller/LoginController.java +++ b/ZJ-java/ZJ-front/src/main/java/com/wyh/front/controller/LoginController.java @@ -2,6 +2,7 @@ package com.wyh.front.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.wyh.common.aop.NotLogin; +import com.wyh.common.aop.NotPower; import com.wyh.common.core.AjaxResult; import com.wyh.common.entity.notice.NoticeRecord; import com.wyh.common.enums.NoticeEnum; @@ -26,6 +27,7 @@ import org.springframework.web.bind.annotation.*; import springfox.documentation.annotations.ApiIgnore; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import javax.validation.constraints.NotNull; import java.util.Arrays; @@ -177,6 +179,14 @@ public class LoginController { } + @NotPower + @PostMapping("/logout") + @ApiOperation(value="退出登录") + public AjaxResult logout(HttpServletRequest request) { + iLoginService.logout(request.getHeader("token")); + return AjaxResult.success(); + } + public static void main(String[] args) { ZJFrontThreadLocal.getUserId(); String s = HttpUtils.sendGet("https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/pca-code.json"); diff --git a/ZJ-java/ZJ-front/src/main/java/com/wyh/front/controller/OrderController.java b/ZJ-java/ZJ-front/src/main/java/com/wyh/front/controller/OrderController.java new file mode 100644 index 0000000..7f430c0 --- /dev/null +++ b/ZJ-java/ZJ-front/src/main/java/com/wyh/front/controller/OrderController.java @@ -0,0 +1,25 @@ +package com.wyh.front.controller; + + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("front/order") +@Api(tags = "订单") +public class OrderController { + + + + + @PostMapping("add") + @ApiOperation("添加订单") + public void add(){ + + } + + +} diff --git a/ZJ-java/ZJ-front/src/main/java/com/wyh/front/controller/SignController.java b/ZJ-java/ZJ-front/src/main/java/com/wyh/front/controller/SignController.java new file mode 100644 index 0000000..6be3d26 --- /dev/null +++ b/ZJ-java/ZJ-front/src/main/java/com/wyh/front/controller/SignController.java @@ -0,0 +1,55 @@ +package com.wyh.front.controller; + +import com.wyh.common.core.AjaxResult; +import com.wyh.common.vo.SignLogVo; +import com.wyh.front.service.SignService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("front/sign") +@Api(tags = "签到任务") +public class SignController { + + + @Autowired + private SignService signService; + + + @PostMapping("add") + @ApiOperation(value = "签到") + public AjaxResult add() { + signService.add(); + return AjaxResult.success(); + } + + + @GetMapping + @ApiOperation(value = "获取签到状态") + public AjaxResult getSignStatus() { + + + + return AjaxResult.success(signService.getSignStatus()); + } + + + @GetMapping("article/list") + @ApiOperation(value = "文章列表") + public AjaxResult articleList() { + return AjaxResult.success(signService.articleList()); + } + + + + @GetMapping("shareAdd") + @ApiOperation(value = "分享任务获取积分") + public AjaxResult shareAdd() { + return AjaxResult.success(signService.shareAdd()); + } +} diff --git a/ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/ILoginService.java b/ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/ILoginService.java index 67d37f9..c6719a5 100644 --- a/ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/ILoginService.java +++ b/ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/ILoginService.java @@ -102,4 +102,6 @@ public interface ILoginService { * @return LoginTokenVo */ LoginTokenVo phonePwdLogin(String mobile, String password, Integer terminal); + + void logout(String token); } diff --git a/ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/SignService.java b/ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/SignService.java new file mode 100644 index 0000000..920e9a1 --- /dev/null +++ b/ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/SignService.java @@ -0,0 +1,17 @@ +package com.wyh.front.service; + +import com.wyh.common.entity.ShareRecord; +import com.wyh.common.vo.SignLogVo; +import com.wyh.common.vo.WxArticleListedVo; + +import java.util.List; + +public interface SignService { + void add(); + + SignLogVo getSignStatus(); + + List articleList(); + + ShareRecord shareAdd(); +} diff --git a/ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/impl/LoginServiceImpl.java b/ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/impl/LoginServiceImpl.java index 35ac2f7..984a1d2 100644 --- a/ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/impl/LoginServiceImpl.java +++ b/ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/impl/LoginServiceImpl.java @@ -329,6 +329,12 @@ public class LoginServiceImpl implements ILoginService { return this.__loginToken(user.getId(), user.getMobile(), user.getIsNew(), terminal); } + @Override + public void logout(String token) { + Integer userId = StpUtil.getLoginIdAsInt(); + StpUtil.logout(userId); + } + /** * 处理微信登录 * diff --git a/ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/impl/SignServiceImpl.java b/ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/impl/SignServiceImpl.java new file mode 100644 index 0000000..ea70c19 --- /dev/null +++ b/ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/impl/SignServiceImpl.java @@ -0,0 +1,177 @@ +package com.wyh.front.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.wyh.common.entity.ShareRecord; +import com.wyh.common.entity.SignLog; +import com.wyh.common.entity.WxArticle; +import com.wyh.common.entity.user.User; +import com.wyh.common.enums.LogMoneyEnum; +import com.wyh.common.mapper.ShareRecordMapper; +import com.wyh.common.mapper.SignLogMapper; +import com.wyh.common.mapper.WxArticleMapper; +import com.wyh.common.mapper.log.LogMoneyMapper; +import com.wyh.common.mapper.user.UserMapper; +import com.wyh.common.util.TimeUtils; +import com.wyh.common.util.UrlUtils; +import com.wyh.common.vo.SignDateVo; +import com.wyh.common.vo.SignLogVo; +import com.wyh.common.vo.WxArticleListedVo; +import com.wyh.front.ZJFrontThreadLocal; +import com.wyh.front.service.SignService; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.Assert; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.*; + +import static com.wyh.common.util.TimeUtils.generateDateList; + +@Service +public class SignServiceImpl implements SignService { + + @Resource + private ShareRecordMapper shareRecordMapper; + + @Resource + private UserMapper userMapper; + + @Resource + private SignLogMapper signLogMapper; + + @Resource + private LogMoneyMapper logMoneyMapper; + + @Resource + private WxArticleMapper wxArticleMapper; + + private static BigDecimal amountToAdd = new BigDecimal(100); + + + @Override + public void add() { + + Integer userId = ZJFrontThreadLocal.getUserId(); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + //获取当前时间 + String date = simpleDateFormat.format(new Date()); + //获取昨天的时间 + String yesterday = simpleDateFormat.format(new Date().getTime() - 1000 * 60 * 60 * 24); + Long l = signLogMapper.selectCount(Wrappers.lambdaQuery().eq(SignLog::getUserId, userId).eq(SignLog::getSignDate, date)); + Assert.isTrue(l == 0, "今日已签到"); + SignLog signLog1 = signLogMapper.selectOne(Wrappers.lambdaQuery().eq(SignLog::getUserId, userId).eq(SignLog::getSignDate, yesterday).orderByDesc(SignLog::getSignDate)); + SignLog signLog = new SignLog(); + if (signLog1 != null) { + signLog.setContinueNums(signLog1.getContinueNums() + 1); + }else { + signLog.setContinueNums(1); + } + User user = userMapper.selectById(userId); + Assert.notNull(user, "用户不存在"); + user.setMoney(user.getMoney().add(amountToAdd)); + + userMapper.updateById(user); + signLog.setUserId(userId); + signLog.setSignDate(date); + signLog.setCreateTime(System.currentTimeMillis()/1000); + signLog.setUpdateTime(System.currentTimeMillis()/1000); + signLog.setSignMoney(amountToAdd); + signLogMapper.insert(signLog); + + Integer changeType = LogMoneyEnum.UM_INC_ADMIN.getCode(); + logMoneyMapper.add(userId,changeType,amountToAdd,0, "", "", null); + } + + @Override + public SignLogVo getSignStatus() { + Integer userId = ZJFrontThreadLocal.getUserId(); + SignLogVo signLogVo = new SignLogVo(); + + User user = userMapper.selectById(userId); + Assert.notNull(user, "用户不存在"); + signLogVo.setUserId(userId); + signLogVo.setMoney(user.getMoney()); + + + + List stringList = generateDateList(); + + List signLogs = signLogMapper.selectList(Wrappers.lambdaQuery().eq(SignLog::getUserId, userId).in(SignLog::getSignDate, stringList).orderByDesc(SignLog::getCreateTime)); + + Set stringSet = new HashSet<>(stringList); + List result = new ArrayList<>(); + + for (String date : stringSet) { + SignDateVo signDateVo = new SignDateVo(); + signDateVo.setDate(date); + signDateVo.setIsSign(signLogs.stream().anyMatch(log -> log.getSignDate().equals(date))); + BigDecimal signMoneySum = signLogs.stream() + .filter(log -> log.getSignDate().equals(date)) + .map(SignLog::getSignMoney) + .reduce(BigDecimal.ZERO, BigDecimal::add); + signDateVo.setSignMoney(signMoneySum); + result.add(signDateVo); + } + result.sort((a, b) -> a.getDate().compareTo(b.getDate())); + signLogVo.setSignDateList(result); + int asInt = signLogs.stream().mapToInt(SignLog::getContinueNums).max().getAsInt(); + signLogVo.setContinuousDays(asInt); + return signLogVo; + } + + @Override + public List articleList() { + List wxArticles = wxArticleMapper.selectList(null); + List wxArticleList = new ArrayList<>(); + for (WxArticle wxArticle : wxArticles) { + WxArticleListedVo wxArticleListedVo = new WxArticleListedVo(); + BeanUtils.copyProperties(wxArticle, wxArticleListedVo); + wxArticleListedVo.setCreateTime(TimeUtils.timestampToDate(wxArticle.getCreateTime())); + wxArticleListedVo.setUpdateTime(TimeUtils.timestampToDate(wxArticle.getUpdateTime())); + wxArticleListedVo.setImage(UrlUtils.toAbsoluteUrl(wxArticle.getImage())); + wxArticleList.add(wxArticleListedVo); + } + + return wxArticleList; + } + + @Override + public ShareRecord shareAdd() { + Integer userId = ZJFrontThreadLocal.getUserId(); + List shareRecords = shareRecordMapper.selectList(Wrappers.lambdaQuery() + .eq(ShareRecord::getUserId, userId) + .in(ShareRecord::getCreateTime, TimeUtils.today()) + .orderByDesc(ShareRecord::getCreateTime)); + BigDecimal totalScope = shareRecords.stream().map(ShareRecord::getScope).reduce(BigDecimal.ZERO, BigDecimal::add); + Assert.isTrue(totalScope.compareTo(new BigDecimal("1000")) < 0, "今日分享任务已达上限"); + ShareRecord shareRecord = new ShareRecord(); + shareRecord.setUserId(userId); + shareRecord.setCreateTime(System.currentTimeMillis()/1000); + shareRecord.setUpdateTime(System.currentTimeMillis()/1000); + shareRecord.setScope(new BigDecimal("100")); + shareRecordMapper.insert(shareRecord); + + User user = userMapper.selectById(userId); + Assert.notNull(user, "用户不存在"); + user.setMoney(user.getMoney().add(amountToAdd)); + userMapper.updateById(user); + + Integer changeType = LogMoneyEnum.UM_INC_ADMIN.getCode(); + logMoneyMapper.add(userId,changeType,amountToAdd,0, "", "", null); + + return shareRecord; + } + + + public static void main(String[] args) { +BigDecimal totalScope = new BigDecimal("900"); + Assert.isTrue(totalScope.compareTo(new BigDecimal("1000")) < 0, "今日分享已达上限"); + +// Assert.isTrue(totalScope.compareTo(new BigDecimal("1000")) >= 0, "今日分享已达上限"); + + } + + +} diff --git a/ZJ-java/ZJ-front/src/main/resources/application-dev.yml b/ZJ-java/ZJ-front/src/main/resources/application-dev.yml index 8b0bfba..e0f2b14 100644 --- a/ZJ-java/ZJ-front/src/main/resources/application-dev.yml +++ b/ZJ-java/ZJ-front/src/main/resources/application-dev.yml @@ -12,17 +12,17 @@ spring: username: root # 数据库账号 password: ifpdge9z # 数据库密码 # Redis配置 -# redis: -# host: 101.133.172.2 # Redis服务地址 -# port: 2007 # Redis端口 -# password: 123456 # Redis密码 -# database: 14 # 数据库索引 - redis: - host: 127.0.0.1 # Redis服务地址 - port: 6379 # Redis端口 + host: 101.133.172.2 # Redis服务地址 + port: 2007 # Redis端口 password: 123456 # Redis密码 - database: 11 + database: 14 # 数据库索引 + +# redis: +# host: 127.0.0.1 # Redis服务地址 +# port: 6379 # Redis端口 +# password: 123456 # Redis密码 +# database: 11 # Mybatis-plus配置 【是否开启SQL日志输出】 #mybatis-plus: # configuration: diff --git a/admin/src/api/consumer.ts b/admin/src/api/consumer.ts index 1057729..5b1bab2 100644 --- a/admin/src/api/consumer.ts +++ b/admin/src/api/consumer.ts @@ -14,3 +14,8 @@ export function getUserDetail(params: any) { export function userEdit(params: any) { return request.post({ url: '/user/edit', params }) } + +export function adjustMoney(params: any) { + return request.post({ url: '/user/adjustWallet', params }) +} + diff --git a/admin/src/api/wxarticle.ts b/admin/src/api/wxarticle.ts new file mode 100644 index 0000000..08cc323 --- /dev/null +++ b/admin/src/api/wxarticle.ts @@ -0,0 +1,26 @@ +import request from '@/utils/request' + +// 分享任务文章列表 +export function articleLists(params?: Record) { + return request.get({ url: '/article/list', params }) +} + +// 分享任务文章详情 +export function articleDetail(params: Record) { + return request.get({ url: '/article/detail', params }) +} + +// 分享任务文章新增 +export function articleAdd(params: Record) { + return request.post({ url: '/article/add', params }) +} + +// 分享任务文章编辑 +export function articleEdit(params: Record) { + return request.post({ url: '/article/edit', params }) +} + +// 分享任务文章删除 +export function articleDelete(params: Record) { + return request.post({ url: '/article/del', params }) +} diff --git a/admin/src/views/article/edit.vue b/admin/src/views/article/edit.vue new file mode 100644 index 0000000..c3842c4 --- /dev/null +++ b/admin/src/views/article/edit.vue @@ -0,0 +1,128 @@ + + diff --git a/admin/src/views/article/index.vue b/admin/src/views/article/index.vue new file mode 100644 index 0000000..63ea927 --- /dev/null +++ b/admin/src/views/article/index.vue @@ -0,0 +1,119 @@ + + diff --git a/admin/src/views/consumer/components/account-adjust.vue b/admin/src/views/consumer/components/account-adjust.vue index 889cb3b..720cac2 100644 --- a/admin/src/views/consumer/components/account-adjust.vue +++ b/admin/src/views/consumer/components/account-adjust.vue @@ -16,9 +16,9 @@ 扣减余额 - + () const formData = reactive({ action: 1, //变动类型 1-增加 2-减少 - num: '', + amount: '', remark: '' }) const popupRef = shallowRef>() const adjustmentMoney = computed(() => { - return Number(props.value) + Number(formData.num) * (formData.action == 1 ? 1 : -1) + return Number(props.value) + Number(formData.amount) * (formData.action == 1 ? 1 : -1) }) const formRules: FormRules = { - num: [ + amount: [ { required: true, message: '请输入调整的金额' @@ -74,7 +74,7 @@ const numberValidate = (value: string) => { if (value.includes('-')) { return feedback.msgError('请输入正整数') } - formData.num = value + formData.amount = value } const handleConfirm = async () => { await formRef.value?.validate() @@ -98,7 +98,7 @@ watch( watch(adjustmentMoney, (val) => { if (val < 0) { feedback.msgError('调整后余额需大于0') - formData.num = '' + formData.amount = '' } }) diff --git a/admin/src/views/consumer/lists/detail.vue b/admin/src/views/consumer/lists/detail.vue index b69c8c6..c19c84d 100644 --- a/admin/src/views/consumer/lists/detail.vue +++ b/admin/src/views/consumer/lists/detail.vue @@ -13,12 +13,12 @@
账户余额
- ¥{{ formData.user_money }} + ¥{{ formData.money || 0 }} 调整 @@ -106,7 +106,7 @@