From ce37e32e4758a7de4422aaa4250f93d6c99664f3 Mon Sep 17 00:00:00 2001 From: lzx_mac <2602107437@qq.com> Date: Mon, 28 Oct 2024 13:00:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CityCommentController.java | 2 +- .../modules/cityComment/entity/CityComment.java | 30 +- .../cityComment/mapper/CityCommentMapper.java | 2 +- .../cityComment/service/ICityCommentService.java | 2 +- .../service/impl/CityCommentServiceImpl.java | 2 +- .../modules/cityComment/vue/CityCommentList.vue | 44 + .../cityComment/vue/modules/CityCommentForm.vue | 35 + .../modules/cityComment/vue3/CityComment.data.ts | 76 ++ .../cityJd/controller/CityJdController.java | 171 +++ .../org/jeecg/modules/cityJd/entity/CityJd.java | 78 ++ .../jeecg/modules/cityJd/mapper/CityJdMapper.java | 17 + .../modules/cityJd/mapper/xml/CityJdMapper.xml | 5 + .../modules/cityJd/service/ICityJdService.java | 14 + .../cityJd/service/impl/CityJdServiceImpl.java | 19 + .../org/jeecg/modules/cityJd/vue/CityJdList.vue | 210 ++++ .../modules/cityJd/vue/modules/CityJdForm.vue | 134 +++ .../vue/modules/CityJdModal.Style#Drawer.vue | 84 ++ .../modules/cityJd/vue/modules/CityJdModal.vue | 60 ++ .../org/jeecg/modules/cityJd/vue3/CityJd.api.ts | 61 ++ .../org/jeecg/modules/cityJd/vue3/CityJd.data.ts | 90 ++ .../org/jeecg/modules/cityJd/vue3/CityJdList.vue | 162 +++ .../modules/cityJd/vue3/components/CityJdModal.vue | 58 + .../controller/HanHaiMemberController.java | 2 +- .../modules/hanHaiMember/entity/HanHaiMember.java | 17 +- .../hanHaiMember/mapper/HanHaiMemberMapper.java | 2 +- .../hanHaiMember/service/IHanHaiMemberService.java | 2 +- .../service/impl/HanHaiMemberServiceImpl.java | 2 +- .../modules/hanHaiMember/vue/HanHaiMemberList.vue | 57 +- .../hanHaiMember/vue/modules/HanHaiMemberForm.vue | 21 +- .../modules/hanHaiMember/vue3/HanHaiMember.data.ts | 68 +- .../org/jeecg/modules/api/bean/HttpClientUtil.java | 1120 ++++++++++++++++++++ .../org/jeecg/modules/api/bean/WxQrCodeVo.java | 14 + .../jeecg/modules/api/service/YaoDuApiService.java | 29 +- .../api/service/impl/YaoDuApiServiceImpl.java | 400 ++++++- .../modules/api/yaoduapi/YaoDuApiController.java | 24 + .../api/yaoduapi/YaoDuApiTokenController.java | 67 +- 36 files changed, 3136 insertions(+), 45 deletions(-) create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/controller/CityJdController.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/entity/CityJd.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/mapper/CityJdMapper.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/mapper/xml/CityJdMapper.xml create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/service/ICityJdService.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/service/impl/CityJdServiceImpl.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue/CityJdList.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue/modules/CityJdForm.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue/modules/CityJdModal.Style#Drawer.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue/modules/CityJdModal.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue3/CityJd.api.ts create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue3/CityJd.data.ts create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue3/CityJdList.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue3/components/CityJdModal.vue create mode 100644 jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/bean/HttpClientUtil.java create mode 100644 jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/bean/WxQrCodeVo.java diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/controller/CityCommentController.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/controller/CityCommentController.java index e5bb66b..79e6bd7 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/controller/CityCommentController.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/controller/CityCommentController.java @@ -39,7 +39,7 @@ import org.jeecg.common.aspect.annotation.AutoLog; /** * @Description: 评论信息表 * @Author: jeecg-boot - * @Date: 2024-10-14 + * @Date: 2024-10-27 * @Version: V1.0 */ @Api(tags="评论信息表") diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/entity/CityComment.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/entity/CityComment.java index 08eb2de..b5f622b 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/entity/CityComment.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/entity/CityComment.java @@ -20,7 +20,7 @@ import lombok.experimental.Accessors; /** * @Description: 评论信息表 * @Author: jeecg-boot - * @Date: 2024-10-14 + * @Date: 2024-10-27 * @Version: V1.0 */ @Data @@ -51,4 +51,32 @@ public class CityComment implements Serializable { @Excel(name = "评论标题", width = 15) @ApiModelProperty(value = "评论标题") private java.lang.String name; + /**评论昵称*/ + @Excel(name = "评论昵称", width = 15) + @ApiModelProperty(value = "评论昵称") + private java.lang.String userName; + /**评论头像*/ + @Excel(name = "评论头像", width = 15) + @ApiModelProperty(value = "评论头像") + private java.lang.String userHead; + /**评论内容*/ + @Excel(name = "评论内容", width = 15) + @ApiModelProperty(value = "评论内容") + private java.lang.String userValue; + /**评论图片*/ + @Excel(name = "评论图片", width = 15) + @ApiModelProperty(value = "评论图片") + private java.lang.String userImage; + /**评论标识*/ + @Excel(name = "评论标识", width = 15) + @ApiModelProperty(value = "评论标识") + private java.lang.String orderId; + /**评论类型*/ + @Excel(name = "评论类型", width = 15) + @ApiModelProperty(value = "评论类型") + private java.lang.String type; + /**用户标识*/ + @Excel(name = "用户标识", width = 15) + @ApiModelProperty(value = "用户标识") + private java.lang.String userId; } diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/mapper/CityCommentMapper.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/mapper/CityCommentMapper.java index 81f2260..5addaee 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/mapper/CityCommentMapper.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/mapper/CityCommentMapper.java @@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** * @Description: 评论信息表 * @Author: jeecg-boot - * @Date: 2024-10-14 + * @Date: 2024-10-27 * @Version: V1.0 */ public interface CityCommentMapper extends BaseMapper { diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/service/ICityCommentService.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/service/ICityCommentService.java index 4baa2cb..96262a2 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/service/ICityCommentService.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/service/ICityCommentService.java @@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService; /** * @Description: 评论信息表 * @Author: jeecg-boot - * @Date: 2024-10-14 + * @Date: 2024-10-27 * @Version: V1.0 */ public interface ICityCommentService extends IService { diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/service/impl/CityCommentServiceImpl.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/service/impl/CityCommentServiceImpl.java index a617600..e674e01 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/service/impl/CityCommentServiceImpl.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/service/impl/CityCommentServiceImpl.java @@ -10,7 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; /** * @Description: 评论信息表 * @Author: jeecg-boot - * @Date: 2024-10-14 + * @Date: 2024-10-27 * @Version: V1.0 */ @Service diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/vue/CityCommentList.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/vue/CityCommentList.vue index 3629db7..ea629e8 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/vue/CityCommentList.vue +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/vue/CityCommentList.vue @@ -126,6 +126,43 @@ align:"center", dataIndex: 'name' }, + { + title:'评论昵称', + align:"center", + dataIndex: 'userName' + }, + { + title:'评论头像', + align:"center", + dataIndex: 'userHead', + scopedSlots: {customRender: 'imgSlot'} + }, + { + title:'评论内容', + align:"center", + dataIndex: 'userValue' + }, + { + title:'评论图片', + align:"center", + dataIndex: 'userImage', + scopedSlots: {customRender: 'imgSlot'} + }, + { + title:'评论标识', + align:"center", + dataIndex: 'orderId' + }, + { + title:'评论类型', + align:"center", + dataIndex: 'type' + }, + { + title:'用户标识', + align:"center", + dataIndex: 'userId' + }, { title: '操作', dataIndex: 'action', @@ -161,6 +198,13 @@ getSuperFieldList(){ let fieldList=[]; fieldList.push({type:'string',value:'name',text:'评论标题',dictCode:''}) + fieldList.push({type:'string',value:'userName',text:'评论昵称',dictCode:''}) + fieldList.push({type:'Text',value:'userHead',text:'评论头像',dictCode:''}) + fieldList.push({type:'Text',value:'userValue',text:'评论内容',dictCode:''}) + fieldList.push({type:'Text',value:'userImage',text:'评论图片',dictCode:''}) + fieldList.push({type:'string',value:'orderId',text:'评论标识',dictCode:''}) + fieldList.push({type:'string',value:'type',text:'评论类型',dictCode:''}) + fieldList.push({type:'string',value:'userId',text:'用户标识',dictCode:''}) this.superFieldList = fieldList } } diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/vue/modules/CityCommentForm.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/vue/modules/CityCommentForm.vue index f6d95d9..c06f417 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/vue/modules/CityCommentForm.vue +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/vue/modules/CityCommentForm.vue @@ -8,6 +8,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/vue3/CityComment.data.ts b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/vue3/CityComment.data.ts index 8abb720..ac2646a 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/vue3/CityComment.data.ts +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityComment/vue3/CityComment.data.ts @@ -9,6 +9,43 @@ export const columns: BasicColumn[] = [ align:"center", dataIndex: 'name' }, + { + title: '评论昵称', + align:"center", + dataIndex: 'userName' + }, + { + title: '评论头像', + align:"center", + dataIndex: 'userHead', + customRender:render.renderAvatar, + }, + { + title: '评论内容', + align:"center", + dataIndex: 'userValue' + }, + { + title: '评论图片', + align:"center", + dataIndex: 'userImage', + customRender:render.renderAvatar, + }, + { + title: '评论标识', + align:"center", + dataIndex: 'orderId' + }, + { + title: '评论类型', + align:"center", + dataIndex: 'type' + }, + { + title: '用户标识', + align:"center", + dataIndex: 'userId' + }, ]; //查询数据 export const searchFormSchema: FormSchema[] = [ @@ -20,4 +57,43 @@ export const formSchema: FormSchema[] = [ field: 'name', component: 'Input', }, + { + label: '评论昵称', + field: 'userName', + component: 'Input', + }, + { + label: '评论头像', + field: 'userHead', + component: 'JImageUpload', + componentProps:{ + }, + }, + { + label: '评论内容', + field: 'userValue', + component: 'InputTextArea',//TODO 注意string转换问题 + }, + { + label: '评论图片', + field: 'userImage', + component: 'JImageUpload', + componentProps:{ + }, + }, + { + label: '评论标识', + field: 'orderId', + component: 'Input', + }, + { + label: '评论类型', + field: 'type', + component: 'Input', + }, + { + label: '用户标识', + field: 'userId', + component: 'Input', + }, ]; diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/controller/CityJdController.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/controller/CityJdController.java new file mode 100644 index 0000000..26b52c3 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/controller/CityJdController.java @@ -0,0 +1,171 @@ +package org.jeecg.modules.cityJd.controller; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.cityJd.entity.CityJd; +import org.jeecg.modules.cityJd.service.ICityJdService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; + + /** + * @Description: 城市景点 + * @Author: jeecg-boot + * @Date: 2024-10-27 + * @Version: V1.0 + */ +@Api(tags="城市景点") +@RestController +@RequestMapping("/cityJd/cityJd") +@Slf4j +public class CityJdController extends JeecgController { + @Autowired + private ICityJdService cityJdService; + + /** + * 分页列表查询 + * + * @param cityJd + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "城市景点-分页列表查询") + @ApiOperation(value="城市景点-分页列表查询", notes="城市景点-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(CityJd cityJd, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(cityJd, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = cityJdService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param cityJd + * @return + */ + @AutoLog(value = "城市景点-添加") + @ApiOperation(value="城市景点-添加", notes="城市景点-添加") + @PostMapping(value = "/add") + public Result add(@RequestBody CityJd cityJd) { + cityJdService.save(cityJd); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param cityJd + * @return + */ + @AutoLog(value = "城市景点-编辑") + @ApiOperation(value="城市景点-编辑", notes="城市景点-编辑") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody CityJd cityJd) { + cityJdService.updateById(cityJd); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "城市景点-通过id删除") + @ApiOperation(value="城市景点-通过id删除", notes="城市景点-通过id删除") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + cityJdService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "城市景点-批量删除") + @ApiOperation(value="城市景点-批量删除", notes="城市景点-批量删除") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.cityJdService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "城市景点-通过id查询") + @ApiOperation(value="城市景点-通过id查询", notes="城市景点-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + CityJd cityJd = cityJdService.getById(id); + if(cityJd==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(cityJd); + } + + /** + * 导出excel + * + * @param request + * @param cityJd + */ + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, CityJd cityJd) { + return super.exportXls(request, cityJd, CityJd.class, "城市景点"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, CityJd.class); + } + +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/entity/CityJd.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/entity/CityJd.java new file mode 100644 index 0000000..6eefb57 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/entity/CityJd.java @@ -0,0 +1,78 @@ +package org.jeecg.modules.cityJd.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 城市景点 + * @Author: jeecg-boot + * @Date: 2024-10-27 + * @Version: V1.0 + */ +@Data +@TableName("city_jd") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="city_jd对象", description="城市景点") +public class CityJd implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键") + private java.lang.String id; + /**创建人*/ + @ApiModelProperty(value = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @ApiModelProperty(value = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @ApiModelProperty(value = "更新日期") + private java.util.Date updateTime; + /**景点名称*/ + @Excel(name = "景点名称", width = 15) + @ApiModelProperty(value = "景点名称") + private java.lang.String name; + /**景点位置*/ + @Excel(name = "景点位置", width = 15) + @ApiModelProperty(value = "景点位置") + private java.lang.String address; + /**经度*/ + @Excel(name = "经度", width = 15) + @ApiModelProperty(value = "经度") + private java.lang.String longitude; + /**纬度*/ + @Excel(name = "纬度", width = 15) + @ApiModelProperty(value = "纬度") + private java.lang.String latitude; + /**图片*/ + @Excel(name = "图片", width = 15) + @ApiModelProperty(value = "图片") + private java.lang.String images; + /**主图*/ + @Excel(name = "主图", width = 15) + @ApiModelProperty(value = "主图") + private java.lang.String titleImage; + /**介绍*/ + @Excel(name = "介绍", width = 15) + @ApiModelProperty(value = "介绍") + private java.lang.String details; +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/mapper/CityJdMapper.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/mapper/CityJdMapper.java new file mode 100644 index 0000000..9d9135e --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/mapper/CityJdMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.cityJd.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.cityJd.entity.CityJd; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 城市景点 + * @Author: jeecg-boot + * @Date: 2024-10-27 + * @Version: V1.0 + */ +public interface CityJdMapper extends BaseMapper { + +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/mapper/xml/CityJdMapper.xml b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/mapper/xml/CityJdMapper.xml new file mode 100644 index 0000000..f101abe --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/mapper/xml/CityJdMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/service/ICityJdService.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/service/ICityJdService.java new file mode 100644 index 0000000..585db70 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/service/ICityJdService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.cityJd.service; + +import org.jeecg.modules.cityJd.entity.CityJd; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 城市景点 + * @Author: jeecg-boot + * @Date: 2024-10-27 + * @Version: V1.0 + */ +public interface ICityJdService extends IService { + +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/service/impl/CityJdServiceImpl.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/service/impl/CityJdServiceImpl.java new file mode 100644 index 0000000..16ad7ff --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/service/impl/CityJdServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.cityJd.service.impl; + +import org.jeecg.modules.cityJd.entity.CityJd; +import org.jeecg.modules.cityJd.mapper.CityJdMapper; +import org.jeecg.modules.cityJd.service.ICityJdService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 城市景点 + * @Author: jeecg-boot + * @Date: 2024-10-27 + * @Version: V1.0 + */ +@Service +public class CityJdServiceImpl extends ServiceImpl implements ICityJdService { + +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue/CityJdList.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue/CityJdList.vue new file mode 100644 index 0000000..8532bc7 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue/CityJdList.vue @@ -0,0 +1,210 @@ + + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue/modules/CityJdForm.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue/modules/CityJdForm.vue new file mode 100644 index 0000000..4db6534 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue/modules/CityJdForm.vue @@ -0,0 +1,134 @@ + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue/modules/CityJdModal.Style#Drawer.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue/modules/CityJdModal.Style#Drawer.vue new file mode 100644 index 0000000..2f7e849 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue/modules/CityJdModal.Style#Drawer.vue @@ -0,0 +1,84 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue/modules/CityJdModal.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue/modules/CityJdModal.vue new file mode 100644 index 0000000..415bd15 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue/modules/CityJdModal.vue @@ -0,0 +1,60 @@ + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue3/CityJd.api.ts b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue3/CityJd.api.ts new file mode 100644 index 0000000..9f18ec3 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue3/CityJd.api.ts @@ -0,0 +1,61 @@ +import {defHttp} from '/@/utils/http/axios'; +import {Modal} from 'ant-design-vue'; + +enum Api { + list = '/cityJd/cityJd/list', + save='/cityJd/cityJd/add', + edit='/cityJd/cityJd/edit', + deleteOne = '/cityJd/cityJd/delete', + deleteBatch = '/cityJd/cityJd/deleteBatch', + importExcel = '/cityJd/cityJd/importExcel', + exportXls = '/cityJd/cityJd/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + Modal.confirm({ + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue3/CityJd.data.ts b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue3/CityJd.data.ts new file mode 100644 index 0000000..0a0f4ca --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue3/CityJd.data.ts @@ -0,0 +1,90 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '景点名称', + align:"center", + dataIndex: 'name' + }, + { + title: '景点位置', + align:"center", + dataIndex: 'address' + }, + { + title: '经度', + align:"center", + dataIndex: 'longitude' + }, + { + title: '纬度', + align:"center", + dataIndex: 'latitude' + }, + { + title: '图片', + align:"center", + dataIndex: 'images', + customRender:render.renderAvatar, + }, + { + title: '主图', + align:"center", + dataIndex: 'titleImage', + customRender:render.renderAvatar, + }, + { + title: '介绍', + align:"center", + dataIndex: 'details', + slots: { customRender: 'htmlSlot' }, + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '景点名称', + field: 'name', + component: 'Input', + }, + { + label: '景点位置', + field: 'address', + component: 'Input', + }, + { + label: '经度', + field: 'longitude', + component: 'Input', + }, + { + label: '纬度', + field: 'latitude', + component: 'Input', + }, + { + label: '图片', + field: 'images', + component: 'JImageUpload', + componentProps:{ + }, + }, + { + label: '主图', + field: 'titleImage', + component: 'JImageUpload', + componentProps:{ + }, + }, + { + label: '介绍', + field: 'details', + component: 'JCodeEditor', //TODO String后缀暂未添加 + }, +]; diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue3/CityJdList.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue3/CityJdList.vue new file mode 100644 index 0000000..e5cbf0f --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue3/CityJdList.vue @@ -0,0 +1,162 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue3/components/CityJdModal.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue3/components/CityJdModal.vue new file mode 100644 index 0000000..189e7d8 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/cityJd/vue3/components/CityJdModal.vue @@ -0,0 +1,58 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/controller/HanHaiMemberController.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/controller/HanHaiMemberController.java index 6126fef..ba8476d 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/controller/HanHaiMemberController.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/controller/HanHaiMemberController.java @@ -39,7 +39,7 @@ import org.jeecg.common.aspect.annotation.AutoLog; /** * @Description: 用户账户表 * @Author: jeecg-boot - * @Date: 2024-10-26 + * @Date: 2024-10-27 * @Version: V1.0 */ @Api(tags="用户账户表") diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/entity/HanHaiMember.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/entity/HanHaiMember.java index 35bca37..a3098e7 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/entity/HanHaiMember.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/entity/HanHaiMember.java @@ -20,7 +20,7 @@ import lombok.experimental.Accessors; /** * @Description: 用户账户表 * @Author: jeecg-boot - * @Date: 2024-10-26 + * @Date: 2024-10-27 * @Version: V1.0 */ @Data @@ -141,7 +141,7 @@ public class HanHaiMember implements Serializable { /**是否实名认证*/ @Excel(name = "是否实名认证", width = 15) @ApiModelProperty(value = "是否实名认证") - private java.lang.String idCardOpen; + private java.lang.Integer idCardOpen; /**intentionNum*/ @Excel(name = "intentionNum", width = 15) @ApiModelProperty(value = "intentionNum") @@ -154,9 +154,10 @@ public class HanHaiMember implements Serializable { @Excel(name = "addNum", width = 15) @ApiModelProperty(value = "addNum") private java.lang.Integer addNum; - /**shareId*/ - @Excel(name = "shareId", width = 15) - @ApiModelProperty(value = "shareId") + /**邀请人*/ + @Excel(name = "邀请人", width = 15, dictTable = "han_hai_member", dicText = "nick_name", dicCode = "id") + @Dict(dictTable = "han_hai_member", dicText = "nick_name", dicCode = "id") + @ApiModelProperty(value = "邀请人") private java.lang.String shareId; /**邀请人*/ @Excel(name = "邀请人", width = 15) @@ -166,9 +167,9 @@ public class HanHaiMember implements Serializable { @Excel(name = "邀请时间", width = 15) @ApiModelProperty(value = "邀请时间") private java.util.Date vtime; - /**兼兼街会员*/ - @Excel(name = "兼兼街会员", width = 15) - @ApiModelProperty(value = "兼兼街会员") + /**会员*/ + @Excel(name = "会员", width = 15) + @ApiModelProperty(value = "会员") private java.lang.Integer isPay; /**是否关注公众号*/ @Excel(name = "是否关注公众号", width = 15) diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/mapper/HanHaiMemberMapper.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/mapper/HanHaiMemberMapper.java index 37d6345..5f5f953 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/mapper/HanHaiMemberMapper.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/mapper/HanHaiMemberMapper.java @@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** * @Description: 用户账户表 * @Author: jeecg-boot - * @Date: 2024-10-26 + * @Date: 2024-10-27 * @Version: V1.0 */ public interface HanHaiMemberMapper extends BaseMapper { diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/service/IHanHaiMemberService.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/service/IHanHaiMemberService.java index 11195af..7c6c0a9 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/service/IHanHaiMemberService.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/service/IHanHaiMemberService.java @@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService; /** * @Description: 用户账户表 * @Author: jeecg-boot - * @Date: 2024-10-26 + * @Date: 2024-10-27 * @Version: V1.0 */ public interface IHanHaiMemberService extends IService { diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/service/impl/HanHaiMemberServiceImpl.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/service/impl/HanHaiMemberServiceImpl.java index 3fc945d..ce75406 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/service/impl/HanHaiMemberServiceImpl.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/service/impl/HanHaiMemberServiceImpl.java @@ -10,7 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; /** * @Description: 用户账户表 * @Author: jeecg-boot - * @Date: 2024-10-26 + * @Date: 2024-10-27 * @Version: V1.0 */ @Service diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/vue/HanHaiMemberList.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/vue/HanHaiMemberList.vue index a17067d..876432a 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/vue/HanHaiMemberList.vue +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/vue/HanHaiMemberList.vue @@ -4,6 +4,38 @@
+ + + + + + + + + + + + + + 查询 + 重置 + + {{ toggleSearchStatus ? '收起' : '展开' }} + + + +
@@ -99,6 +131,7 @@ import { mixinDevice } from '@/utils/mixin' import { JeecgListMixin } from '@/mixins/JeecgListMixin' import HanHaiMemberModal from './modules/HanHaiMemberModal' + import {filterMultiDictText} from '@/components/dict/JDictSelectUtil' export default { name: 'HanHaiMemberList', @@ -160,13 +193,28 @@ { title:'邀请人', align:"center", - dataIndex: 'vid' + dataIndex: 'shareId_dictText' }, { title:'邀请时间', align:"center", dataIndex: 'vtime' }, + { + title:'会员', + align:"center", + dataIndex: 'isPay' + }, + { + title:'余额', + align:"center", + dataIndex: 'price' + }, + { + title:'积分', + align:"center", + dataIndex: 'integerPrice' + }, { title:'性别', align:"center", @@ -222,9 +270,12 @@ fieldList.push({type:'string',value:'phone',text:'手机号码',dictCode:''}) fieldList.push({type:'string',value:'appletOpenid',text:'小程序标识',dictCode:''}) fieldList.push({type:'string',value:'idCard',text:'身份证号码',dictCode:''}) - fieldList.push({type:'string',value:'idCardOpen',text:'是否实名认证',dictCode:''}) - fieldList.push({type:'string',value:'vid',text:'邀请人',dictCode:''}) + fieldList.push({type:'int',value:'idCardOpen',text:'是否实名认证',dictCode:'card_open_state'}) + fieldList.push({type:'sel_search',value:'shareId',text:'邀请人',dictTable:"han_hai_member", dictText:'nick_name', dictCode:'id'}) fieldList.push({type:'datetime',value:'vtime',text:'邀请时间'}) + fieldList.push({type:'int',value:'isPay',text:'会员',dictCode:''}) + fieldList.push({type:'BigDecimal',value:'price',text:'余额',dictCode:''}) + fieldList.push({type:'BigDecimal',value:'integerPrice',text:'积分',dictCode:''}) fieldList.push({type:'string',value:'sex',text:'性别',dictCode:''}) fieldList.push({type:'int',value:'yearDate',text:'出生年',dictCode:''}) fieldList.push({type:'string',value:'address',text:'地址',dictCode:''}) diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/vue/modules/HanHaiMemberForm.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/vue/modules/HanHaiMemberForm.vue index e3c1e23..72ff462 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/vue/modules/HanHaiMemberForm.vue +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/vue/modules/HanHaiMemberForm.vue @@ -35,12 +35,12 @@ - + - - + + @@ -48,6 +48,21 @@ + + + + + + + + + + + + + + + diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/vue3/HanHaiMember.data.ts b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/vue3/HanHaiMember.data.ts index 3e96fe0..ada8e6f 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/vue3/HanHaiMember.data.ts +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hanHaiMember/vue3/HanHaiMember.data.ts @@ -43,13 +43,28 @@ export const columns: BasicColumn[] = [ { title: '邀请人', align:"center", - dataIndex: 'vid' + dataIndex: 'shareId_dictText' }, { title: '邀请时间', align:"center", dataIndex: 'vtime' }, + { + title: '会员', + align:"center", + dataIndex: 'isPay' + }, + { + title: '余额', + align:"center", + dataIndex: 'price' + }, + { + title: '积分', + align:"center", + dataIndex: 'integerPrice' + }, { title: '性别', align:"center", @@ -68,6 +83,33 @@ export const columns: BasicColumn[] = [ ]; //查询数据 export const searchFormSchema: FormSchema[] = [ + { + label: "昵称", + field: "nickName", + component: 'Input', + colProps: {span: 6}, + }, + { + label: "真实姓名", + field: "name", + component: 'Input', + colProps: {span: 6}, + }, + { + label: "手机号码", + field: "phone", + component: 'Input', + colProps: {span: 6}, + }, + { + label: "邀请人", + field: "shareId", + component: 'JSearchSelect', + componentProps:{ + dict:"han_hai_member,nick_name,id" + }, + colProps: {span: 6}, + }, ]; //表单数据 export const formSchema: FormSchema[] = [ @@ -106,18 +148,36 @@ export const formSchema: FormSchema[] = [ { label: '是否实名认证', field: 'idCardOpen', - component: 'Input', + component: 'InputNumber', }, { label: '邀请人', - field: 'vid', - component: 'Input', + field: 'shareId', + component: 'JSearchSelect', + componentProps:{ + dict:"han_hai_member,nick_name,id" + }, }, { label: '邀请时间', field: 'vtime', component: 'Input', }, + { + label: '会员', + field: 'isPay', + component: 'InputNumber', + }, + { + label: '余额', + field: 'price', + component: 'InputNumber', + }, + { + label: '积分', + field: 'integerPrice', + component: 'InputNumber', + }, { label: '性别', field: 'sex', diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/bean/HttpClientUtil.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/bean/HttpClientUtil.java new file mode 100644 index 0000000..cc85816 --- /dev/null +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/bean/HttpClientUtil.java @@ -0,0 +1,1120 @@ +package org.jeecg.modules.api.bean; + + +import com.alibaba.fastjson.JSON; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.HttpStatus; +import org.apache.http.NameValuePair; +import org.apache.http.client.CookieStore; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.*; +import org.apache.http.client.utils.HttpClientUtils; +import org.apache.http.client.utils.URIBuilder; +import org.apache.http.conn.ssl.SSLConnectionSocketFactory; +import org.apache.http.conn.ssl.SSLContextBuilder; +import org.apache.http.conn.ssl.TrustStrategy; +import org.apache.http.entity.ContentType; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.BasicCookieStore; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.message.BasicNameValuePair; +import org.apache.http.util.EntityUtils; + +import javax.net.ssl.SSLContext; +import java.io.IOException; +import java.net.URI; +import java.nio.charset.Charset; +import java.security.KeyManagementException; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 通过url获取数据 + * + * @author zc + * + */ +public class HttpClientUtil { + + /** + * 设置可访问https + * @return + */ + public static CloseableHttpClient createSSLClientDefault() { + try { + SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() { + //信任所有 + public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException { + return true; + } + }).build(); + SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext, SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); + + return HttpClients.custom().setSSLSocketFactory(sslsf).build(); + } catch (KeyManagementException e) { + e.printStackTrace(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (KeyStoreException e) { + e.printStackTrace(); + } + return HttpClients.createDefault(); + } +/*************************************Get**********************************************/ + /** + * 一般查询用doget + * @param url + * @param param + * @param + * @return + */ + public static String doGet(String url, Map param) { + // 创建Httpclient对象 + CloseableHttpClient httpclient = createSSLClientDefault();//调用createSSLClientDefault + String resultString = ""; + CloseableHttpResponse response = null; + try { + + // 创建uri + URIBuilder builder = new URIBuilder(url); + if (param != null) { + for (String key : param.keySet()) { + builder.addParameter(key, param.get(key)); + } + } + URI uri = builder.build(); + CookieStore cookieStore = new BasicCookieStore(); + httpclient = HttpClients.custom().setDefaultCookieStore(cookieStore).build(); + // 创建http GET请求 + HttpGet httpGet = new HttpGet(uri); + //设置请求头 +// if (parameter != null) { +// //签名 +// httpGet.addHeader("Sign",parameter.getSign()); +// //用户ID +// httpGet.addHeader("User_ID",parameter.getUserId()+""); +// //用户角色ID +// httpGet.addHeader("User_RID",parameter.getRId()); +// //用户单位ID +// httpGet.addHeader("Dept_ID",parameter.getDeptId()+""); +// //用户科室ID +// httpGet.addHeader("Unit_ID",parameter.getUnitid()+""); +// httpGet.addHeader("CacheKey",parameter.getCacheKey()); +// httpGet.addHeader("Org_id", parameter.getOrg_id() + ""); +// httpGet.addHeader("Product_id", parameter.getProduct_id() + ""); +// httpGet.addHeader("Timestamp", parameter.getTimestamp()); +// } + + // 执行请求 + response = httpclient.execute(httpGet); + // 判断返回状态是否为200 + if (response.getStatusLine().getStatusCode() == 200) { + resultString = EntityUtils.toString(response.getEntity(), + "UTF-8"); + } + + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (response != null) { + response.close(); + } + httpclient.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return resultString; + } + + public static String doGet(String url) { + return doGet(url, null); + } + + public static String doGet3(String url, Map param) { + // 创建Httpclient对象 + //调用createSSLClientDefault + CloseableHttpClient httpclient = createSSLClientDefault(); + String resultString = ""; + CloseableHttpResponse response = null; + try { + + // 创建uri + URIBuilder builder = new URIBuilder(url); + if (param != null) { + for (String key : param.keySet()) { + builder.addParameter(key, param.get(key)); + } + } + URI uri = builder.build(); + + // 创建http GET请求 + HttpGet httpGet = new HttpGet(uri); + //设置请求头 +// if (parameter != null) { +// //签名 +// httpGet.addHeader("Sign",parameter.getSign()); +// //用户ID +// httpGet.addHeader("User_ID",parameter.getUserId()+""); +// //用户角色ID +// httpGet.addHeader("User_RID",parameter.getRId()); +// //用户单位ID +// httpGet.addHeader("Dept_ID",parameter.getDeptId()+""); +// //用户科室ID +// httpGet.addHeader("Unit_ID",parameter.getUnitid()+""); +// httpGet.addHeader("CacheKey",parameter.getCacheKey()); +// httpGet.addHeader("Org_id", parameter.getOrg_id() + ""); +// httpGet.addHeader("Product_id", parameter.getProduct_id() + ""); +// httpGet.addHeader("Timestamp", parameter.getTimestamp()); +// } + + // 执行请求 + response = httpclient.execute(httpGet); + // 判断返回状态是否为200 + if (response.getStatusLine().getStatusCode() == 200) { + resultString = EntityUtils.toString(response.getEntity(), + "UTF-8"); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (response != null) { + response.close(); + } + httpclient.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return resultString; + } + + /** + * 上传文件的doGet + * @param url + * @param param + * @param + * @return + */ + public static String doGet2(String url, Map param) { + + // 创建Httpclient对象 + CloseableHttpClient httpclient = createSSLClientDefault(); + String resultString = ""; + CloseableHttpResponse response = null; + try { + + // 创建uri + URIBuilder builder = new URIBuilder(url); + if (param != null) { + for (String key : param.keySet()) { + builder.addParameter(key, param.get(key)); + } + } + URI uri = builder.build(); + // 创建http GET请求 + HttpGet httpGet = new HttpGet(uri); +// if (parameter != null) { +// //用户ID +// httpGet.addHeader("User_ID",parameter.getUserId()+""); +// //用户角色ID +// httpGet.addHeader("User_RID",parameter.getRId()); +// //用户单位ID +// httpGet.addHeader("Dept_ID",parameter.getDeptId()+""); +// //用户科室ID +// httpGet.addHeader("Unit_ID",parameter.getUnitid()+""); +// httpGet.addHeader("CacheKey",parameter.getCacheKey()); +// httpGet.addHeader("Org_id", parameter.getOrg_id()); +// httpGet.addHeader("Product_id", parameter.getProduct_id()); +// httpGet.addHeader("Sign", parameter.getSign()); +// httpGet.addHeader("requestCode", parameter.getRequestCode()); +// httpGet.addHeader("Content-Type", "application/json;charset=UTF-8"); +// httpGet.addHeader("Timestamp", parameter.getTimestamp()); +// } + // 执行请求 + response = httpclient.execute(httpGet); + if (response.getStatusLine().getStatusCode() == 200) { + resultString = EntityUtils.toString(response.getEntity(), + "UTF-8"); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (response != null) { + response.close(); + } + httpclient.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return resultString; + } + + public static String doGet2(String url) { + return doGet2(url, null); + + } + + public static String doGet4(String url, Map param) { + // 创建Httpclient对象 + //调用createSSLClientDefault + CloseableHttpClient httpclient = createSSLClientDefault(); + String resultString = ""; + CloseableHttpResponse response = null; + try { + + // 创建uri + URIBuilder builder = new URIBuilder(url); + if (param != null) { + for (String key : param.keySet()) { + builder.addParameter(key, param.get(key)); + } + } + URI uri = builder.build(); + + // 创建http GET请求 + HttpGet httpGet = new HttpGet(uri); + //设置请求头 +// httpGet.addHeader(""); +// if (parameter != null) { +// //签名 +// httpGet.addHeader("Sign",parameter.getSign()); +// //用户ID +// httpGet.addHeader("User_ID",parameter.getUserId()+""); +// //用户角色ID +// httpGet.addHeader("User_RID",parameter.getRId()); +// //用户单位ID +// httpGet.addHeader("Dept_ID",parameter.getDeptId()+""); +// //用户科室ID +// httpGet.addHeader("Unit_ID",parameter.getUnitid()+""); +// httpGet.addHeader("CacheKey",parameter.getCacheKey()); +// httpGet.addHeader("Org_id", parameter.getOrg_id() + ""); +// httpGet.addHeader("Product_id", parameter.getProduct_id() + ""); +// httpGet.addHeader("Timestamp", parameter.getTimestamp()); +// } + + // 执行请求 + response = httpclient.execute(httpGet); + // 判断返回状态是否为200 + if (response.getStatusLine().getStatusCode() == 200) { + resultString = EntityUtils.toString(response.getEntity(), + "UTF-8"); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (response != null) { + response.close(); + } + httpclient.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return resultString; + } + + public static String doGet5(String url, Map param) { + // 创建Httpclient对象 + //调用createSSLClientDefault + CloseableHttpClient httpclient = createSSLClientDefault(); + String resultString = ""; + CloseableHttpResponse response = null; + try { + + // 创建uri + URIBuilder builder = new URIBuilder(url); + if (param != null) { + for (String key : param.keySet()) { + builder.addParameter(key, param.get(key)); + } + } + URI uri = builder.build(); + + // 创建http GET请求 + HttpGet httpGet = new HttpGet(uri); + //设置请求头 +// httpGet.addHeader(""); +// if (parameter != null) { +// httpGet.addHeader("Accept","application/json, text/javascript, */*; q=0.01"); +// httpGet.addHeader("Accept-Encoding","gzip, deflate, br"); +// httpGet.addHeader("Accept-Language","zh-CN,zh;q=0.9"); +// httpGet.addHeader("Connection","keep-alive"); + httpGet.addHeader("Cookie","PHPSESSID=b1epvn4gilmvlqd63gb71sgb4m"); +// httpGet.addHeader("Host","www.5577yc.com"); +// httpGet.addHeader("Referer","https://www.5577yc.com/pc/member/index.html"); +// httpGet.addHeader("Sec-Fetch-Mode","cors"); +// httpGet.addHeader("Sec-Fetch-Site","same-origin"); +// httpGet.addHeader("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36"); + httpGet.addHeader("X-Requested-With","XMLHttpRequest"); +// httpGet.addHeader("Org_id", parameter.getOrg_id() + ""); +// httpGet.addHeader("Product_id", parameter.getProduct_id() + ""); +// httpGet.addHeader("Timestamp", parameter.getTimestamp()); +// } + + // 执行请求 + response = httpclient.execute(httpGet); + // 判断返回状态是否为200 + if (response.getStatusLine().getStatusCode() == 200) { + resultString = EntityUtils.toString(response.getEntity(), + "UTF-8"); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (response != null) { + response.close(); + } + httpclient.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return resultString; + } + + public static String doGet5(String url) { + return doGet5(url, null); + + } + /*************************************Get**********************************************/ + + /*************************************Post**********************************************/ + /** + * 原始doPost 基本不用 + * @param url + * @param param + * @param + * @return + */ + public static String doPost(String url, Map param) { + // 创建Httpclient对象 + CloseableHttpClient httpClient = createSSLClientDefault(); + CloseableHttpResponse response = null; + String resultString = ""; + + try { + // 创建Http Post请求 + HttpPost httpPost = new HttpPost(url); + + // 创建参数列表 + if (param != null) { + List paramList = new ArrayList<>(); + for (String key : param.keySet()) { + paramList.add(new BasicNameValuePair(key, param.get(key))); + } + // 模拟表单 + UrlEncodedFormEntity entity = new UrlEncodedFormEntity( + paramList); + httpPost.setEntity(entity); + } + // 执行http请求 + response = httpClient.execute(httpPost); + + + + + resultString = EntityUtils.toString(response.getEntity(), "utf-8"); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + response.close(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + return resultString; + } + + /** + * 项目经常用的doPost2 + * @param url + * @param param + * @param + * @return + */ + public static String doPost2(String url, Map param){ + + // 创建Httpclient对象 + CloseableHttpClient httpClient = createSSLClientDefault(); + CloseableHttpResponse response = null; + String resultString = ""; + + try { + // 创建uri + URIBuilder builder = new URIBuilder(url); + if (param != null) { + for (String key : param.keySet()) { + builder.addParameter(key, param.get(key)); + } + } + URI uri = builder.build(); + // 创建Http Post请求 + HttpPost httpPost = new HttpPost(uri); + httpPost.setHeader("Content-type", "application/x-www-form-urlencoded"); +// httpPost.setHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)"); + // 创建参数列表 + if (param != null) { + List paramList = new ArrayList<>(); + for (String key : param.keySet()) { + paramList.add(new BasicNameValuePair(key, param.get(key))); + } + + // 模拟表单 + UrlEncodedFormEntity entity = new UrlEncodedFormEntity( + paramList,"UTF-8"); + entity.setContentEncoding("UTF-8"); + entity.setContentType("application/x-www-form-urlencoded"); + httpPost.setEntity(entity); + + } + // 执行http请求 + response = httpClient.execute(httpPost); + resultString = EntityUtils.toString(response.getEntity(), "utf-8"); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + response.close(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + return resultString; + } + + /** + * .net登录post + * @param url + * @param param + * @param + * @return + */ + public static String doPost3(String url, Map param){ + + // 创建Httpclient对象 + CloseableHttpClient httpClient = createSSLClientDefault(); + CloseableHttpResponse response = null; + String resultString = ""; + + try { + // 创建uri + URIBuilder builder = new URIBuilder(url); + if (param != null) { + for (String key : param.keySet()) { + builder.addParameter(key, param.get(key)); + } + } + URI uri = builder.build(); + // 创建Http Post请求 + HttpPost httpPost = new HttpPost(uri); + // 创建参数列表 + if (param != null) { + List paramList = new ArrayList<>(); + for (String key : param.keySet()) { + paramList.add(new BasicNameValuePair(key, param.get(key))); + } + // 模拟表单 + UrlEncodedFormEntity entity = new UrlEncodedFormEntity( + paramList, Charset.forName("UTF-8")); + entity.setContentEncoding("UTF-8"); + httpPost.setEntity(entity); + } + // 执行http请求 + response = httpClient.execute(httpPost); + resultString = EntityUtils.toString(response.getEntity(), "utf-8"); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + response.close(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + return resultString; + } + + + + /** + * 微信文件上传 + * @param url + * @param content + * @param fileName + * @return + */ + public static String doPost6(String url, byte[] content,String fileName){ + + String resultString = null; + //创建HttpClient + CloseableHttpClient httpClient = HttpClients.createDefault(); + HttpPost httpPost = new HttpPost(url); + org.apache.http.entity.mime.MultipartEntityBuilder builder = org.apache.http.entity.mime.MultipartEntityBuilder.create(); + /*绑定文件参数,传入文件流和contenttype,此处也可以继续添加其他formdata参数*/ + builder.addBinaryBody("file",content, ContentType.MULTIPART_FORM_DATA,fileName); + HttpEntity entity = builder.build(); + httpPost.setEntity(entity); + HttpResponse response = null; + //执行提交 + try{ + response = httpClient.execute(httpPost); + resultString = EntityUtils.toString(response.getEntity(), "utf-8"); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + HttpClientUtils.closeQuietly(httpClient); + HttpClientUtils.closeQuietly(response); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + return resultString; + } + + + /** + * 微信公众号文件上传 + * @param url + * @param content + * @param fileName + * @return + */ + public static String doPost7(String url, byte[] content,String fileName){ + + String resultString = null; + //创建HttpClient + CloseableHttpClient httpClient = HttpClients.createDefault(); + HttpPost httpPost = new HttpPost(url); + org.apache.http.entity.mime.MultipartEntityBuilder builder = org.apache.http.entity.mime.MultipartEntityBuilder.create(); + /*绑定文件参数,传入文件流和contenttype,此处也可以继续添加其他formdata参数*/ + builder.addBinaryBody("media",content, ContentType.MULTIPART_FORM_DATA,fileName); + HttpEntity entity = builder.build(); + httpPost.setEntity(entity); + HttpResponse response = null; + //执行提交 + try{ + response = httpClient.execute(httpPost); + resultString = EntityUtils.toString(response.getEntity(), "utf-8"); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + HttpClientUtils.closeQuietly(httpClient); + HttpClientUtils.closeQuietly(response); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + return resultString; + } + + /** + * 项目经常用的doPost4 + * @param url + * @param param + * @return + */ + public static String doPost4(String url, Map param){ + + // 创建Httpclient对象 + CloseableHttpClient httpClient = createSSLClientDefault(); + CloseableHttpResponse response = null; + String resultString = ""; + StringBuffer cookie = new StringBuffer(); + Map map = new HashMap<>(); + try { + // 创建uri + URIBuilder builder = new URIBuilder(url); + if (param != null) { + for (String key : param.keySet()) { + builder.addParameter(key, param.get(key)); + } + } + URI uri = builder.build(); + // 创建Http Post请求 + HttpPost httpPost = new HttpPost(uri); + // 创建参数列表 + if (param != null) { + List paramList = new ArrayList<>(); + for (String key : param.keySet()) { + paramList.add(new BasicNameValuePair(key, param.get(key))); + } + httpPost.addHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8"); + // 模拟表单 + UrlEncodedFormEntity entity = new UrlEncodedFormEntity( + paramList, Charset.forName("UTF-8")); + httpPost.setEntity(entity); + } + // 执行http请求 + response = httpClient.execute(httpPost); + resultString = EntityUtils.toString(response.getEntity(), "utf-8"); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + response.close(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + return resultString; + } + + + /** + * 项目经常用的doPost4 + * @param url + * @param param + * @param parameter + * @return + */ + public static String doPost5(String url, Map param,String parameter){ + + // 创建Httpclient对象 + CloseableHttpClient httpClient = createSSLClientDefault(); + CloseableHttpResponse response = null; + String resultString = ""; + StringBuffer cookie = new StringBuffer(); + Map map = new HashMap<>(); + try { + // 创建uri + CookieStore cookieStore = new BasicCookieStore(); + httpClient = HttpClients.custom().setDefaultCookieStore(cookieStore).build(); + URIBuilder builder = new URIBuilder(url); + if (param != null) { + for (String key : param.keySet()) { + builder.addParameter(key, param.get(key)); + } + } + URI uri = builder.build(); + // 创建Http Post请求 + HttpPost httpPost = new HttpPost(uri); + // 创建参数列表 + if (param != null) { + List paramList = new ArrayList<>(); + for (String key : param.keySet()) { + paramList.add(new BasicNameValuePair(key, param.get(key))); + } + httpPost.addHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8"); + httpPost.addHeader("Host","www.www7945.com"); + httpPost.addHeader("Origin","https://www.www7945.com"); + httpPost.addHeader("Referer","https://www.www7945.com/mobile/"); + httpPost.addHeader("User-Agent:","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"); + httpPost.addHeader("Connection","keep-alive"); + // 模拟表单 + UrlEncodedFormEntity entity = new UrlEncodedFormEntity( + paramList, Charset.forName("UTF-8")); + entity.setContentEncoding("UTF-8"); + httpPost.setEntity(entity); + } + if(parameter!=null){ + httpPost.addHeader("Cookie",parameter); + } + // 执行http请求 + response = httpClient.execute(httpPost); + String tokenStr = null; + + if (response != null) { + int statusCode = response.getStatusLine().getStatusCode(); + if (statusCode == HttpStatus.SC_OK) { + // 获得Cookies + List cookies = cookieStore.getCookies(); + for (org.apache.http.cookie.Cookie c : cookies) { + cookie.append(c.getName()).append("=").append(c.getValue()).append(";"); + if (c.getName().contains("token")) { + tokenStr = c.getValue(); + } + } + } + } + map.put("token",tokenStr); + map.put("cookie",cookie.toString()); + resultString = EntityUtils.toString(response.getEntity(), "utf-8"); + map.put("resultString",JSON.parse(resultString)); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + response.close(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + if(parameter!=null){ + return resultString; + } + return JSON.toJSONString(map); + } + + + + public static String doPost5(String url) { + return doPost5(url, null,null); + } + + public static String doPost4(String url) { + return doPost4(url, null); + } + + public static String doPost2(String url) { + return doPost2(url); + } + + + public static String doPost(String url) { + return doPost(url, null); + } + + /** + * 当数据需要以JSON格式传输 + * @param url + * @param json + * @param + * @return + */ + public static String doPostJson(String url, String json) { + // 创建Httpclient对象 + CloseableHttpClient httpClient = createSSLClientDefault(); + CloseableHttpResponse response = null; + String resultString = ""; + try { + // 创建Http Post请求 + HttpPost httpPost = new HttpPost(url); + // 创建请求内容 + StringEntity entity = new StringEntity(json, + ContentType.APPLICATION_JSON); + httpPost.setEntity(entity); + // 执行http请求 + response = httpClient.execute(httpPost); + resultString = EntityUtils.toString(response.getEntity(), "utf-8"); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + response.close(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + return resultString; + } + + + public static String doPostJson3(String url, String json) { + // 创建Httpclient对象 + CloseableHttpClient httpClient = createSSLClientDefault(); + CloseableHttpResponse response = null; + String resultString = ""; + try { + // 创建Http Post请求 + HttpPost httpPost = new HttpPost(url); + // 创建请求内容 + StringEntity entity = new StringEntity(json, + ContentType.APPLICATION_FORM_URLENCODED); + httpPost.setEntity(entity); + // 执行http请求 + response = httpClient.execute(httpPost); + resultString = EntityUtils.toString(response.getEntity(), "utf-8"); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + response.close(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + return resultString; + } + + /** + * 文件上传 + * @param url + * @param json + * @param + * @return + */ + public static String doPostJson2(String url, String json) { + // 创建Httpclient对象 + CloseableHttpClient httpClient = createSSLClientDefault(); + CloseableHttpResponse response = null; + String resultString = ""; + try { + // 创建Http Post请求 + HttpPost httpPost = new HttpPost(url); + // 创建请求内容 + StringEntity entity = new StringEntity(json, + ContentType.APPLICATION_JSON); + httpPost.setEntity(entity); + // 执行http请求 + response = httpClient.execute(httpPost); + resultString = EntityUtils.toString(response.getEntity(), "utf-8"); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + response.close(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + return resultString; + } + + /*************************************Post**********************************************/ + + + + + + + + + /*************************************Delete**********************************************/ + /** + * 原始删除 基本不怎么用 + * @param url + * @return + */ + public static String doDelete(String url) { + // 创建Httpclient对象 + CloseableHttpClient httpClient = createSSLClientDefault(); + CloseableHttpResponse response = null; + String resultString = ""; + + try { + // 创建Http Post请求 + HttpDelete httpPost = new HttpDelete(url); + // 执行http请求 + response = httpClient.execute(httpPost); + resultString = EntityUtils.toString(response.getEntity(), "utf-8"); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + response.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return resultString; + } + + /** + * 常用删除 + * @param url + * @param param + * @param + * @return + */ + public static String doDelete2(String url,Map param) { + // 创建Httpclient对象 + CloseableHttpClient httpClient = createSSLClientDefault(); + CloseableHttpResponse response = null; + String resultString = ""; + + try { + // 创建uri + URIBuilder builder = new URIBuilder(url); + if (param != null) { + for (String key : param.keySet()) { + builder.addParameter(key, param.get(key)); + } + } + URI uri = builder.build(); + // 创建Http Delete请求 + HttpDelete httpDelete = new HttpDelete(uri); + // 执行http请求 + response = httpClient.execute(httpDelete); + resultString = EntityUtils.toString(response.getEntity(), "utf-8"); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + response.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return resultString; + } + + /** + * 上传文件删除 + * @param url + * @param param + * @param + * @return + */ + public static String doDelete3(String url,Map param) { + // 创建Httpclient对象 + CloseableHttpClient httpClient = createSSLClientDefault(); + CloseableHttpResponse response = null; + String resultString = ""; + + try { + // 创建uri + URIBuilder builder = new URIBuilder(url); + if (param != null) { + for (String key : param.keySet()) { + builder.addParameter(key, param.get(key)); + } + } + URI uri = builder.build(); + // 创建Http Delete请求 + HttpDelete httpDelete = new HttpDelete(uri); + // 执行http请求 + response = httpClient.execute(httpDelete); + resultString = EntityUtils.toString(response.getEntity(), "utf-8"); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + response.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return resultString; + } + + /*************************************Delete**********************************************/ + + + + + + + + + + /*************************************Put**********************************************/ + public static String doPut(String url) { + return doPut(url, null); + } + + /** + * 修改 + * @param url + * @param param + * @param + * @return + */ + public static String doPut(String url, Map param) { + // 创建Httpclient对象 + CloseableHttpClient httpClient = createSSLClientDefault(); + CloseableHttpResponse response = null; + String resultString = ""; + + try { + // 创建uri + URIBuilder builder = new URIBuilder(url); + if (param != null) { + for (String key : param.keySet()) { + builder.addParameter(key, param.get(key)); + } + } + URI uri = builder.build(); + // 创建Http Put请求 + HttpPut httpPut = new HttpPut(uri); + // 创建参数列表 + if (param != null) { + List paramList = new ArrayList<>(); + for (String key : param.keySet()) { + paramList.add(new BasicNameValuePair(key, param.get(key))); + } + // 模拟表单 + UrlEncodedFormEntity entity = new UrlEncodedFormEntity( + paramList, Charset.forName("UTF-8"));//Charset.forName("UTF-8")解决乱码 + entity.setContentEncoding("UTF-8"); + httpPut.setEntity(entity); + } + // 执行http请求 + response = httpClient.execute(httpPut); + resultString = EntityUtils.toString(response.getEntity(), "utf-8"); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + response.close(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + return resultString; + } + + /** + * 以JSON格式修改 + * @param url + * @param json + * @param parameter + * @return + */ + public static String doPutJson(String url, String json) { + // 创建Httpclient对象 + CloseableHttpClient httpClient = createSSLClientDefault(); + CloseableHttpResponse response = null; + String resultString = ""; + try { + // 创建Http Post请求 + HttpPut httpPut = new HttpPut(url); + // 创建请求内容 + StringEntity entity = new StringEntity(json, + ContentType.APPLICATION_JSON); + httpPut.setEntity(entity); + // 执行http请求 + response = httpClient.execute(httpPut); + resultString = EntityUtils.toString(response.getEntity(), "utf-8"); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + response.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + return resultString; + } + + + +} + diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/bean/WxQrCodeVo.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/bean/WxQrCodeVo.java new file mode 100644 index 0000000..6a8ef7b --- /dev/null +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/bean/WxQrCodeVo.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.api.bean; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class WxQrCodeVo { + /**图片地址*/ + @ApiModelProperty(value = "图片地址") + private String url; + + @ApiModelProperty(value = "加油站名称") + private String name; +} diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/service/YaoDuApiService.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/service/YaoDuApiService.java index 0867882..3d9ab94 100644 --- a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/service/YaoDuApiService.java +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/service/YaoDuApiService.java @@ -5,8 +5,10 @@ import org.jeecg.common.api.vo.Result; import org.jeecg.modules.api.bean.PageBean; import org.jeecg.modules.citiyShopAuthentication.entity.CitiyShopAuthentication; import org.jeecg.modules.citiyUserAuthentication.entity.CitiyUserAuthentication; +import org.jeecg.modules.cityComment.entity.CityComment; import org.jeecg.modules.cityTrends.entity.CityTrends; import org.jeecg.modules.hanHaiMember.entity.HanHaiMember; +import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestMapping; public interface YaoDuApiService { @@ -76,11 +78,17 @@ public interface YaoDuApiService { //获取评论信息列表 - Result getCommentPage(PageBean pageBean); + Result getCommentPage(String orderId,String type,PageBean pageBean); //获取发布按钮列表 Result getPublishButtonList(); + //获取景点列表带分页 + Result getScenicPage(PageBean pageBean); + + //获取用户列表带分页 + Result getUserPage(PageBean pageBean); + //点击查看联系方式 类型 0帖子 1租房 2工作 3门店 @@ -104,7 +112,26 @@ public interface YaoDuApiService { //企业认证 Result companyAuthentication(String token, CitiyShopAuthentication object); + //我发布的帖子 + Result getMyPostPage(String token,PageBean pageBean); + + //根据帖子标识编辑帖子 + Result editPost(String token, CityTrends bean); + + //根据帖子标识删除帖子 + Result deletePost(String token, String id); + + //获取推广二维码 + Result getQrCode(String token); + + //获取粉丝列表接口 + Result getFansList(String token, PageBean pageBean); + + //发布评论 + Result comment(String token, CityComment cityComment); + //删除评论 + Result deleteComment(String token,String commentId); diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/service/impl/YaoDuApiServiceImpl.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/service/impl/YaoDuApiServiceImpl.java index eca7ee7..bdb6c9c 100644 --- a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/service/impl/YaoDuApiServiceImpl.java +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/service/impl/YaoDuApiServiceImpl.java @@ -1,11 +1,21 @@ package org.jeecg.modules.api.service.impl; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.TypeReference; +import com.aliyun.oss.OSS; +import com.aliyun.oss.OSSClientBuilder; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.commons.fileupload.FileItem; +import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.lang.StringUtils; import org.jeecg.common.api.vo.Result; +import org.jeecg.common.util.RedisUtil; import org.jeecg.config.shiro.ShiroRealm; +import org.jeecg.modules.api.bean.HttpClientUtil; import org.jeecg.modules.api.bean.PageBean; +import org.jeecg.modules.api.bean.WxQrCodeVo; import org.jeecg.modules.api.service.YaoDuApiService; import org.jeecg.modules.citiyClass.entity.CitiyClass; import org.jeecg.modules.citiyClass.service.ICitiyClassService; @@ -22,6 +32,7 @@ import org.jeecg.modules.cityAddr.service.ICityAddrService; import org.jeecg.modules.cityAddressLog.service.ICityAddressLogService; import org.jeecg.modules.cityBanner.entity.CityBanner; import org.jeecg.modules.cityBanner.service.ICityBannerService; +import org.jeecg.modules.cityComment.entity.CityComment; import org.jeecg.modules.cityComment.service.ICityCommentService; import org.jeecg.modules.cityConf.entity.CityConf; import org.jeecg.modules.cityConf.service.ICityConfService; @@ -29,6 +40,8 @@ import org.jeecg.modules.cityHome.entity.CityHome; import org.jeecg.modules.cityHome.service.ICityHomeService; import org.jeecg.modules.cityIcon.entity.CityIcon; import org.jeecg.modules.cityIcon.service.ICityIconService; +import org.jeecg.modules.cityJd.entity.CityJd; +import org.jeecg.modules.cityJd.service.ICityJdService; import org.jeecg.modules.cityJob.entity.CityJob; import org.jeecg.modules.cityJob.service.ICityJobService; import org.jeecg.modules.cityPhoneLog.service.ICityPhoneLogService; @@ -40,9 +53,18 @@ import org.jeecg.modules.hanHaiMember.entity.HanHaiMember; import org.jeecg.modules.hanHaiMember.service.IHanHaiMemberService; import org.jeecg.modules.hanHaiMember.service.impl.HanHaiMemberServiceImpl; import org.jeecg.modules.webCase.entity.WebCase; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.client.RestTemplate; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.commons.CommonsMultipartFile; import javax.annotation.Resource; +import java.io.*; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -107,7 +129,25 @@ public class YaoDuApiServiceImpl implements YaoDuApiService { //获取配置信息 @Resource private ICityConfService cityConfService; - + //获取景点信息 + @Resource + private ICityJdService cityJdService; + @Value("${wechat.mpAppId}") + private String appid; + @Value("${wechat.mpAppSecret}") + private String secret; + @Value("${jeecg.oss.endpoint}") + private String endpoint; + @Value("${jeecg.oss.accessKey}") + private String accessKey; + @Value("${jeecg.oss.secretKey}") + private String secretKey; + @Value("${jeecg.oss.bucketName}") + private String bucketName; + + //缓存 + @Resource + private RedisUtil redisUtil; //获取个人信息接口 @Override @@ -155,12 +195,28 @@ public class YaoDuApiServiceImpl implements YaoDuApiService { map.put("headImage",headImage.getKeyImage()); CityConf name = cityConfService.lambdaQuery().eq(CityConf::getKeyIcon, "name").one(); map.put("name",name.getKeyValue()); + + //获取客服二维码 + CityConf kefu = cityConfService.lambdaQuery().eq(CityConf::getKeyIcon, "kefu").one(); + map.put("kefu",kefu.getKeyImage()); + map.put("details",kefu.getKeyValue()); + //获取所有动态 - Long count = cityTrendsService.lambdaQuery().count(); + Long count = hanHaiMemberService.lambdaQuery().count(); + Long count1 = cityTrendsService.lambdaQuery().count(); map.put("userNum",count); //获取用户人数 - Long count1 = hanHaiMemberService.lambdaQuery().count(); map.put("num",count1); + //租房信息数量 + map.put("homeNum",cityHomeService.lambdaQuery().count()); + //兼职信息数量 + map.put("jobNum",cityJobService.lambdaQuery().count()); + //门店信息数量 + map.put("shopNum",cityShopService.lambdaQuery().count()); + //活动信息数量 + map.put("activityNum",cityActivityService.lambdaQuery().count()); + //景点信息数量 + map.put("jdNum",cityJdService.lambdaQuery().count()); return Result.OK(map); } @@ -312,8 +368,14 @@ public class YaoDuApiServiceImpl implements YaoDuApiService { //获取评论信息列表 @Override - public Result getCommentPage(PageBean pageBean){ - return Result.OK(); + public Result getCommentPage(String orderId,String type,PageBean pageBean){ + Page page = new Page(pageBean.getPageNo(), pageBean.getPageSize()); + Page page1 = cityCommentService + .lambdaQuery() + .eq(CityComment::getOrderId,orderId) + .orderByDesc(CityComment::getCreateTime) + .page(page); + return Result.OK(page1); } @@ -326,6 +388,29 @@ public class YaoDuApiServiceImpl implements YaoDuApiService { return Result.OK(list); } + //获取景点列表带分页 + @Override + public Result getScenicPage(PageBean pageBean){ + Page page = new Page(pageBean.getPageNo(), pageBean.getPageSize()); + Page page1 = cityJdService + .lambdaQuery() + .orderByDesc(CityJd::getCreateTime) + .page(page); + return Result.OK(page1); + + } + + + @Override + public Result getUserPage(PageBean pageBean){ + Page page = new Page(pageBean.getPageNo(), pageBean.getPageSize()); + Page page1 = hanHaiMemberService + .lambdaQuery() + .orderByDesc(HanHaiMember::getCreateTime) + .page(page); + return Result.OK(page1); + } + //点击查看联系方式 类型 0帖子 1租房 2工作 3门店 @Override public Result checkGivePhone(String token,String type, String id){ @@ -358,10 +443,8 @@ public class YaoDuApiServiceImpl implements YaoDuApiService { cityTrends.setCreateTime(new Date()); cityTrends.setSex(hanHaiMember.getSex()); cityTrends.setYearDate(hanHaiMember.getYearDate()); - - - boolean save = cityTrendsService.save(cityTrends); - return Result.OK("发布成功"); + cityTrendsService.saveOrUpdate(cityTrends); + return Result.OK("编辑成功"); } @@ -376,23 +459,318 @@ public class YaoDuApiServiceImpl implements YaoDuApiService { @Override public Result personalAuthentication(String token, CitiyUserAuthentication object){ HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); + //查询该用户是否已有数据 + CitiyUserAuthentication byId = cityUserAuthenticationService. + lambdaQuery() + .eq(CitiyUserAuthentication::getUserId,hanHaiMember.getId()) + .one(); + //有数据不要重复提交 + if(byId!=null){ + return Result.error("请勿重复提交"); + } object.setUserId(hanHaiMember.getId()); object.setCreateTime(new Date()); cityUserAuthenticationService.save(object); - return Result.OK("认证成功"); + //修改用户实名状态 + hanHaiMember.setIdCardOpen(0); + hanHaiMemberService.updateById(hanHaiMember); + return Result.OK("提交成功,等待审核"); } //企业认证 @Override public Result companyAuthentication(String token, CitiyShopAuthentication object){ HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); + //查询该用户是否已有数据 + CitiyShopAuthentication byId = cityShopAuthenticationService. + lambdaQuery() + .eq(CitiyShopAuthentication::getUserId,hanHaiMember.getId()) + .one(); + if(byId!=null){ + return Result.error("请勿重复提交"); + } object.setUserId(hanHaiMember.getId()); object.setCreateTime(new Date()); cityShopAuthenticationService.save(object); - return Result.OK("认证成功"); + //修改用户实名状态 + hanHaiMember.setIdCardOpen(0); + hanHaiMemberService.updateById(hanHaiMember); + return Result.OK("提交成功,等待审核"); + } + + //我发布的帖子 + @Override + public Result getMyPostPage(String token, PageBean pageBean){ + HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); + Page page = new Page(pageBean.getPageNo(), pageBean.getPageSize()); + Page page1 = cityTrendsService + .lambdaQuery() + .eq(CityTrends::getUserId,hanHaiMember.getId()) + .orderByDesc(CityTrends::getCreateTime) + .page(page); + return Result.OK(page1); + } + + + //根据帖子标识编辑帖子 + @Override + public Result editPost(String token, CityTrends bean){ + HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); + //判断标识不能为空 + if(StringUtils.isEmpty(bean.getId())){ + return Result.error("帖子标识不能为空"); + } + bean.setIsState(0); + cityTrendsService.updateById(bean); + return Result.OK("修改成功,等待审核"); } + //根据帖子标识删除帖子 + @Override + public Result deletePost(String token, String id){ + HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); + //判断标识不能为空 + if(StringUtils.isEmpty(id)){ + return Result.error("帖子标识不能为空"); + } + //根据帖子标识查询帖子是否存在 + CityTrends cityTrends = cityTrendsService + .lambdaQuery() + .eq(CityTrends::getUserId,hanHaiMember.getId()) + .eq(CityTrends::getId,id) + .one(); + //不存在则返回 + if(null==cityTrends){ + return Result.error("帖子不存在"); + } + cityTrendsService.removeById(id); + return Result.OK("删除成功"); + } + + + + + //获取推广二维码 + @Override + public Result getQrCode(String token){ + HanHaiMember member = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); + + CityConf vsion = cityConfService.lambdaQuery() + .eq(CityConf::getKeyIcon, "v_sion") + .one(); + Integer vsionStr = Integer.parseInt(vsion.getKeyValue()); + String trial = "release"; + if(vsionStr == 0){ + trial= "release"; + }else if(vsionStr == 1){ + trial= "trial"; + }else{ + trial= "develop"; + } + + WxQrCodeVo o = (WxQrCodeVo)redisUtil.get("CodeImage::" + trial+ member.getId()); + if(o!=null){ + + + o.setName("瑶都万能墙欢迎您的加入"); + return Result.OK(o); + } + + Map param = new HashMap<>(); + + CityConf xcxSharePage = cityConfService.lambdaQuery() + .eq(CityConf::getKeyIcon, "xcxSharePage") + .one(); + + + + + + String key = "shareId=" + member.getId(); + + param.put("path", xcxSharePage.getKeyValue() + "?" + key); //跳转页面 + String accessToken = this.getAccessToken(); + RestTemplate rest = new RestTemplate(); + InputStream inputStream = null; + OutputStream outputStream = null; + File file = null; + +// LambdaQueryWrapper configImg = new LambdaQueryWrapper<>(); +// configImg.eq(DbConf::getIsDel,0).eq(DbConf::getKeyValue,"codeImg"); +// DbConf oneImg = confService.getOne(configImg); + + CityConf oneImage = cityConfService.lambdaQuery() + .eq(CityConf::getKeyIcon, "codeImg") + .one(); + + + + + String codeImg = oneImage.getKeyValue(); + try{ + String url = "https://api.weixin.qq.com/wxa/getwxacode?access_token=" + accessToken; + param.put("scene", member.getId()); + param.put("width", 150); + param.put("auto_color", false); + param.put("env_version", trial); + Map line_color = new HashMap<>(); + line_color.put("r", 0); + line_color.put("g", 0); + line_color.put("b", 0); + param.put("line_color", line_color); + MultiValueMap headers = new LinkedMultiValueMap<>(); + org.springframework.http.HttpEntity requestEntity = new org.springframework.http.HttpEntity(JSON.toJSONString(param), headers); + ResponseEntity entity = rest.exchange(url, HttpMethod.POST, requestEntity, byte[].class, new Object[0]); + byte[] result = entity.getBody(); + + inputStream = new ByteArrayInputStream(result); + String tempSave = codeImg; + String filePath = tempSave; + + file = new File(filePath); + if (!file.exists()) { + file.createNewFile(); + } + outputStream = new FileOutputStream(file); + int len = 0; + byte[] buf = new byte[1024]; + while ((len = inputStream.read(buf, 0, 1024)) != -1) { + outputStream.write(buf, 0, len); + } + outputStream.flush(); + /** + * 将文件上传至阿里云 + */ + DiskFileItemFactory factory = new DiskFileItemFactory(16, null); + FileItem item = factory.createItem("File", "text/plain", true, file.getName()); + int bytesRead = 0; + byte[] buffer = new byte[8192]; + try { + FileInputStream fis = new FileInputStream(file); + OutputStream os = item.getOutputStream(); + while ((bytesRead = fis.read(buffer, 0, 8192)) != -1) { + os.write(buffer, 0, bytesRead); + } + os.close(); + fis.close(); + } catch (IOException e) { + e.printStackTrace(); + } + MultipartFile mf = new CommonsMultipartFile(item); + //返回图片下载地址 + WxQrCodeVo wxCodeVo = new WxQrCodeVo(); + wxCodeVo.setUrl(this.uploadAliYunOss(mf)); + + + + + wxCodeVo.setName("瑶都万能墙欢迎您的加入"); + + redisUtil.set("CodeImage::"+trial+member.getId(),wxCodeVo); + return Result.OK(wxCodeVo); + + } catch (Exception e) { + e.printStackTrace(); + } finally { + + if (inputStream != null) { + try { + inputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (outputStream != null) { + try { + outputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + //删除文件 + if (file.exists()) { + file.delete(); + } + } + return null; + } + + + /** + * 获取令牌 + * + * @return + */ + private String getAccessToken() { + String requestUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "&secret=" + secret; + String doGet2 = HttpClientUtil.doGet2(requestUrl); + Map map = JSON.parseObject(doGet2, new TypeReference>() { + }); + return map.get("access_token"); + } + /** + * 上传文件至阿里云oss + * + * @return + */ + private String uploadAliYunOss(MultipartFile mf) throws Exception { + String uploadFile = "WxCodeFile"; + String fileName = new StringBuffer(mf.getOriginalFilename()).append(".jpg").toString();// 获取文件名 + String dbpath = uploadFile + File.separator + fileName; + if (dbpath.contains("\\")) { + dbpath = dbpath.replace("\\", "/"); + } + String endpoint = this.endpoint; + String accessKey = this.accessKey; + String secretKey = this.secretKey; + // 创建OSSClient实例。 + OSS ossClient = new OSSClientBuilder().build(endpoint, accessKey, secretKey); + // 上传Byte数组。 + byte[] content = mf.getBytes(); + String bucketName = this.bucketName; + ossClient.putObject(bucketName, dbpath, new ByteArrayInputStream(content)); + // 关闭OSSClient。 + ossClient.shutdown(); + return dbpath; + } + + + //获取粉丝列表接口 + public Result getFansList(String token, PageBean pageBean) { + HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); + //根据用户标识查询粉丝列表带分页 + Page page = new Page(pageBean.getPageNo(), pageBean.getPageSize()); + Page page1 = hanHaiMemberService + .lambdaQuery() + .orderByDesc(HanHaiMember::getCreateTime) + .eq(HanHaiMember::getShareId, hanHaiMember.getId()) + .page(page); + return Result.OK(page1); + } + + + //发布评论 + public Result comment(String token,CityComment cityComment) { + HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); + cityComment.setUserId(hanHaiMember.getId()); + cityComment.setUserName(hanHaiMember.getNickName()); + cityComment.setUserHead(hanHaiMember.getHeadImage()); + cityComment.setCreateTime(new Date()); + cityCommentService.save(cityComment); + return Result.OK("评论成功"); + } + + //删除评论 + public Result deleteComment(String token,String id) { + HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); + cityCommentService.lambdaUpdate() + .eq(CityComment::getUserId,hanHaiMember.getId()) + .eq(CityComment::getId,id) + .remove(); + return Result.OK("删除成功"); + } + } diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/yaoduapi/YaoDuApiController.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/yaoduapi/YaoDuApiController.java index a4ae391..f0975b9 100644 --- a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/yaoduapi/YaoDuApiController.java +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/yaoduapi/YaoDuApiController.java @@ -149,4 +149,28 @@ public class YaoDuApiController { return yaoDuApiService.getPublishButtonList(); } + //获取景点列表带分页 + @ApiOperation(value="获取景点列表带分页") + @GetMapping(value = "/getScenicPage") + public Result getScenicPage(PageBean pageBean) { + return yaoDuApiService.getScenicPage(pageBean); + } + + + //获取用户列表带分页 + @ApiOperation(value="获取用户列表带分页") + @GetMapping(value = "/getUserPage") + public Result getUserPage(PageBean pageBean) { + return yaoDuApiService.getUserPage(pageBean); + } + + + //获取评论列表 + @ApiOperation(value="获取评论列表type/0帖子/1租房/2工作/3景点/4美食/5活动") + @GetMapping(value = "/getCommentPage") + public Result getCommentPage(String orderId,String type,PageBean pageBean) { + return yaoDuApiService.getCommentPage(orderId,type,pageBean); + } + + } diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/yaoduapi/YaoDuApiTokenController.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/yaoduapi/YaoDuApiTokenController.java index 2eae558..1c313f0 100644 --- a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/yaoduapi/YaoDuApiTokenController.java +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/yaoduapi/YaoDuApiTokenController.java @@ -4,9 +4,11 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.api.vo.Result; +import org.jeecg.modules.api.bean.PageBean; import org.jeecg.modules.api.service.YaoDuApiService; import org.jeecg.modules.citiyShopAuthentication.entity.CitiyShopAuthentication; import org.jeecg.modules.citiyUserAuthentication.entity.CitiyUserAuthentication; +import org.jeecg.modules.cityComment.entity.CityComment; import org.jeecg.modules.cityTrends.entity.CityTrends; import org.jeecg.modules.hanHaiMember.entity.HanHaiMember; import org.springframework.web.bind.annotation.*; @@ -70,12 +72,12 @@ public class YaoDuApiTokenController { return yaoDuApiService.publishPost(token,cityTrends); } - //评论 - @PostMapping(value = "/comment") - @ApiOperation(value="评论") - public Result comment(@RequestHeader("X-Access-Token") String token,String postId,String content) { - return yaoDuApiService.comment(token,postId,content); - } +// //评论 +// @PostMapping(value = "/comment") +// @ApiOperation(value="评论") +// public Result comment(@RequestHeader("X-Access-Token") String token,String postId,String content) { +// return yaoDuApiService.comment(token,postId,content); +// } //个人认证 @PostMapping(value = "/personalAuthentication") @@ -92,6 +94,59 @@ public class YaoDuApiTokenController { } + //我发布的帖子 + @GetMapping(value = "/getMyPostPage") + @ApiOperation(value="我发布的帖子") + public Result getMyPostPage(@RequestHeader("X-Access-Token") String token, PageBean pageBean) { + return yaoDuApiService.getMyPostPage(token,pageBean); + } + + +// //根据帖子标识编辑帖子 +// @ApiOperation(value="根据帖子标识编辑帖子") +// @PostMapping(value = "/editPost") +// public Result editPost(@RequestHeader("X-Access-Token") String token, CityTrends bean) { +// return yaoDuApiService.editPost(token, bean); +// } + + + //根据帖子标识删除帖子 + @ApiOperation(value="根据帖子标识删除帖子") + @PostMapping(value = "/deletePost") + public Result deletePost(@RequestHeader("X-Access-Token") String token, String postId) { + return yaoDuApiService.deletePost(token, postId); + } + + //获取推广二维码 + @GetMapping(value = "/getQrCode") + @ApiOperation(value="获取推广二维码", notes="获取推广二维码") + public Result getQrCode(@RequestHeader("X-Access-Token") String token){ + return yaoDuApiService.getQrCode(token); + } + + + //获取粉丝列表接口 + @ApiOperation(value="获取粉丝列表接口", notes="获取粉丝列表接口") + @GetMapping("/getFansList") + public Result getFansList(@RequestHeader("X-Access-Token") String token, PageBean pageBean) + { + return yaoDuApiService.getFansList(token,pageBean); + } + + //发布评论 + @ApiOperation(value="发布评论") + @PostMapping("/addComment") + public Result addComment(@RequestHeader("X-Access-Token") String token, CityComment cityComment) { + return yaoDuApiService.comment(token,cityComment); + } + + //删除评论 + @ApiOperation(value="删除评论") + @PostMapping("/deleteComment") + public Result deleteComment(@RequestHeader("X-Access-Token") String token,String commentId) { + return yaoDuApiService.deleteComment(token,commentId); + } + }