commit 6e08af9959e144df39036223558dd2fa1b0e59a0 Author: 谢洪龙 <599179587@qq.com> Date: Mon Jul 10 11:41:07 2017 +0800 初始化 diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..a25cb9e --- /dev/null +++ b/.classpath @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9f97022 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +target/ \ No newline at end of file diff --git a/.project b/.project new file mode 100644 index 0000000..fd7063b --- /dev/null +++ b/.project @@ -0,0 +1,47 @@ + + + ifish + + + + + + org.eclipse.wst.jsdt.core.javascriptValidator + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.ui.externaltools.ExternalToolBuilder + full,incremental, + + + LaunchConfigHandle + <project>/.externalToolBuilders/org.eclipse.wst.validation.validationbuilder.launch + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + org.eclipse.wst.common.project.facet.core.nature + org.eclipse.wst.jsdt.core.jsNature + + diff --git a/nb-configuration.xml b/nb-configuration.xml new file mode 100644 index 0000000..d8d4a97 --- /dev/null +++ b/nb-configuration.xml @@ -0,0 +1,24 @@ + + + + + + Tomcat + + + + src/main/resources/redis-config.xml + + + + diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..5ac5917 --- /dev/null +++ b/pom.xml @@ -0,0 +1,299 @@ + + 4.0.0 + ifish + ifish + war + 0.0.1-SNAPSHOT + ifish Maven Webapp + http://mvnrepository.com + + + + org.springframework + spring-core + 4.3.8.RELEASE + jar + + + + org.springframework + spring-context + 4.1.6.RELEASE + + + + org.springframework + spring-orm + 4.1.6.RELEASE + + + + org.aspectj + aspectjweaver + 1.8.5 + + + + org.springframework + spring-webmvc + 4.1.6.RELEASE + + + + org.springframework + spring-context-support + 4.1.6.RELEASE + + + + + + redis.clients + jedis + 2.9.0 + + + + org.hibernate + hibernate-core + 4.3.11.Final + + + + org.jboss.logging + jboss-logging-annotations + 2.0.1.Final + + + + commons-fileupload + commons-fileupload + 1.3.1 + + + + c3p0 + c3p0 + 0.9.1.2 + + + + org.apache.commons + commons-lang3 + 3.5 + + + + com.fasterxml.jackson.core + jackson-core + 2.5.3 + + + + org.codehaus.jackson + jackson-mapper-asl + 1.9.13 + + + + com.fasterxml.jackson.core + jackson-databind + 2.5.3 + + + + org.slf4j + slf4j-api + 1.7.12 + + + + ch.qos.logback + logback-core + 1.1.2 + + + + ch.qos.logback + logback-classic + 1.1.2 + + + + org.apache.mina + mina-core + 2.0.7 + + + + javax.servlet + servlet-api + 3.0-alpha-1 + + + + jstl + jstl + 1.2 + + + + org.apache.httpcomponents + httpclient + 4.3.5 + + + + javax.mail + mail + 1.4.7 + + + + com.alibaba + fastjson + 1.2.28 + + + + net.sf.ehcache + ehcache + 2.10.3 + + + + javax.validation + validation-api + 1.1.0.Final + + + + org.hibernate + hibernate-validator + 5.2.4.Final + + + + junit + junit + 4.12 + test + + + + org.springframework + spring-test + 4.1.6.RELEASE + test + + + com + taobao-sdk + 1.0 + system + ${basedir}/src/main/webapp/WEB-INF/lib/taobao-sdk-java-auto_1444640346387-20151013.jar + + + org.mybatis + mybatis + 3.4.4 + + + + org.mybatis + mybatis-spring + 1.3.1 + + + org.csource + fastdfs-client-java + 1.25 + system + ${basedir}/src/main/webapp/WEB-INF/lib/fastdfs-client-java-1.25.jar + + + org.apache.maven.plugins + maven-resources-plugin + 2.5 + jar + + + log4j + log4j + 1.2.17 + jar + + + org.springframework.data + spring-data-redis + 1.7.1.RELEASE + jar + + + + ifish + + + org.apache.maven.plugins + maven-war-plugin + 2.4 + + + + src/main/webapp + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.5.1 + + 1.7 + 1.7 + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.19.1 + + true + + + + + + src/main/java + + **/*.hbm.xml + + + + src/main/resources + + **/*.xml + **/*.properties + **/*.conf + + + + + + + UTF-8 + + + diff --git a/src/main/java/com/ifish/action/AdInfoAction.java b/src/main/java/com/ifish/action/AdInfoAction.java new file mode 100644 index 0000000..a91d62e --- /dev/null +++ b/src/main/java/com/ifish/action/AdInfoAction.java @@ -0,0 +1,55 @@ +package com.ifish.action; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import com.ifish.dto.JsonResult; +import com.ifish.enums.AdTypeEnum; +import com.ifish.enums.ResultEnum; +import com.ifish.exception.IfishException; +import com.ifish.service.AdInfoService; + +/** + * 广告信息 + * + * @author Administrator + * + */ +@Controller +@RequestMapping(value = "/adInfos") +@ResponseBody +public class AdInfoAction { + + @Autowired + private AdInfoService adInfoService; + + /** + * 根据类型获取广告信息 + * + * @param adType + * @return + */ + @RequestMapping(value = "/type/{adType}", method = RequestMethod.GET) + public JsonResult getAdInfosByType(@PathVariable("adType") int adType) { + //校验类型 + AdTypeEnum adTypeEnum = AdTypeEnum.getAdTypeEnum(adType); + if (adTypeEnum == null) { + throw new IfishException(ResultEnum.error401); + } + return adInfoService.getAdInfosByType(adTypeEnum); + } + + /** + * 获取广告信息表最大ID + * + * @return + */ + @RequestMapping(value = "getMaxInfo", method = RequestMethod.GET) + public JsonResult getMaxInfo() { + return adInfoService.getMaxInfo(); + } +} diff --git a/src/main/java/com/ifish/action/CommodityAction.java b/src/main/java/com/ifish/action/CommodityAction.java new file mode 100644 index 0000000..3e9d9ca --- /dev/null +++ b/src/main/java/com/ifish/action/CommodityAction.java @@ -0,0 +1,97 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.action; + +import com.ifish.bean.CommodityInfoBean; +import com.ifish.dto.JsonResult; +import com.ifish.dto.PageingDto; +import com.ifish.enums.ResultEnum; +import com.ifish.exception.IfishException; +import com.ifish.helper.CommodityInfoHelperI; +import com.ifish.helper.RedisHelperI; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +/** + * + * @author Administrator + */ +@RestController +public class CommodityAction { + + @Autowired + private CommodityInfoHelperI commodityInfoHelperI; + + /** + * 创建商品 + * + * @param commodityInfoBean + * @return + */ + @RequestMapping(value = "/createCommodity", method = RequestMethod.POST) + public JsonResult createCommodityInfo(CommodityInfoBean commodityInfoBean, MultipartFile img, MultipartFile video) { + return commodityInfoHelperI.createCommodityInfo(commodityInfoBean, img, video); + } + + /** + * 修改商品 + * + * @param commodityInfoBean + * @return + */ + @RequestMapping(value = "/updateCommodity", method = RequestMethod.POST) + public JsonResult updateCommodityInfo(CommodityInfoBean commodityInfoBean) { + return commodityInfoHelperI.updateCommodityInfo(commodityInfoBean); + } + + /** + * 根据商品ID查询商品详情 + * + * @param commodityId + * @return + */ + @RequestMapping(value = "/getCommodityById", method = RequestMethod.GET) + public JsonResult getCommodityInfo(Integer commodityId) { + return commodityInfoHelperI.getCommodityInfo(commodityId); + } + + /** + * 根据店铺ID分页获取商品列表 + * + * @param pageSize + * @param firstResult + * @param shopId + * @param commodityState + * @return + */ + @RequestMapping(value = "/getCommodityInfoByPage", method = RequestMethod.GET) + public PageingDto getCommodityInfoByPage(Integer pageSize, Integer firstResult, Integer shopId, Integer commodityState, String orderBy) { + //参数校验 + if (firstResult < 0 || (pageSize < 1 || pageSize > 20)) { + throw new IfishException(ResultEnum.error401); + } + if (commodityState == null) { + commodityState = 1; + } + return commodityInfoHelperI.getCommodityInfoByPage(pageSize, firstResult, shopId, commodityState, orderBy); + } + + /** + * 删除商品 + * + * @param commodityId + * @return + */ + @RequestMapping(value = "/deleteCommodityById", method = RequestMethod.POST) + public JsonResult deleteCommodityInfo(Integer commodityId) { + return commodityInfoHelperI.deleteCommodityInfo(commodityId); + } +} diff --git a/src/main/java/com/ifish/action/CouponAction.java b/src/main/java/com/ifish/action/CouponAction.java new file mode 100644 index 0000000..3496e5a --- /dev/null +++ b/src/main/java/com/ifish/action/CouponAction.java @@ -0,0 +1,63 @@ +package com.ifish.action; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import com.ifish.dto.JsonResult; +import com.ifish.dto.PageingDto; +import com.ifish.enums.ResultEnum; +import com.ifish.exception.IfishException; +import com.ifish.service.CouponService; +import com.ifish.validator.PageParam; + +/** + * 优惠券 + * @author Administrator + * + */ +@RestController +public class CouponAction { + + @Autowired + private CouponService couponService; + + /** + * 获取所有有效优惠券 + * @return + */ + @RequestMapping(value="/validatingCoupons",method=RequestMethod.GET) + public JsonResult getAllValidCoupon(){ + return couponService.getAllValidCoupon(); + } + + /** + * 兑换优惠券 + * @param userId + * @param couponId + * @return + */ + @RequestMapping(value="/exchangeCoupon/{userId}/{couponId}",method=RequestMethod.POST)// + public JsonResult exchangeCoupon(@PathVariable("userId")Integer userId,@PathVariable("couponId")Integer couponId){ + return couponService.exchangeCoupon(userId, couponId); + } + + /** + * 分页获取兑换记录 + * @param param + * @return + */ + @RequestMapping(value="/couponRecords",method=RequestMethod.GET) + public PageingDto getCouponRecordByPage(@Validated PageParam param,BindingResult result){ + //参数校验 + if(result.hasErrors()){ + throw new IfishException(ResultEnum.error401); + } + return couponService.getCouponRecordByPage(param); + } + +} diff --git a/src/main/java/com/ifish/action/FileAction.java b/src/main/java/com/ifish/action/FileAction.java new file mode 100644 index 0000000..865cab1 --- /dev/null +++ b/src/main/java/com/ifish/action/FileAction.java @@ -0,0 +1,32 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.action; + +import com.ifish.helper.FastDFSClientI; +import java.io.IOException; +import javax.servlet.http.HttpServletRequest; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +/** + * + * @author Administrator + */ +@RestController +@RequestMapping("/file") +public class FileAction { + + @Autowired + private FastDFSClientI fastDFSClientI; + + @RequestMapping(value = "/fileupload", method = RequestMethod.POST) + public Object testfile(MultipartFile uploadFile, HttpServletRequest request) throws IOException { + return fastDFSClientI.uploadFileToFastDFS(uploadFile); + } +} diff --git a/src/main/java/com/ifish/action/GoldAction.java b/src/main/java/com/ifish/action/GoldAction.java new file mode 100644 index 0000000..b6ffdbf --- /dev/null +++ b/src/main/java/com/ifish/action/GoldAction.java @@ -0,0 +1,109 @@ +package com.ifish.action; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.validation.BindingResult; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import com.ifish.dto.JsonResult; +import com.ifish.enums.ResultEnum; +import com.ifish.exception.IfishException; +import com.ifish.service.GoldService; +import com.ifish.validator.AddValueParam; +import com.ifish.validator.PageParam; + +/** + * 金币 + * @author Administrator + * + */ +@Controller +@RequestMapping("/gold") +@ResponseBody +public class GoldAction { + + @Autowired + private GoldService goldService; + + /** + * 新增金币 + * @param addValueParam + * @param result + * @return + */ + @RequestMapping(value="/goldValue.do",method=RequestMethod.POST) + public Object addGoldValue(@Validated AddValueParam addValueParam,BindingResult result) { + //参数校验 + if(result.hasErrors()){ + throw new IfishException(ResultEnum.error401); + } + return goldService.addGoldValue(addValueParam); + } + + /** + * 分页金币获取记录 + * @param pageParam + * @param result + * @return + */ + @RequestMapping(value="/goldGetRecord.do",method=RequestMethod.GET) + public Object getGoldGetRecordByPage(@Validated PageParam pageParam,BindingResult result){ + //参数校验 + if(result.hasErrors()){ + throw new IfishException(ResultEnum.error401); + } + return goldService.getGoldGetRecordByPage(pageParam); + } + + /** + * 分页金币消耗记录 + * @param pageParam + * @param result + * @return + */ + @RequestMapping(value="/goldExpendRecord.do",method=RequestMethod.GET) + public Object getGoldExpendRecordByPage(@Validated PageParam pageParam,BindingResult result){ + //参数校验 + if(result.hasErrors()){ + throw new IfishException(ResultEnum.error401); + } + return goldService.getGoldExpendRecordByPage(pageParam); + } + + /** + * 签到 + * @param userId + * @return + */ + @RequestMapping(value="/signin.do",method=RequestMethod.POST) + public Object signin(@RequestParam Integer userId) { + return goldService.signin(userId); + } + + /** + * 砸金蛋 + * @param userId + * @return + */ + @RequestMapping(value="/hitGoldenEgg.do",method=RequestMethod.POST) + public Object hitGoldenEgg(@RequestParam Integer userId){ + return goldService.hitGoldenEgg(userId); + } + + /** + * 爱鱼看看金币打赏 + * @param userId 打赏人用户ID + * @param userId2 被打赏人用户ID + * @return + */ + @RequestMapping(value="/liveRoomReward/{userId}/{userId2}",method=RequestMethod.POST) + public JsonResult liveRoomReward(@PathVariable("userId")Integer userId,@PathVariable("userId2")Integer userId2){ + return goldService.liveRoomReward(userId, userId2); + } + +} diff --git a/src/main/java/com/ifish/action/GradeAction.java b/src/main/java/com/ifish/action/GradeAction.java new file mode 100644 index 0000000..287fca4 --- /dev/null +++ b/src/main/java/com/ifish/action/GradeAction.java @@ -0,0 +1,71 @@ +package com.ifish.action; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.validation.BindingResult; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import com.ifish.enums.ResultEnum; +import com.ifish.exception.IfishException; +import com.ifish.service.GradeService; +import com.ifish.validator.AddValueParam; +import com.ifish.validator.PageParam; + +/** + * 等级 + * @author Administrator + * + */ +@Controller +@RequestMapping("/grade") +@ResponseBody +public class GradeAction { + + @Autowired + private GradeService gradeService; + + /** + * 新增经验值 + * @param addValueParam + * @param result + * @return + */ + @RequestMapping(value="/gradeValue.do",method=RequestMethod.POST) + public Object addGradeValue(@Validated AddValueParam addValueParam,BindingResult result) { + //参数校验 + if(result.hasErrors()){ + throw new IfishException(ResultEnum.error401); + } + return this.gradeService.addGradeValue(addValueParam); + } + + /** + * 获取规则等级信息 + * @param version + * @return + */ + @RequestMapping(value="/gradeRuleInfo.do",method=RequestMethod.GET) + public Object gradeRuleInfo(@RequestParam Integer userId){ + return this.gradeService.getGradeRuleInfo(userId); + } + + /** + * 分页经验值获取记录 + * @param pageParam + * @param result + * @return + */ + @RequestMapping(value="/gradeRecord.do",method=RequestMethod.GET) + public Object getGradeRecordByPage(@Validated PageParam pageParam,BindingResult result){ + //参数校验 + if(result.hasErrors()){ + throw new IfishException(ResultEnum.error401); + } + return this.gradeService.getGradeRecordByPage(pageParam); + } + +} \ No newline at end of file diff --git a/src/main/java/com/ifish/action/IfishDoctorAction.java b/src/main/java/com/ifish/action/IfishDoctorAction.java new file mode 100644 index 0000000..e449a75 --- /dev/null +++ b/src/main/java/com/ifish/action/IfishDoctorAction.java @@ -0,0 +1,54 @@ +package com.ifish.action; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.validation.BindingResult; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import com.ifish.dto.JsonResult; +import com.ifish.entity.IfishDoctor; +import com.ifish.enums.ResultEnum; +import com.ifish.exception.IfishException; +import com.ifish.service.IfishDoctorService; + +/** + * + * @author ggw + * + */ +@Controller +@RequestMapping("/ifishDoctor") +@ResponseBody +public class IfishDoctorAction { + + @Autowired + private IfishDoctorService ifishDoctorService; + + /** + * 提交问题 + * @param ifishDoctor + * @return + */ + @RequestMapping(value="/v3/saveIfishDoctor.do",method=RequestMethod.POST) + public Object saveIfishDoctor(IfishDoctor ifishDoctor) { + return ifishDoctorService.saveIfishDoctor(ifishDoctor); + } + + /** + * 金币打赏提交问题 + * @param ifishDoctor + * @param result + * @return + */ + @RequestMapping(value="/payTourQuestion",method=RequestMethod.POST) + public JsonResult payTourSubmitQuestion(String payTourType,@Validated IfishDoctor ifishDoctor,BindingResult result){ + if(result.hasErrors()){ + throw new IfishException(ResultEnum.error401); + } + return ifishDoctorService.payTourSubmitQuestion(ifishDoctor,payTourType); + } + +} \ No newline at end of file diff --git a/src/main/java/com/ifish/action/IfishGoodsAction.java b/src/main/java/com/ifish/action/IfishGoodsAction.java new file mode 100644 index 0000000..610989b --- /dev/null +++ b/src/main/java/com/ifish/action/IfishGoodsAction.java @@ -0,0 +1,51 @@ +package com.ifish.action; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import com.ifish.dto.JsonResult; +import com.ifish.enums.IfishShopPlaceEnum; +import com.ifish.enums.ResultEnum; +import com.ifish.exception.IfishException; +import com.ifish.service.IfishGoodsService; + +/** + * 商品信息Controller + * @author Administrator + * + */ +@RestController +public class IfishGoodsAction { + + @Autowired + private IfishGoodsService ifishGoodsService; + + /** + * 根据位置获取商品信息 + * @param goodsPlace + * @return + */ + @RequestMapping(value="/ifishGoods/type/{goodsType}",method=RequestMethod.GET) + public JsonResult getIfishGoodsByGoodsPlace(@PathVariable("goodsType") Integer goodsPlace){ + //校验类型 + IfishShopPlaceEnum shopPlaceEnum = IfishShopPlaceEnum.getAdTypeEnum(goodsPlace); + if(shopPlaceEnum==null){ + throw new IfishException(ResultEnum.error401); + } + return ifishGoodsService.getIfishGoodsByGoodsPlace(shopPlaceEnum); + } + + /** + * 增加商品点击数 + * @param goodsId + * @return + */ + @RequestMapping(value="/ifishGoods/{goodsId}/additionClickNum",method=RequestMethod.POST) + public JsonResult addClickNum(@PathVariable("goodsId") Integer goodsId){ + return ifishGoodsService.addClickNum(goodsId); + } + +} diff --git a/src/main/java/com/ifish/action/InformationAction.java b/src/main/java/com/ifish/action/InformationAction.java new file mode 100644 index 0000000..f24c492 --- /dev/null +++ b/src/main/java/com/ifish/action/InformationAction.java @@ -0,0 +1,76 @@ +package com.ifish.action; + +import javax.servlet.http.HttpServletResponse; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.validation.BindingResult; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import com.ifish.dto.JsonResult; +import com.ifish.dto.PageingDto; +import com.ifish.entity.Comment; +import com.ifish.enums.ResultEnum; +import com.ifish.exception.IfishException; +import com.ifish.service.InformationService; +import com.ifish.validator.PageParam; + + +@Controller +@ResponseBody +public class InformationAction { + @Autowired + private InformationService informationService; + + /** + * 获取用户评论 + * @param comment + * @return + */ + @RequestMapping(value="/information/v3/findCommentsByUeditorId.do",method=RequestMethod.POST) + public Object findCommentsByUeditorId(Integer ueditorId,Integer firstResult,Integer pageSize,HttpServletResponse response){ + response.setHeader("Access-Control-Allow-Origin", "*"); + return informationService.findCommentsByUeditorId(ueditorId, firstResult, pageSize); + } + + /** + * 保存评论 + * @param comment + * @return + */ + @RequestMapping(value="/information/v3/saveComment.do",method=RequestMethod.POST) + public Object saveComment(Comment comment,HttpServletResponse response){ + response.setHeader("Access-Control-Allow-Origin", "*"); + return informationService.saveComment(comment); + } + + /** + * 分页获取资讯 + * @param pageParam + * @param result + * @return + */ + @RequestMapping(value="/informations",method=RequestMethod.GET) + public PageingDto getInformationsByPage(@Validated PageParam pageParam,BindingResult result){ + //参数校验 + if(result.hasErrors()){ + throw new IfishException(ResultEnum.error401); + } + return informationService.getInformationsByPage(pageParam); + } + + /** + * 增加点击数 + * @param infoId + * @return + */ + @RequestMapping(value="/informations/{infoId}/additionClickNum",method=RequestMethod.POST) + public JsonResult addClickNum(@PathVariable("infoId") Integer infoId){ + return informationService.addClickNum(infoId); + } + +} \ No newline at end of file diff --git a/src/main/java/com/ifish/action/LiveRoomAction.java b/src/main/java/com/ifish/action/LiveRoomAction.java new file mode 100644 index 0000000..1d0d209 --- /dev/null +++ b/src/main/java/com/ifish/action/LiveRoomAction.java @@ -0,0 +1,209 @@ +package com.ifish.action; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import com.alibaba.fastjson.JSONObject; +import com.ifish.dto.JsonResult; +import com.ifish.dto.PageingDto; +import com.ifish.entity.LiveBanner; +import com.ifish.entity.LiveMessage; +import com.ifish.enums.LiveRoomOrderTypeEnum; +import com.ifish.enums.ResultEnum; +import com.ifish.enums.SubDirectoryEnum; +import com.ifish.exception.IfishException; +import com.ifish.service.LiveRoomService; +import com.ifish.util.IfishFilePath; +import com.ifish.util.IfishFileUtils; +import com.ifish.util.IfishUtil; +import com.ifish.util.ResultUtil; +import com.ifish.validator.LiveRoomParam; +import com.ifish.validator.PageParam; + +/** + * + * @author ggw + * + */ +@RestController +public class LiveRoomAction { + @Autowired + private LiveRoomService liveRoomService; + + /** + * 新增直播间 + * @param liveRoom + * @param fileUpload + * @return + */ + @RequestMapping(value="/liveRoom/v3/addLiveRoom.do",method=RequestMethod.POST) + public JsonResult addLiveRoom(MultipartFile fileUpload,LiveRoomParam liveRoomParam,BindingResult result){ + //校验参数 + if(result.hasErrors() || fileUpload==null){ + throw new IfishException(ResultEnum.error401); + } + //上传封面不能大于1M + if(fileUpload.getSize()>1048576){ + throw new IfishException(ResultEnum.warn206); + } + //新增直播间 + JSONObject json = liveRoomService.addLiveRoom(liveRoomParam); + //图片名称 + String picName = json.getInteger("roomId")+".png"; + try { + //上传文件 + IfishFileUtils.uploadFile(IfishFilePath.path_room_img, picName, fileUpload); + } catch (Exception e) { + throw new RuntimeException(e); + } + return ResultUtil.success(json); + } + /** + * 修改直播间 + * @param liveRoom + * @param fileUpload + * @return + */ + @RequestMapping(value="/liveRoom/v3/updateLiveRoom.do",method=RequestMethod.POST) + public JsonResult updateLiveRoom(MultipartFile fileUpload,@RequestParam("roomId")Integer roomId,LiveRoomParam liveRoomParam,BindingResult result){ + //校验参数 + if(result.hasErrors()){ + throw new IfishException(ResultEnum.error401); + } + //上传的图片不能大于1M + if(fileUpload!=null && fileUpload.getSize()>1048576){ + throw new IfishException(ResultEnum.warn206); + } + //更新 + JsonResult jsonResult = liveRoomService.updateLiveRoom(roomId,liveRoomParam); + //更新文件 + if(fileUpload!=null){ + //图片名称 + String picName = roomId+".png"; + try { + //上传文件 + IfishFileUtils.uploadFile(IfishFilePath.path_room_img, picName, fileUpload); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + return jsonResult; + } + + /** + * 直播间人气加一 + * @param roomId + * @return + */ + @RequestMapping(value="/liveRoom/v3/popularityValue.do",method=RequestMethod.POST) + public Object popularityValue(Integer roomId,Integer userId){ + return liveRoomService.popularityValue(roomId,userId); + } + + /** + * 获取直播间信息(修改直播间信息) + * @param roomId + * @return + */ + @RequestMapping(value="/liveRoom/v3/getLiveRoomInfo.do",method=RequestMethod.POST) + public Object getLiveRoomInfo(Integer userId){ + return liveRoomService.getLiveRoomInfo(userId); + } + + /** + * 获取直播列表 + * @param firstResult + * @param pageSize + * @return + */ + @RequestMapping(value="/liveRoom/v3/getLiveRooms.do",method=RequestMethod.POST) + public Object popularityValue(Integer firstResult,Integer pageSize,Integer userId,String orders){ + return liveRoomService.getLiveRoomsByPage(firstResult, pageSize,userId,orders); + } + + /** + * 获取直播banner图 + * @return + */ + @RequestMapping(value="/liveRoom/v3/getLiveBanners.do",method=RequestMethod.POST) + public Object getLiveBanners(){ + List list = liveRoomService.getLiveBanners(); + if(list!=null){ + for (LiveBanner liveBanner : list) { + liveBanner.setBannerImg(IfishFilePath.getPath(SubDirectoryEnum.banner,liveBanner.getBannerImg())); + } + return IfishUtil.toJson(ResultEnum.success.getKey(), list); + } + return IfishUtil.toJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 直播间留言 + * @param liveMessage + * @return + */ + @RequestMapping(value="/liveRoom/v3/leaveMessage.do",method=RequestMethod.POST) + public Object leaveMessage(LiveMessage liveMessage){ + return liveRoomService.leaveMessage(liveMessage); + } + + /** + * 留言列表 + * @param liveMessage + * @return + */ + @RequestMapping(value="/liveRoom/v3/getLiveMessage.do",method=RequestMethod.POST) + public Object getLiveMessageByPage(Integer roomId,Integer firstResult,Integer pageSize){ + return liveRoomService.getLiveMessageByPage(firstResult, pageSize, roomId); + } + + /** + * 按类型分页获取直播间信息 + * @param pageParam + * @param result + * @return + */ + @RequestMapping(value="/liveRooms",method=RequestMethod.GET) + public PageingDto getLiveRoomByPate(@RequestParam("orderType") Integer orderType,@Validated PageParam pageParam,BindingResult result){ + //参数校验 + if(result.hasErrors()){ + throw new IfishException(ResultEnum.error401); + } + //按时间倒序 + if(LiveRoomOrderTypeEnum.one.getKey().equals(orderType)){ + return liveRoomService.getLiveRoomsByTime(pageParam); + } + //人气值倒序 + else if(LiveRoomOrderTypeEnum.two.getKey().equals(orderType)){ + return liveRoomService.getLiveRoomsByPopularityValue(pageParam); + } + //后台推荐顺序倒序 + else if(LiveRoomOrderTypeEnum.three.getKey().equals(orderType)){ + return liveRoomService.getLiveRoomsByTuijian(pageParam); + } + else{ + throw new IfishException(ResultEnum.error402); + } + } + + /** + * 直播间点赞 + * @param roomId + * @param userId + * @return + */ + @RequestMapping(value="/liveRoomZan/{roomId}/{userId}",method=RequestMethod.POST) + public JsonResult liveRoomsZan(@PathVariable("roomId")Integer roomId,@PathVariable("userId")Integer userId){ + return liveRoomService.liveRoomsZan(roomId, userId); + } + +} diff --git a/src/main/java/com/ifish/action/PageListAction.java b/src/main/java/com/ifish/action/PageListAction.java new file mode 100644 index 0000000..53881ff --- /dev/null +++ b/src/main/java/com/ifish/action/PageListAction.java @@ -0,0 +1,85 @@ +package com.ifish.action; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import com.ifish.dto.ShopsLookUserDto; +import com.ifish.entity.PushList; +import com.ifish.hibernate.Pagination; +import com.ifish.service.PageListService; +import com.ifish.util.IfishUtil; + +/** + * @ClassName: PageListAction + * @Description: TODO + * @author ggw + */ +@Controller +@RequestMapping("/pageList") +public class PageListAction { + + @Autowired + private PageListService pageListService; + + private static Logger log = LoggerFactory.getLogger(PageListAction.class); + + /** + * 推送信息列表 + * + * @param createDate + * @param userId + * @param firstResult + * @param pageSize + * @return + */ + @RequestMapping("/pushListInf.do") + @ResponseBody + public Object pushListInf(Integer pushId, Integer userId, Integer firstResult, Integer pageSize) { + try { + if (firstResult == null) { + firstResult = 0; + } + if (pageSize == null) { + pageSize = 10; + } + Pagination page = this.pageListService.getPushListByPage(pushId, userId, firstResult, pageSize); + return IfishUtil.returnPageData(page); + } catch (Exception e) { + log.error("get pushListInf page information:error message:{}", e.toString()); + } + return null; + } + + /** + * 看护工作台 + * + * @param createDate + * @param userId + * @param firstResult + * @param pageSize + * @return + */ + @RequestMapping("/lookList.do") + @ResponseBody + public Object lookList(Integer shopsUserId, Integer firstResult, Integer pageSize) { + try { + if (firstResult == null) { + firstResult = 0; + } + if (pageSize == null) { + pageSize = 10; + } + Pagination page = this.pageListService.getLookListByPage(shopsUserId, firstResult, pageSize); + return IfishUtil.returnPageData(page); + } catch (Exception e) { + e.printStackTrace(); + log.error("lookList:error message:{}", e.toString()); + } + return null; + } + +} diff --git a/src/main/java/com/ifish/action/ShopsAction.java b/src/main/java/com/ifish/action/ShopsAction.java new file mode 100644 index 0000000..e6d344d --- /dev/null +++ b/src/main/java/com/ifish/action/ShopsAction.java @@ -0,0 +1,194 @@ +package com.ifish.action; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import com.ifish.dto.JsonResult; +import com.ifish.dto.PageingDto; +import com.ifish.entity.ShopsInfo; +import com.ifish.enums.ResultEnum; +import com.ifish.exception.IfishException; +import com.ifish.service.ShopsService; +import com.ifish.util.IfishUtil; +import com.ifish.validator.PageParam; +import com.ifish.validator.ShopsUserInfoParam; + +/** + * + * @author ggw + * + */ +@RestController +public class ShopsAction { + + @Autowired + private ShopsService shopsService; + + /** + * 保存商户信息 + * @param shopsInfo + * @param file1 + * @param file2 + * @param file3 + * @return + */ + @RequestMapping(value="/shops/v3/saveShopsInfo.do",method=RequestMethod.POST) + public Object saveShopsInfo(ShopsInfo shopsInfo,MultipartFile file1,MultipartFile file2,MultipartFile file3) { + if(file1.getSize()>3145728 || file2.getSize()>3145728 || file3.getSize()>3145728){ + return IfishUtil.returnJson(ResultEnum.warn206.getKey(), ""); + } + else{ + return this.shopsService.saveShopsInfo(shopsInfo,file1,file2,file3); + } + } + + /** + * 审核失败后修改商户信息 + * @param shopsInfo + * @param file1 + * @param file2 + * @param file3 + * @return + */ + @RequestMapping(value="/shops/v3/updateShopsInfo.do",method=RequestMethod.POST) + public Object updateShopsInfo(ShopsInfo shopsInfo,MultipartFile file1,MultipartFile file2,MultipartFile file3) { + if(file1!=null && !file1.isEmpty() && file1.getSize()>3145728){ + return IfishUtil.returnJson(ResultEnum.warn206.getKey(), ""); + } + if(file2!=null && !file2.isEmpty() && file2.getSize()>3145728){ + return IfishUtil.returnJson(ResultEnum.warn206.getKey(), ""); + } + if(file3!=null && !file3.isEmpty() && file3.getSize()>3145728){ + return IfishUtil.returnJson(ResultEnum.warn206.getKey(), ""); + } + else{ + return this.shopsService.updateShopsInfo(shopsInfo,file1,file2,file3); + } + } + + /** + * 审核成功后修改商户信息 + * @param shopsInfo + * @param file4 + * @return + */ + @RequestMapping(value="/shops/v3/updateBaseShopsInfo.do",method=RequestMethod.POST) + public Object updateBaseShopsInfo(ShopsInfo shopsInfo,MultipartFile file4) { + if(file4!=null && !file4.isEmpty() && file4.getSize()>3145728){ + return IfishUtil.returnJson(ResultEnum.warn206.getKey(), ""); + } + else{ + return this.shopsService.updateBaseShopsInfo(shopsInfo,file4); + } + } + + /** + * 查询审核状态 + * @param shopsId + * @return + */ + @RequestMapping(value="/shops/v3/getShopsStatus.do",method=RequestMethod.POST) + public Object getShopsStatus(Integer shopsId) { + return this.shopsService.getShopsStatus(shopsId); + } + + /** + * 看护商家列表 + * @param firstResult + * @param pageSize + * @return + */ + @RequestMapping(value="/shops/v3/getShopsInfo.do",method=RequestMethod.POST) + public Object pushListInf(Integer userId,Integer firstResult,Integer pageSize) { + return this.shopsService.getShopsInfoByPage(userId,firstResult, pageSize); + } + + /** + * 选择看护商家 + * @param shopsUserId + * @param userId + * @return + */ + @RequestMapping(value="/shops/v3/choiceShops.do",method=RequestMethod.POST) + public Object choiceShops(@RequestParam Integer shopsUserId,@RequestParam Integer userId) { + return this.shopsService.choiceShops(shopsUserId,userId); + } + + /** + * 解除看护关系 + * @param shopsUserId + * @param userId + * @return + */ + @RequestMapping(value="/shops/v3/removeLook.do",method=RequestMethod.POST) + public Object removeLook(Integer userId) { + return this.shopsService.removeLook(userId); + } + + /** + * 获取商家会员信息 + * @param userId + * @param shopsId + * @return + */ + @RequestMapping(value="/shopsUserInfo/{userId}/{shopsId}",method=RequestMethod.GET) + public JsonResult getShopsUserInfoById(@PathVariable("userId")Integer userId,@PathVariable("shopsId")Integer shopsId){ + return shopsService.getShopsUserInfoById(userId, shopsId); + } + + /** + * 更新商家会员信息 + * @param userId + * @param shopsId + * @param result + * @param info + * @return + */ + @RequestMapping(value="/shopsUserInfo/{userId}/{shopsId}",method=RequestMethod.POST) + public JsonResult updateShopsUserInfo(@PathVariable("userId")Integer userId, + @PathVariable("shopsId")Integer shopsId, + @Validated ShopsUserInfoParam param, + BindingResult result){ + //参数校验 + if(result.hasErrors()){ + throw new IfishException(ResultEnum.error401); + } + return shopsService.updateShopsUserInfo(userId,shopsId,param); + } + + /** + * 分页获取商家会员信息 + * @param pageParam + * @param result + * @return + */ + @RequestMapping(value="/shopsUserInfo",method=RequestMethod.GET) + public PageingDto getShopsUserInfoById(@RequestParam("shopsId")Integer shopsId, + @Validated PageParam pageParam, + BindingResult result){ + //参数校验 + if(result.hasErrors()){ + throw new IfishException(ResultEnum.error401); + } + return shopsService.getShopsUserInfoByPage(shopsId,pageParam); + } + + /** + * 成为商家会员 + * @param userId + * @param shopsId + * @return + */ + @RequestMapping(value="/becomingShopsUser/{userId}/{shopsId}",method=RequestMethod.POST) + public JsonResult becomeShopsUser(@PathVariable("userId")Integer userId,@PathVariable("shopsId")Integer shopsId){ + return shopsService.becomeShopsUser(userId, shopsId); + } + +} \ No newline at end of file diff --git a/src/main/java/com/ifish/action/UpdateUserAction.java b/src/main/java/com/ifish/action/UpdateUserAction.java new file mode 100644 index 0000000..9a7a15b --- /dev/null +++ b/src/main/java/com/ifish/action/UpdateUserAction.java @@ -0,0 +1,76 @@ +package com.ifish.action; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartFile; + +import com.ifish.entity.User; +import com.ifish.enums.ResultEnum; +import com.ifish.service.BaseService; +import com.ifish.util.IfishUtil; + +/** + * @ClassName: UpdateUserAction + * @Description: TODO + * @author ggw + */ + +@Controller +@RequestMapping("/updateUser") +public class UpdateUserAction { + + @Autowired + private BaseService baseService; + + private static Logger log = LoggerFactory.getLogger(UpdateUserAction.class); + + @ModelAttribute("user") + public User getUser(@RequestParam Integer userId) { + return baseService.findById(userId); + } + /** + * 更新用户信息 + * @param user + * @return + */ + @RequestMapping("/updateUser.do") + @ResponseBody + public Object update(@ModelAttribute("user") User user){ + try { + return baseService.updateInfo(user); + } catch (Exception e) { + log.error("update userinfo:userId:{},error message:{}",user.getUserId(),e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 上传头像 + * @param user + * @param fileUpload + * @return + * @throws Exception + */ + @RequestMapping(value = "/uploadFile.do") + @ResponseBody + public Object upload(@ModelAttribute("user") User user,@RequestParam MultipartFile fileUpload){ + try { + if(fileUpload.getSize()>1048576){ + return IfishUtil.returnJson(ResultEnum.warn206.getKey(), ""); + } + else{ + return baseService.uploadFile(user,fileUpload); + } + } catch (Exception e) { + log.error("upload images:userId:{},error message:{}",user.getUserId(),e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + +} diff --git a/src/main/java/com/ifish/action/UserAction.java b/src/main/java/com/ifish/action/UserAction.java new file mode 100644 index 0000000..158a561 --- /dev/null +++ b/src/main/java/com/ifish/action/UserAction.java @@ -0,0 +1,642 @@ +package com.ifish.action; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import com.ifish.entity.CameraUserId; +import com.ifish.entity.Device; +import com.ifish.entity.DeviceUser; +import com.ifish.entity.QuestionsFeedback; +import com.ifish.entity.ShopsInfo; +import com.ifish.entity.User; +import com.ifish.enums.ResultEnum; +import com.ifish.helper.UserHelperI; +import com.ifish.service.BaseService; +import com.ifish.service.UserService; +import com.ifish.util.IfishFilePath; +import com.ifish.util.IfishUtil; + +/** + * @ClassName:UserAction + * @Description:TODO + * @author ggw + */ +@RestController +@RequestMapping("/user") +public class UserAction { + + @Autowired + private UserService userService; + @Autowired + private BaseService baseService; + @Autowired + private UserHelperI userHelperI; + + private static Logger log = LoggerFactory.getLogger(UserAction.class); + + /** + * 获取验证码 + * + * @param sendType + * @param phoneNumber + * @return + */ + @Deprecated + @RequestMapping("/getSecurityCode.do") + public Object getSecurityCode(@RequestParam String sendType, @RequestParam String phoneNumber) { + try { + return this.baseService.getSecurityCode(phoneNumber, sendType); + } catch (Exception e) { + log.error("send sms:phoneNumber:{},error message:{}", phoneNumber, e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 通过短信验证后新增注册用户信息 + * + * @param user + * @return + */ + @Deprecated + @RequestMapping("/addUser.do") + public Object addUser(User user) { + try { + return this.baseService.save(user); + } catch (Exception e) { + e.printStackTrace(); + log.error("user register:phoneNumber:{},error message:{}", user.getPhoneNumber(), e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 通过短信验证后修改密码 + * + * @param user + * @return + */ + @RequestMapping("/resetPassword.do") + public Object resetPassword(User user) { + try { + return this.baseService.resetPassword(user); + } catch (Exception e) { + log.error("forget password:phoneNumber:{},error message:{}", user.getPhoneNumber(), e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 用户登录 + */ + @Deprecated + @RequestMapping("/userLogin.do") + public Object userLogin(User user) { + try { + return userHelperI.login(user); + } catch (Exception e) { + log.error("user login:phoneNumber:{},error message:{}", user.getPhoneNumber(), e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 用户登录 + */ + @Deprecated + @RequestMapping("/userLoginold.do") + public Object userLogin1(User user) { + try { + return this.baseService.login(user); + } catch (Exception e) { + log.error("user login:phoneNumber:{},error message:{}", user.getPhoneNumber(), e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 验证原密码后修改密码 + * + * @param oldPassword + * @param user + * @return + */ + @RequestMapping("/updatePwd.do") + public Object updatePwd(@RequestParam String oldPassword, User user) { + try { + return baseService.updatePwd(user, oldPassword); + } catch (Exception e) { + log.error("change password:userId:{},error message:{}", user.getUserId(), e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 问题反馈 + * + * @param questionsFeedback + * @return + */ + @Deprecated + @RequestMapping("/questionsFeedback.do") + public Object questionsFeedback(QuestionsFeedback questionsFeedback) { + try { + return this.baseService.saveQuestionsFeedback(questionsFeedback); + } catch (Exception e) { + log.error("submit questions:userId:{},error message:{}", questionsFeedback.getUserId(), e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 绑定设备 + * + * @param user + * @param macAddress + * @return + */ + @Deprecated + @RequestMapping("/bindDevice.do") + public Object bindDevice(User user, String macAddress) { + try { + return baseService.bindDevice(user, macAddress.toLowerCase()); + } catch (Exception e) { + log.error("bind device:userId:{},macAddress:{},error message:{}", user.getUserId(), macAddress.toLowerCase(), e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 绑定摄像头 + * + * @param user + * @param macAddress + * @return + */ + @RequestMapping("/bindCamera.do") + public Object bindCamera(Integer userId, String cameraId) { + return baseService.bindCamera(userId, cameraId); + } + + /** + * 关联设备和摄像头 + * + * @param user + * @param macAddress + * @return + */ + @RequestMapping("/deviceBindCamera.do") + public Object deviceBindCamera(Integer deviceId, String cameraId) { + try { + return baseService.deviceBindCamera(deviceId, cameraId); + } catch (Exception e) { + log.error("DeviceBindCamera:cameraId:{},error message:{}", deviceId, cameraId, e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 关联设备和摄像头1 + * + * @param user + * @param macAddress + * @return + */ + @RequestMapping("/deviceBindCamera1.do") + public Object deviceBindCamera1(Integer userId, Integer deviceId, String cameraId) { + try { + return baseService.deviceBindCamera1(userId, deviceId, cameraId); + } catch (Exception e) { + log.error("DeviceBindCamera1:userId:{},cameraId:{},error message:{}", userId, deviceId, cameraId, e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 激活摄像头 + * + * @param user + * @param macAddress + * @return + */ + @RequestMapping("/activeCamera.do") + public Object activeCamera(String activeCode, String cameraId) { + try { + return baseService.activeCamera(activeCode, cameraId); + } catch (Exception e) { + log.error("activeCamera:activeCode:{},cameraId:{},error message:{}", activeCode, cameraId, e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 保存自定义图标 + * + * @param user + * @param macAddress + * @return + */ + @RequestMapping("/saveCustomIcon.do") + public Object saveCustomIcon(DeviceUser deviceUser) { + try { + return baseService.updateCustomIcon(deviceUser); + } catch (Exception e) { + log.error("saveCustomIcon:userId:{},deviceId:{},error message:{}", deviceUser.getPriId().getUserId(), deviceUser.getPriId().getDeviceId(), e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 获取单个设备信息 + * + * @param user + * @return + */ + @RequestMapping("/getSingleDeviceInf.do") + public Object getSingleDeviceInf(DeviceUser deviceUser) { + try { + return baseService.getSingleDeviceInf(deviceUser); + } catch (Exception e) { + log.error("get getDeviceInfByMacAddress Information:userId:{},deviceId:{},error message:{}", deviceUser.getPriId().getUserId(), deviceUser.getPriId().getDeviceId(), e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 修改设备信息 + * + * @param deviceUser + * @return + */ + @RequestMapping("/updateDeviceUser.do") + public Object updateDeviceUser(DeviceUser deviceUser) { + try { + return baseService.update(deviceUser); + } catch (Exception e) { + log.error("update device Information:userId:{},deviceId:{},error message:{}", deviceUser.getPriId().getUserId(), deviceUser.getPriId().getDeviceId(), e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 修改摄像头信息 + * + * @param deviceUser + * @return + */ + @RequestMapping("/updateCameraUser.do") + public Object updateCameraUser(Integer userId, String cameraId, String showName) { + try { + CameraUserId id = new CameraUserId(userId, cameraId); + return baseService.update(id, showName); + } catch (Exception e) { + log.error("updateCameraUser:userId:{},cameraId:{},error message:{}", userId, cameraId, e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 删除绑定设备 + * + * @param deviceUser + * @return + */ + @RequestMapping("/deleteDeviceUser.do") + public Object deleteDeviceUser(DeviceUser deviceUser) { + try { + return baseService.deleteDeviceUser(deviceUser); + } catch (Exception e) { + log.error("delete the binding device:userId:{},deviceId:{},error message:{}", deviceUser.getPriId().getUserId(), deviceUser.getPriId().getDeviceId(), e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 删除绑定的摄像头 + * + * @param deviceUser + * @return + */ + @RequestMapping("/deleteCameraUser.do") + public Object deleteCameraUser(Integer userId, String cameraId) { + try { + return baseService.deleteCameraUser(userId, cameraId); + } catch (Exception e) { + log.error("delete the binding camera:userId:{},cameraId:{},error message:{}", userId, cameraId, e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 删除设备和摄像头关联 + * + * @param deviceUser + * @return + */ + @RequestMapping("/deleteDeviceCamera.do") + public Object deleteDeviceCamera(Integer deviceId, String cameraId) { + try { + return baseService.deleteDeviceCamera(deviceId, cameraId); + } catch (Exception e) { + log.error("deleteDeviceCamera:deviceId:{},cameraId:{},error message:{}", deviceId, cameraId, e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 扫一扫分享设备 + * + * @param user + * @param device + * @return + */ + @Deprecated + @RequestMapping("/shareDeviceByQrCode.do") + public Object shareDeviceByQrCode(Integer userId, Integer deviceId) { + try { + return baseService.shareDeviceByQrCode(userId, deviceId); + } catch (Exception e) { + log.error("share device by qrCode:userId:{},deviceId:{},error message:{}", userId, deviceId, e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 获取最新版本信息 + */ + @RequestMapping("/getNewestVersion.do") + public Object getNewest(String phoneType) { + try { + return this.baseService.getNewestVersionInf(phoneType.toLowerCase()); + } catch (Exception e) { + log.error("get the latest version information:error message:{}", e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 获取换水提醒信息 + * + * @param deviceId + * @return + */ + @RequestMapping("/getRemindWaterInf.do") + public Object getRemindWaterInf(Integer deviceId) { + try { + return this.baseService.getRemindWaterInf(deviceId); + } catch (Exception e) { + log.error("getRemindWaterInf:deviceId:{},error message:{}", deviceId, e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 设置换水提醒信息 + * + * @param deviceId + * @return + */ + @RequestMapping("/setRemindWaterInf.do") + public Object setRemindWaterInf(Device device) { + try { + return this.baseService.setRemindWaterInf(device); + } catch (Exception e) { + log.error("setRemindWaterInf:deviceId:{},error message:{}", device.getDeviceId(), e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 保存商户信息 + * + * @param shopsInfo + * @param file1 + * @param file2 + * @param file3 + * @return + */ + @RequestMapping("/saveShopsInfo.do") + public Object saveShopsInfo(ShopsInfo shopsInfo, MultipartFile file1, MultipartFile file2, MultipartFile file3) { + try { + if (file1.getSize() > 3145728 || file2.getSize() > 3145728 || file3.getSize() > 3145728) { + return IfishUtil.returnJson(ResultEnum.warn206.getKey(), ""); + } else { + return this.baseService.saveShopsInfo(shopsInfo, file1, file2, file3); + } + } catch (Exception e) { + log.error("saveShopsInfo:error message:{}", e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 审核失败后修改商户信息 + * + * @param shopsInfo + * @param file1 + * @param file2 + * @param file3 + * @return + */ + @RequestMapping("/updateShopsInfo.do") + public Object updateShopsInfo(ShopsInfo shopsInfo, MultipartFile file1, MultipartFile file2, MultipartFile file3) { + try { + if (file1 != null && !file1.isEmpty() && file1.getSize() > 3145728) { + return IfishUtil.returnJson(ResultEnum.warn206.getKey(), ""); + } + if (file2 != null && !file2.isEmpty() && file2.getSize() > 3145728) { + return IfishUtil.returnJson(ResultEnum.warn206.getKey(), ""); + } + if (file3 != null && !file3.isEmpty() && file3.getSize() > 3145728) { + return IfishUtil.returnJson(ResultEnum.warn206.getKey(), ""); + } else { + return this.baseService.updateShopsInfo(shopsInfo, file1, file2, file3); + } + } catch (Exception e) { + log.error("updateShopsInfo:error message:{}", e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 审核成功后修改商户信息 + * + * @param shopsInfo + * @param file1 + * @param file2 + * @param file3 + * @return + */ + @RequestMapping("/updateBaseShopsInfo.do") + public Object updateBaseShopsInfo(ShopsInfo shopsInfo, MultipartFile file4) { + try { + if (file4 != null && !file4.isEmpty() && file4.getSize() > 3145728) { + return IfishUtil.returnJson(ResultEnum.warn206.getKey(), ""); + } else { + return this.baseService.updateBaseShopsInfo(shopsInfo, file4); + } + } catch (Exception e) { + log.error("updateBaseShopsInfo:error message:{}", e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 查询审核状态 + * + * @param shopsId + * @return + */ + @RequestMapping("/getShopsStatus.do") + public Object getShopsStatus(Integer shopsId) { + try { + return this.baseService.getShopsStatus(shopsId); + } catch (Exception e) { + log.error("getShopsStatus:error message:{}", e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 选择看护商家 + * + * @param phoneNumber + * @param userId + * @return + */ + @RequestMapping("/choiceShops.do") + public Object choiceShops(String phoneNumber, Integer userId) { + try { + return this.baseService.choiceShops(phoneNumber, userId); + } catch (Exception e) { + e.printStackTrace(); + log.error("choiceShops:error message:{}", e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 关闭看护摄像头 + * + * @param cameraId + * @param userId + * @param status + * @return + */ + @RequestMapping("/onoffLook.do") + public Object closeLook(String cameraId, Integer userId, String status) { + try { + return this.baseService.onoffLook(cameraId, userId, status); + } catch (Exception e) { + log.error("closeLook:error message:{}", e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 生成微信分享页面 + * + * @param title + * @param base64 + * @return + */ + @RequestMapping("/getHtmlFile.do") + public Object getHtmlFile(@RequestParam String title, @RequestParam MultipartFile fileUpload) { + try { + if (fileUpload != null && fileUpload.getSize() > 3145728) { + return IfishUtil.returnJson(ResultEnum.warn206.getKey(), ""); + } + String pngName = IfishUtil.uploadFile(fileUpload, IfishFilePath.path_share_img); + if (pngName != null && !pngName.equals("")) { + String fileName = IfishUtil.getHtmlFile(title, pngName, IfishFilePath.html_name, IfishFilePath.path_share_html); + if (fileName != null && !fileName.equals("")) { + return IfishUtil.returnJson(ResultEnum.success.getKey(), fileName); + } + } + } catch (Exception e) { + log.error("getHtmlFile:error message:{}", e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 生成看护报告 + * + * @param index1 + * @param index2 + * @param index3 + * @param suggestion + * @return + */ + @RequestMapping("/getLookReport.do") + public Object getLookReport(Integer userId, String index1, String index2, String index3, String suggestion, MultipartFile fileUpload) { + try { + if (fileUpload != null && fileUpload.getSize() > 3145728) { + return IfishUtil.returnJson(ResultEnum.warn206.getKey(), ""); + } + return this.baseService.lookReport(userId, index1, index2, index3, suggestion, fileUpload); + } catch (Exception e) { + log.error("getLookReport:error message:{}", e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 发送看护报告给用户(旧) + * + * @param userId + * @param fileName + * @return + */ + @Deprecated + @RequestMapping("/sendReport.do") + public Object sendReport(Integer userId, String fileName) { + try { + return this.baseService.sendReport(userId, fileName); + } catch (Exception e) { + log.error("sendReport message:{}", e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 发送看护报告给用户(新) + * + * @param userId + * @param fileName + * @param reportId + * @return + */ + @RequestMapping("/sendReport1.do") + public Object sendReport1(Integer userId, String fileName, Integer reportId) { + try { + return this.baseService.sendReport(userId, fileName, reportId); + } catch (Exception e) { + log.error("sendReport1 message:{}", e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 根据ID查询看护报告详情 + * + * @param reportId + * @return + */ + @RequestMapping("/getLookReportById.do") + public Object getLookReportById(Integer reportId) { + try { + return this.baseService.getLookReportById(reportId); + } catch (Exception e) { + log.error("getLookReportById message:{}", e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + +} diff --git a/src/main/java/com/ifish/action/UserActivityAction.java b/src/main/java/com/ifish/action/UserActivityAction.java new file mode 100644 index 0000000..992dd54 --- /dev/null +++ b/src/main/java/com/ifish/action/UserActivityAction.java @@ -0,0 +1,56 @@ +package com.ifish.action; + +import com.ifish.dto.JsonResult; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import com.ifish.dto.PageingDto; +import com.ifish.enums.ResultEnum; +import com.ifish.exception.IfishException; +import com.ifish.helper.UserActivityHelperI; +import com.ifish.service.UserActivityService; +import org.apache.ibatis.annotations.Param; + +/** + * 用户动态 + * + * @author Administrator + * + */ +@RestController +public class UserActivityAction { + + @Autowired + private UserActivityService userActivityService; + + @Autowired + private UserActivityHelperI userActivityHelperI; + + /** + * 分页获取用户动态 + * + * @param param + * @param result + * @return + */ + @RequestMapping(value = "/userActivities", method = RequestMethod.GET) + public PageingDto getUserActivityByPage(Integer pageSize, Integer firstResult) { + //参数校验 + if (firstResult < 0 || (pageSize < 1 || pageSize > 20)) { + throw new IfishException(ResultEnum.error401); + } + return userActivityHelperI.getUserActivityByPage(pageSize, firstResult); + } + + @RequestMapping(value = "/userActivitiesMaxCount", method = RequestMethod.GET) + public JsonResult getUserActivityMaxCount() { + try { + return userActivityHelperI.getUserActivityMaxCount(); + } catch (Exception e) { + throw new IfishException(ResultEnum.fail101); + } + + } +} diff --git a/src/main/java/com/ifish/action/UsersAction.java b/src/main/java/com/ifish/action/UsersAction.java new file mode 100644 index 0000000..765157f --- /dev/null +++ b/src/main/java/com/ifish/action/UsersAction.java @@ -0,0 +1,144 @@ +package com.ifish.action; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import com.ifish.dto.JsonResult; +import com.ifish.entity.User; +import com.ifish.enums.ResultEnum; +import com.ifish.exception.IfishException; +import com.ifish.service.UserService; +import com.ifish.validator.LoginParam; +import com.ifish.validator.RegisterParam; + +/** + * @ClassName:UsersAction + * @author ggw + */ + +@RestController +@RequestMapping("/users") +public class UsersAction { + + @Autowired + private UserService userService; + + /** + * 获取验证码 + * @param sendType + * @param phoneNumber + * @return + */ + @RequestMapping(value="/v3/getVerificateCode.do",method=RequestMethod.POST) + public JsonResult getVerificateCode(String sendType,String phoneNumber){ + return userService.getVerificateCode(phoneNumber, sendType); + } + + /** + * 用户注册 + * @param version + * @param userParam + * @param result + * @return + */ + @RequestMapping(value={"/v3/register.do","register.do"},method=RequestMethod.POST) + public JsonResult register(@Validated RegisterParam registerParam,BindingResult result) { + //参数校验 + if(result.hasErrors()){ + throw new IfishException(ResultEnum.error401); + } + return userService.register(registerParam); + } + + /** + * 用户登录 + * @param version + * @param userParam + * @param result + * @return + */ + @RequestMapping(value={"/v3/login.do","/login.do"},method=RequestMethod.POST) + public JsonResult login(@Validated LoginParam loginParam,BindingResult result) { + //参数校验 + if(result.hasErrors()){ + throw new IfishException(ResultEnum.error401); + } + return userService.login(loginParam); + } + + /** + * 登陆验证 + * @param loginParam + * @param result + * @return + */ + @RequestMapping(value="/loginValidation",method=RequestMethod.POST) + public JsonResult loginValidate(@Validated LoginParam loginParam,BindingResult result) { + //参数校验 + if(result.hasErrors()){ + throw new IfishException(ResultEnum.error401); + } + return userService.loginValidate(loginParam); + } + + /** + * 更多用户数据 + * @param userId + * @return + */ + @RequestMapping(value="/moreUserData/{userId}",method=RequestMethod.GET) + public JsonResult moreUserData(@PathVariable("userId") Integer userId) { + return userService.moreUserData(userId); + } + + /** + * 绑定设备 + * @param userId + * @param macAddress + * @return + */ + @RequestMapping(value="/bindingDevice/{userId}",method=RequestMethod.POST) + public JsonResult bindDevice(@PathVariable("userId") Integer userId,@RequestParam("macAddress") String macAddress) { + return userService.bindDevice(userId, macAddress); + } + + /** + * 扫一扫分享设备 + * @param userId + * @param macAddress + * @return + */ + @RequestMapping(value="/sharingDevice/{userId}",method=RequestMethod.POST) + public JsonResult shareDevice(@PathVariable("userId") Integer userId,@RequestParam("deviceId") Integer deviceId) { + return userService.shareDevice(userId, deviceId); + } + + /** + * 修改用户信息 + * @param user + * @return + */ + @RequestMapping(value="/v3/updateInfo.do",method=RequestMethod.POST) + public JsonResult updateInfo(User user) { + return userService.updateInfo(user); + } + + /** + * 上传用户头像 + * @param userId + * @param fileUpload + * @return + */ + @RequestMapping(value="/v3/uploadUserImg.do",method=RequestMethod.POST) + public JsonResult uploadUserImg(@RequestParam("userId")Integer userId,MultipartFile fileUpload) { + return userService.uploadUserImg(userId,fileUpload); + } + +} diff --git a/src/main/java/com/ifish/apiVersion/ApiVersion.java b/src/main/java/com/ifish/apiVersion/ApiVersion.java new file mode 100644 index 0000000..bb47e53 --- /dev/null +++ b/src/main/java/com/ifish/apiVersion/ApiVersion.java @@ -0,0 +1,15 @@ +package com.ifish.apiVersion; + +/** + * 接口版本号 + * @author Administrator + * + */ +public class ApiVersion { + //1.0 + public static final String version1_0 = "1.0"; + //1.1 + public static final String version1_1 = "1.1"; + //1.2 + public static final String version1_2 = "1.2"; +} diff --git a/src/main/java/com/ifish/bean/CommodityInfoBean.java b/src/main/java/com/ifish/bean/CommodityInfoBean.java new file mode 100644 index 0000000..73eae7a --- /dev/null +++ b/src/main/java/com/ifish/bean/CommodityInfoBean.java @@ -0,0 +1,308 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.bean; + +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +/** + * + * @author Administrator + */ +@Entity +@Table(name = "tbl_commodity_info") +public class CommodityInfoBean implements java.io.Serializable { + + /** + * 版本号 + */ + private static final long serialVersionUID = -5102166720334127839L; + + /** + * 商品详情表ID + */ + @Id + @Column(name = "commodity_id", unique = true, nullable = false, length = 10) + private Integer commodityId; + + public CommodityInfoBean(Integer commodityId, Integer shopId, Integer userId, String commodityName, String commodityDetail, String commodityImg, String commodityVideo, Integer commodityStatus, Date createTime, Integer click, Integer backstageStatus) { + this.commodityId = commodityId; + this.shopId = shopId; + this.userId = userId; + this.commodityName = commodityName; + this.commodityDetail = commodityDetail; + this.commodityImg = commodityImg; + this.commodityVideo = commodityVideo; + this.commodityStatus = commodityStatus; + this.createTime = createTime; + this.click = click; + this.backstageStatus = backstageStatus; + } + + public CommodityInfoBean() { + } + + /** + * 店铺ID + */ + @Column(name = "shop_id", nullable = false, length = 10) + private Integer shopId; + + /** + * 用户ID + */ + @Column(name = "user_id", nullable = false, length = 10) + private Integer userId; + + /** + * 商品名称 + */ + @Column(name = "commodity_name", nullable = false, length = 20) + private String commodityName; + + /** + * 商品描述 + */ + @Column(name = "commodity_detail", nullable = true, length = 100) + private String commodityDetail; + + /** + * 商品图片 + */ + @Column(name = "commodity_img", nullable = true, length = 100) + private String commodityImg; + + /** + * 商品视频 + */ + @Column(name = "commodity_video", nullable = true, length = 100) + private String commodityVideo; + + /** + * 商品状态(用户管理) + */ + @Column(name = "commodity_status", nullable = false, length = 10) + private Integer commodityStatus; + + /** + * 创建时间 + */ + @Column(name = "create_time", nullable = false) + private Date createTime; + + /** + * 商品点击数 + */ + @Column(name = "click", nullable = true, length = 10) + private Integer click; + + /** + * 后台管理商品状态 + */ + @Column(name = "backstage_status", nullable = false, length = 10) + private Integer backstageStatus; + + /** + * 获取商品详情表ID + * + * @return 商品详情表ID + */ + public Integer getCommodityId() { + return this.commodityId; + } + + /** + * 设置商品详情表ID + * + * @param commodityId 商品详情表ID + */ + public void setCommodityId(Integer commodityId) { + this.commodityId = commodityId; + } + + /** + * 获取店铺ID + * + * @return 店铺ID + */ + public Integer getShopId() { + return this.shopId; + } + + /** + * 设置店铺ID + * + * @param shopId 店铺ID + */ + public void setShopId(Integer shopId) { + this.shopId = shopId; + } + + /** + * 获取用户ID + * + * @return 用户ID + */ + public Integer getUserId() { + return this.userId; + } + + /** + * 设置用户ID + * + * @param userId 用户ID + */ + public void setUserId(Integer userId) { + this.userId = userId; + } + + /** + * 获取商品名称 + * + * @return 商品名称 + */ + public String getCommodityName() { + return this.commodityName; + } + + /** + * 设置商品名称 + * + * @param commodityName 商品名称 + */ + public void setCommodityName(String commodityName) { + this.commodityName = commodityName; + } + + /** + * 获取商品描述 + * + * @return 商品描述 + */ + public String getCommodityDetail() { + return this.commodityDetail; + } + + /** + * 设置商品描述 + * + * @param commodityDetail 商品描述 + */ + public void setCommodityDetail(String commodityDetail) { + this.commodityDetail = commodityDetail; + } + + /** + * 获取商品图片 + * + * @return 商品图片 + */ + public String getCommodityImg() { + return this.commodityImg; + } + + /** + * 设置商品图片 + * + * @param commodityImg 商品图片 + */ + public void setCommodityImg(String commodityImg) { + this.commodityImg = commodityImg; + } + + /** + * 获取商品视频 + * + * @return 商品视频 + */ + public String getCommodityVideo() { + return this.commodityVideo; + } + + /** + * 设置商品视频 + * + * @param commodityVideo 商品视频 + */ + public void setCommodityVideo(String commodityVideo) { + this.commodityVideo = commodityVideo; + } + + /** + * 获取商品状态(用户管理) + * + * @return 商品状态(用户管理) + */ + public Integer getCommodityStatus() { + return this.commodityStatus; + } + + /** + * 设置商品状态(用户管理) + * + * @param commodityStatus 商品状态(用户管理) + */ + public void setCommodityStatus(Integer commodityStatus) { + this.commodityStatus = commodityStatus; + } + + /** + * 获取创建时间 + * + * @return 创建时间 + */ + public Date getCreateTime() { + return this.createTime; + } + + /** + * 设置创建时间 + * + * @param createTime 创建时间 + */ + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + /** + * 获取商品点击数 + * + * @return 商品点击数 + */ + public Integer getClick() { + return this.click; + } + + /** + * 设置商品点击数 + * + * @param click 商品点击数 + */ + public void setClick(Integer click) { + this.click = click; + } + + /** + * 获取后台管理商品状态 + * + * @return 后台管理商品状态 + */ + public Integer getBackstageStatus() { + return this.backstageStatus; + } + + /** + * 设置后台管理商品状态 + * + * @param backstageStatus 后台管理商品状态 + */ + public void setBackstageStatus(Integer backstageStatus) { + this.backstageStatus = backstageStatus; + } +} diff --git a/src/main/java/com/ifish/bean/DeviceUserBean.java b/src/main/java/com/ifish/bean/DeviceUserBean.java new file mode 100644 index 0000000..bceefcd --- /dev/null +++ b/src/main/java/com/ifish/bean/DeviceUserBean.java @@ -0,0 +1,228 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.bean; + +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +/** + * + * @author Administrator + */ +@Entity +@Table(name = "tbl_device_user") +public class DeviceUserBean implements java.io.Serializable { + + /** + * 版本号 + */ + private static final long serialVersionUID = -8887049051247467842L; + + /** + * + */ + @Id + @Column(name = "user_id", unique = true, nullable = false, length = 10) + private Integer userId; + + /** + * + */ + @Id + @Column(name = "device_id", unique = true, nullable = false, length = 10) + private Integer deviceId; + + /** + * + */ + @Column(name = "is_master", nullable = true, length = 1) + private String isMaster; + + /** + * + */ + @Column(name = "show_name", nullable = true, length = 50) + private String showName; + + /** + * + */ + @Column(name = "create_time", nullable = true) + private Date createTime; + + /** + * + */ + @Column(name = "update_time", nullable = true) + private Date updateTime; + + /** + * + */ + @Column(name = "custom_icon_name", nullable = true, length = 100) + private String customIconName; + + /** + * + */ + @Column(name = "custom_show_name", nullable = true, length = 100) + private String customShowName; + + /** + * 获取 + * + * @return + */ + public Integer getUserId() { + return this.userId; + } + + /** + * 设置 + * + * @param userId + * + */ + public void setUserId(Integer userId) { + this.userId = userId; + } + + /** + * 获取 + * + * @return + */ + public Integer getDeviceId() { + return this.deviceId; + } + + /** + * 设置 + * + * @param deviceId + * + */ + public void setDeviceId(Integer deviceId) { + this.deviceId = deviceId; + } + + /** + * 获取 + * + * @return + */ + public String getIsMaster() { + return this.isMaster; + } + + /** + * 设置 + * + * @param isMaster + * + */ + public void setIsMaster(String isMaster) { + this.isMaster = isMaster; + } + + /** + * 获取 + * + * @return + */ + public String getShowName() { + return this.showName; + } + + /** + * 设置 + * + * @param showName + * + */ + public void setShowName(String showName) { + this.showName = showName; + } + + /** + * 获取 + * + * @return + */ + public Date getCreateTime() { + return this.createTime; + } + + /** + * 设置 + * + * @param createTime + * + */ + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + /** + * 获取 + * + * @return + */ + public Date getUpdateTime() { + return this.updateTime; + } + + /** + * 设置 + * + * @param updateTime + * + */ + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + /** + * 获取 + * + * @return + */ + public String getCustomIconName() { + return this.customIconName; + } + + /** + * 设置 + * + * @param customIconName + * + */ + public void setCustomIconName(String customIconName) { + this.customIconName = customIconName; + } + + /** + * 获取 + * + * @return + */ + public String getCustomShowName() { + return this.customShowName; + } + + /** + * 设置 + * + * @param customShowName + * + */ + public void setCustomShowName(String customShowName) { + this.customShowName = customShowName; + } +} diff --git a/src/main/java/com/ifish/bean/VenderListBean.java b/src/main/java/com/ifish/bean/VenderListBean.java new file mode 100644 index 0000000..13c55bc --- /dev/null +++ b/src/main/java/com/ifish/bean/VenderListBean.java @@ -0,0 +1,243 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.bean; + +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +/** + * + * @author Administrator + */ +@Entity +@Table(name = "tbl_vender_list") +public class VenderListBean implements java.io.Serializable { + + /** + * 版本号 + */ + private static final long serialVersionUID = 190528374520461795L; + + /** + * */ + @Column(name = "brand_logo", nullable = true, length = 100) + private String brandLogo; + + /** + * */ + @Column(name = "brand_name", nullable = false, length = 20) + private String brandName; + + /** + * */ + @Column(name = "brand_introduce", nullable = true, length = 100) + private String brandIntroduce; + + /** + * */ + @Column(name = "app_show", nullable = true, length = 1) + private String appShow; + + /** + * */ + @Id + @Column(name = "brand_code", unique = true, nullable = false, length = 20) + private String brandCode; + + /** + * */ + @Column(name = "contact_phone", nullable = true, length = 30) + private String contactPhone; + + /** + * */ + @Column(name = "contact_address", nullable = true, length = 50) + private String contactAddress; + + /** + * */ + @Column(name = "update_time", nullable = true) + private Date updateTime; + + /** + * */ + @Column(name = "create_time", nullable = true) + private Date createTime; + + /** + * 获取 + * + * @return + */ + public String getBrandLogo() { + return this.brandLogo; + } + + /** + * 设置 + * + * @param brandLogo + * + */ + public void setBrandLogo(String brandLogo) { + this.brandLogo = brandLogo; + } + + /** + * 获取 + * + * @return + */ + public String getBrandName() { + return this.brandName; + } + + /** + * 设置 + * + * @param brandName + * + */ + public void setBrandName(String brandName) { + this.brandName = brandName; + } + + /** + * 获取 + * + * @return + */ + public String getBrandIntroduce() { + return this.brandIntroduce; + } + + /** + * 设置 + * + * @param brandIntroduce + * + */ + public void setBrandIntroduce(String brandIntroduce) { + this.brandIntroduce = brandIntroduce; + } + + /** + * 获取 + * + * @return + */ + public String getAppShow() { + return this.appShow; + } + + /** + * 设置 + * + * @param appShow + * + */ + public void setAppShow(String appShow) { + this.appShow = appShow; + } + + /** + * 获取 + * + * @return + */ + public String getBrandCode() { + return this.brandCode; + } + + /** + * 设置 + * + * @param brandCode + * + */ + public void setBrandCode(String brandCode) { + this.brandCode = brandCode; + } + + /** + * 获取 + * + * @return + */ + public String getContactPhone() { + return this.contactPhone; + } + + /** + * 设置 + * + * @param contactPhone + * + */ + public void setContactPhone(String contactPhone) { + this.contactPhone = contactPhone; + } + + /** + * 获取 + * + * @return + */ + public String getContactAddress() { + return this.contactAddress; + } + + /** + * 设置 + * + * @param contactAddress + * + */ + public void setContactAddress(String contactAddress) { + this.contactAddress = contactAddress; + } + + /** + * 获取 + * + * @return + */ + public Date getUpdateTime() { + return this.updateTime; + } + + /** + * 设置 + * + * @param updateTime + * + */ + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + /** + * 获取 + * + * @return + */ + public Date getCreateTime() { + return this.createTime; + } + + /** + * 设置 + * + * @param createTime + * + */ + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } +} diff --git a/src/main/java/com/ifish/config/RedisConfig.java b/src/main/java/com/ifish/config/RedisConfig.java new file mode 100644 index 0000000..94b5b84 --- /dev/null +++ b/src/main/java/com/ifish/config/RedisConfig.java @@ -0,0 +1,59 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.config; + +import com.ifish.util.IfishFilePath; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.StringRedisTemplate; + +/** + * + * @author Administrator + */ +@Configuration +public class RedisConfig { + + @Bean + public RedisConnectionFactory redisCF() { + JedisConnectionFactory cf = new JedisConnectionFactory(); + +// //获取当前操作系统(servers_os为服务器设置的属性JAVA_OPTS=%JAVA_OPTS% -Dservers_os=online84) +// String servers_os = System.getProperty("servers_os") == null ? "" : System.getProperty("servers_os"); + if (IfishFilePath.link_img_head.contains("ifish7")) { + //114.55.42.84 站点线上服务器 + cf.setHostName("120.55.190.56");//本机访问 +// cf.setHostName("10.25.172.5");//内网ip地址,用于多服务器负载 + cf.setPort(3796); + cf.setPassword("ifish7myredis"); + } else { + //192.168.1.237 站点测试服务器 + cf.setHostName("139.196.24.156"); + cf.setPort(3796); + cf.setPassword("ifish7myredis"); +// FileUtil.writeLinesByLog("测试缓存连接"); + } + + return cf; + } + + @Bean + public RedisTemplate redisTemplate(RedisConnectionFactory cf) { + RedisTemplate redis = new RedisTemplate(); + redis.setConnectionFactory(cf); + return redis; + } + + @Bean + public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory cf) { + StringRedisTemplate redis = new StringRedisTemplate(); + redis.setConnectionFactory(cf); + return redis; + } +} diff --git a/src/main/java/com/ifish/dao/AdInfoDao.java b/src/main/java/com/ifish/dao/AdInfoDao.java new file mode 100644 index 0000000..335a082 --- /dev/null +++ b/src/main/java/com/ifish/dao/AdInfoDao.java @@ -0,0 +1,12 @@ +package com.ifish.dao; + +import com.ifish.entity.AdInfo; + +/** + * 广告信息 + * @author Administrator + * + */ +public interface AdInfoDao extends BaseDao{ + +} diff --git a/src/main/java/com/ifish/dao/BaseDao.java b/src/main/java/com/ifish/dao/BaseDao.java new file mode 100644 index 0000000..352bc19 --- /dev/null +++ b/src/main/java/com/ifish/dao/BaseDao.java @@ -0,0 +1,37 @@ +package com.ifish.dao; + +import java.io.Serializable; +import java.util.List; + +import org.hibernate.criterion.Criterion; +import org.hibernate.criterion.Order; + +import com.ifish.hibernate.Pagination; + +/** + * @ClassName: BaseDao + * @Description: TODO + * @author ggw + * + */ +public interface BaseDao { + + public T get(ID id); + + public T save(T t); + + public T update(T t); + + public T saveOrUpdate(T t); + + public void delete(T t); + + public List findByProperty(Criterion... criterions); + + public List findByProperty(Order order,Criterion... criterions); + + public T findUniqueByProperty(Criterion... criterions); + + public Pagination findByCriteria(Integer firstResult,Integer pageSize,Order order,Criterion... criterion); + +} diff --git a/src/main/java/com/ifish/dao/BrowseRoomDao.java b/src/main/java/com/ifish/dao/BrowseRoomDao.java new file mode 100644 index 0000000..205ad1f --- /dev/null +++ b/src/main/java/com/ifish/dao/BrowseRoomDao.java @@ -0,0 +1,14 @@ +package com.ifish.dao; + +import com.ifish.entity.BrowseRoom; +import com.ifish.entity.BrowseRoomId; + +/** + * @ClassName: BrowseRoomDao + * @Description: TODO + * @author ggw + * + */ +public interface BrowseRoomDao extends BaseDao{ + +} diff --git a/src/main/java/com/ifish/dao/CameraActiveDao.java b/src/main/java/com/ifish/dao/CameraActiveDao.java new file mode 100644 index 0000000..e7b47ce --- /dev/null +++ b/src/main/java/com/ifish/dao/CameraActiveDao.java @@ -0,0 +1,13 @@ +package com.ifish.dao; + +import com.ifish.entity.CameraActive; + +/** + * @ClassName: CameraActiveDao + * @Description: TODO + * @author ggw + * + */ +public interface CameraActiveDao extends BaseDao{ + +} diff --git a/src/main/java/com/ifish/dao/CameraDao.java b/src/main/java/com/ifish/dao/CameraDao.java new file mode 100644 index 0000000..1ff34a8 --- /dev/null +++ b/src/main/java/com/ifish/dao/CameraDao.java @@ -0,0 +1,13 @@ +package com.ifish.dao; + +import com.ifish.entity.Camera; + +/** + * @ClassName: CameraDao + * @Description: TODO + * @author ggw + * + */ +public interface CameraDao extends BaseDao{ + +} diff --git a/src/main/java/com/ifish/dao/CameraUserDao.java b/src/main/java/com/ifish/dao/CameraUserDao.java new file mode 100644 index 0000000..453c62c --- /dev/null +++ b/src/main/java/com/ifish/dao/CameraUserDao.java @@ -0,0 +1,20 @@ +package com.ifish.dao; + +import com.ifish.entity.CameraUser; +import com.ifish.entity.CameraUserId; + +/** + * @ClassName: CameraUserDao + * @Description: TODO + * @author ggw + * + */ +public interface CameraUserDao extends BaseDao{ + + /** + * 查询用户的摄像头数量 + * @param userId + * @return + */ + public int getCameraNumById(Integer userId); +} diff --git a/src/main/java/com/ifish/dao/CommentDao.java b/src/main/java/com/ifish/dao/CommentDao.java new file mode 100644 index 0000000..c53dc8a --- /dev/null +++ b/src/main/java/com/ifish/dao/CommentDao.java @@ -0,0 +1,15 @@ +package com.ifish.dao; + +import com.ifish.entity.Comment; + +/** + * @ClassName: CommentDao + * @Description: TODO + * @author ggw + * + */ +public interface CommentDao extends BaseDao{ + + public Integer getPinglunNum(Integer ueditorId); + +} diff --git a/src/main/java/com/ifish/dao/CouponDao.java b/src/main/java/com/ifish/dao/CouponDao.java new file mode 100644 index 0000000..9e715b0 --- /dev/null +++ b/src/main/java/com/ifish/dao/CouponDao.java @@ -0,0 +1,12 @@ +package com.ifish.dao; + +import com.ifish.entity.Coupon; + +/** + * 优惠券 + * @author Administrator + * + */ +public interface CouponDao extends BaseDao { + +} diff --git a/src/main/java/com/ifish/dao/CouponRecordDao.java b/src/main/java/com/ifish/dao/CouponRecordDao.java new file mode 100644 index 0000000..d953c6f --- /dev/null +++ b/src/main/java/com/ifish/dao/CouponRecordDao.java @@ -0,0 +1,26 @@ +package com.ifish.dao; + +import com.ifish.entity.CouponRecord; + +/** + * 优惠券兑换记录 + * @author Administrator + * + */ +public interface CouponRecordDao extends BaseDao { + + /** + * 查询兑换券的兑换数量 + * @param couponId + * @return + */ + int getCouponRecordCountByCouponId(Integer couponId); + + /** + * 查询用户的兑换数量 + * @param couponId + * @return + */ + int getCouponRecordCountByUser(Integer userId,Integer couponId); + +} diff --git a/src/main/java/com/ifish/dao/DeviceCameraDao.java b/src/main/java/com/ifish/dao/DeviceCameraDao.java new file mode 100644 index 0000000..ca8760d --- /dev/null +++ b/src/main/java/com/ifish/dao/DeviceCameraDao.java @@ -0,0 +1,18 @@ +package com.ifish.dao; + +import java.util.List; + +import com.ifish.entity.DeviceCamera; +import com.ifish.entity.DeviceCameraId; + +/** + * @ClassName: DeviceCameraDao + * @Description: TODO + * @author ggw + * + */ +public interface DeviceCameraDao extends BaseDao{ + + public void removeAll(List list); + +} diff --git a/src/main/java/com/ifish/dao/DeviceDao.java b/src/main/java/com/ifish/dao/DeviceDao.java new file mode 100644 index 0000000..8ae152a --- /dev/null +++ b/src/main/java/com/ifish/dao/DeviceDao.java @@ -0,0 +1,13 @@ +package com.ifish.dao; + +import com.ifish.entity.Device; + +/** + * @ClassName: DeviceDao + * @Description: TODO + * @author ggw + * + */ +public interface DeviceDao extends BaseDao{ + +} diff --git a/src/main/java/com/ifish/dao/DeviceUserDao.java b/src/main/java/com/ifish/dao/DeviceUserDao.java new file mode 100644 index 0000000..fe0e099 --- /dev/null +++ b/src/main/java/com/ifish/dao/DeviceUserDao.java @@ -0,0 +1,25 @@ +package com.ifish.dao; + +import java.util.List; + +import com.ifish.entity.DeviceUser; +import com.ifish.entity.DeviceUserId; + +/** + * @ClassName: DeviceUserDao + * @Description: TODO + * @author ggw + * + */ +public interface DeviceUserDao extends BaseDao{ + + public void removeAll(List list); + + /** + * 查询用户的设备数量 + * @param userId + * @return + */ + public int getDeviceNumById(Integer userId); + +} diff --git a/src/main/java/com/ifish/dao/GoldControlDao.java b/src/main/java/com/ifish/dao/GoldControlDao.java new file mode 100644 index 0000000..485e4af --- /dev/null +++ b/src/main/java/com/ifish/dao/GoldControlDao.java @@ -0,0 +1,13 @@ +package com.ifish.dao; + +import com.ifish.entity.GoldControl; +import com.ifish.entity.GoldControlId; + +/** + * 金币控制信息 + * @author Administrator + * + */ +public interface GoldControlDao extends BaseDao { + +} diff --git a/src/main/java/com/ifish/dao/GoldExpendRecordDao.java b/src/main/java/com/ifish/dao/GoldExpendRecordDao.java new file mode 100644 index 0000000..92ad178 --- /dev/null +++ b/src/main/java/com/ifish/dao/GoldExpendRecordDao.java @@ -0,0 +1,12 @@ +package com.ifish.dao; + +import com.ifish.entity.GoldExpendRecord; + +/** + * 金币消耗记录 + * @author Administrator + * + */ +public interface GoldExpendRecordDao extends BaseDao{ + +} diff --git a/src/main/java/com/ifish/dao/GoldGetRecordDao.java b/src/main/java/com/ifish/dao/GoldGetRecordDao.java new file mode 100644 index 0000000..32fe85e --- /dev/null +++ b/src/main/java/com/ifish/dao/GoldGetRecordDao.java @@ -0,0 +1,21 @@ +package com.ifish.dao; + +import java.math.BigDecimal; + +import com.ifish.entity.GoldGetRecord; + +/** + * 获取金币记录 + * @author Administrator + * + */ +public interface GoldGetRecordDao extends BaseDao{ + + /** + * 打赏金额数量 + * @param userId + * @return + */ + BigDecimal getQuestionPayTourGoldValue(Integer userId); + +} diff --git a/src/main/java/com/ifish/dao/GoldRuleDao.java b/src/main/java/com/ifish/dao/GoldRuleDao.java new file mode 100644 index 0000000..58adbfe --- /dev/null +++ b/src/main/java/com/ifish/dao/GoldRuleDao.java @@ -0,0 +1,12 @@ +package com.ifish.dao; + +import com.ifish.entity.GoldTask; + +/** + * 金币获取规则 + * @author Administrator + * + */ +public interface GoldRuleDao extends BaseDao { + +} diff --git a/src/main/java/com/ifish/dao/GradeControlDao.java b/src/main/java/com/ifish/dao/GradeControlDao.java new file mode 100644 index 0000000..1257a27 --- /dev/null +++ b/src/main/java/com/ifish/dao/GradeControlDao.java @@ -0,0 +1,13 @@ +package com.ifish.dao; + +import com.ifish.entity.GradeControl; +import com.ifish.entity.GradeControlId; + +/** + * 等级经验控制 + * @author Administrator + * + */ +public interface GradeControlDao extends BaseDao { + +} diff --git a/src/main/java/com/ifish/dao/GradeDao.java b/src/main/java/com/ifish/dao/GradeDao.java new file mode 100644 index 0000000..4978827 --- /dev/null +++ b/src/main/java/com/ifish/dao/GradeDao.java @@ -0,0 +1,13 @@ +package com.ifish.dao; + +import com.ifish.entity.Grade; + +/** + * @ClassName: GradeDao + * @Description: TODO + * @author ggw + * + */ +public interface GradeDao extends BaseDao{ + +} diff --git a/src/main/java/com/ifish/dao/GradeRecordDao.java b/src/main/java/com/ifish/dao/GradeRecordDao.java new file mode 100644 index 0000000..9d2e84b --- /dev/null +++ b/src/main/java/com/ifish/dao/GradeRecordDao.java @@ -0,0 +1,13 @@ +package com.ifish.dao; + +import com.ifish.entity.GradeRecord; + +/** + * @ClassName: GradeRecordDao + * @Description: TODO + * @author ggw + * + */ +public interface GradeRecordDao extends BaseDao{ + +} diff --git a/src/main/java/com/ifish/dao/GradeRuleDao.java b/src/main/java/com/ifish/dao/GradeRuleDao.java new file mode 100644 index 0000000..c74c2d1 --- /dev/null +++ b/src/main/java/com/ifish/dao/GradeRuleDao.java @@ -0,0 +1,13 @@ +package com.ifish.dao; + +import com.ifish.entity.GradeTask; + +/** + * @ClassName: GradeRuleDao + * @Description: TODO + * @author ggw + * + */ +public interface GradeRuleDao extends BaseDao{ + +} diff --git a/src/main/java/com/ifish/dao/HardwareTypeDao.java b/src/main/java/com/ifish/dao/HardwareTypeDao.java new file mode 100644 index 0000000..fc8ff58 --- /dev/null +++ b/src/main/java/com/ifish/dao/HardwareTypeDao.java @@ -0,0 +1,13 @@ +package com.ifish.dao; + +import com.ifish.entity.HardwareType; + +/** + * @ClassName: HardwareTypeDao + * @Description: TODO + * @author ggw + * + */ +public interface HardwareTypeDao extends BaseDao{ + +} diff --git a/src/main/java/com/ifish/dao/IfishDoctorDao.java b/src/main/java/com/ifish/dao/IfishDoctorDao.java new file mode 100644 index 0000000..7670714 --- /dev/null +++ b/src/main/java/com/ifish/dao/IfishDoctorDao.java @@ -0,0 +1,13 @@ +package com.ifish.dao; + +import com.ifish.entity.IfishDoctor; + +/** + * @ClassName: IfishDoctorDao + * @Description: TODO + * @author ggw + * + */ +public interface IfishDoctorDao extends BaseDao{ + +} diff --git a/src/main/java/com/ifish/dao/IfishGoodsDao.java b/src/main/java/com/ifish/dao/IfishGoodsDao.java new file mode 100644 index 0000000..35227e8 --- /dev/null +++ b/src/main/java/com/ifish/dao/IfishGoodsDao.java @@ -0,0 +1,12 @@ +package com.ifish.dao; + +import com.ifish.entity.IfishGoods; + +/** + * 商品管理dao + * @author Administrator + * + */ +public interface IfishGoodsDao extends BaseDao { + +} diff --git a/src/main/java/com/ifish/dao/IfishShopDao.java b/src/main/java/com/ifish/dao/IfishShopDao.java new file mode 100644 index 0000000..d485f66 --- /dev/null +++ b/src/main/java/com/ifish/dao/IfishShopDao.java @@ -0,0 +1,12 @@ +package com.ifish.dao; + +import com.ifish.entity.IfishShop; + +/** + * 店铺管理dao + * @author Administrator + * + */ +public interface IfishShopDao extends BaseDao { + +} diff --git a/src/main/java/com/ifish/dao/InformationDao.java b/src/main/java/com/ifish/dao/InformationDao.java new file mode 100644 index 0000000..e51f5fb --- /dev/null +++ b/src/main/java/com/ifish/dao/InformationDao.java @@ -0,0 +1,14 @@ +package com.ifish.dao; + +import com.ifish.entity.Information; + + +/** + * @ClassName: InformationDao + * @Description: TODO + * @author ggw + * + */ +public interface InformationDao extends BaseDao{ + +} \ No newline at end of file diff --git a/src/main/java/com/ifish/dao/InformationStatsDao.java b/src/main/java/com/ifish/dao/InformationStatsDao.java new file mode 100644 index 0000000..17cc337 --- /dev/null +++ b/src/main/java/com/ifish/dao/InformationStatsDao.java @@ -0,0 +1,12 @@ +package com.ifish.dao; + +import com.ifish.entity.InformationStats; + +/** + * 资讯数据统计 + * @author Administrator + * + */ +public interface InformationStatsDao extends BaseDao { + +} diff --git a/src/main/java/com/ifish/dao/LiveBannerDao.java b/src/main/java/com/ifish/dao/LiveBannerDao.java new file mode 100644 index 0000000..ffb67e0 --- /dev/null +++ b/src/main/java/com/ifish/dao/LiveBannerDao.java @@ -0,0 +1,13 @@ +package com.ifish.dao; + +import com.ifish.entity.LiveBanner; + +/** + * @ClassName: LiveBannerDao + * @Description: TODO + * @author ggw + * + */ +public interface LiveBannerDao extends BaseDao{ + +} diff --git a/src/main/java/com/ifish/dao/LiveMessageDao.java b/src/main/java/com/ifish/dao/LiveMessageDao.java new file mode 100644 index 0000000..c5e33ea --- /dev/null +++ b/src/main/java/com/ifish/dao/LiveMessageDao.java @@ -0,0 +1,21 @@ +package com.ifish.dao; + +import com.ifish.entity.LiveMessage; + + +/** + * @ClassName: LiveMessageDao + * @Description: TODO + * @author ggw + * + */ +public interface LiveMessageDao extends BaseDao{ + + /** + * 获取直播间评论数 + * @param roomId + * @return + */ + public int getLiveMessageCount(Integer roomId); + +} diff --git a/src/main/java/com/ifish/dao/LiveRoomDao.java b/src/main/java/com/ifish/dao/LiveRoomDao.java new file mode 100644 index 0000000..93e908e --- /dev/null +++ b/src/main/java/com/ifish/dao/LiveRoomDao.java @@ -0,0 +1,62 @@ +package com.ifish.dao; + +import java.util.List; + +import com.ifish.dto.LiveRoomInfoDto; +import com.ifish.entity.LiveRoom; +import com.ifish.hibernate.Pagination; + +/** + * @ClassName: LiveRoomDao + * @Description: TODO + * @author ggw + * + */ +public interface LiveRoomDao extends BaseDao{ + + /** + * 获取离用户最近的5条记录 + * @param longitude + * @param latitude + * @return + */ + public List findByDistance(Double longitude,Double latitude); + + /** + * 获取用户最近浏览的5条记录 + * @param userId + * @return + */ + public List findByBrowse(Integer userId); + + /** + * 获取人气值最高的5条记录 + * @return + */ + public List findByPopularityValue(); + + /** + * 根据开播时间倒序 + * @param firstResult + * @param pageSize + * @return + */ + public Pagination findByTime(Integer firstResult,Integer pageSize,String orders); + + /** + * 根据人气值倒序 + * @param firstResult + * @param pageSize + * @return + */ + public Pagination findByPopularityValue(Integer firstResult,Integer pageSize); + + /** + * 根据推荐顺序 + * @param firstResult + * @param pageSize + * @return + */ + public Pagination getLiveRoomsByTuijian(Integer firstResult,Integer pageSize); + +} diff --git a/src/main/java/com/ifish/dao/LiveRoomZanDao.java b/src/main/java/com/ifish/dao/LiveRoomZanDao.java new file mode 100644 index 0000000..f6e43e7 --- /dev/null +++ b/src/main/java/com/ifish/dao/LiveRoomZanDao.java @@ -0,0 +1,20 @@ +package com.ifish.dao; + +import com.ifish.entity.LiveRoomZan; +import com.ifish.entity.LiveRoomZanId; + +/** + * 直播间点赞 + * @author Administrator + * + */ +public interface LiveRoomZanDao extends BaseDao { + + /** + * 点赞数量 + * @param roomId + * @return + */ + public Integer getZanNum(Integer roomId); + +} diff --git a/src/main/java/com/ifish/dao/LookReportDao.java b/src/main/java/com/ifish/dao/LookReportDao.java new file mode 100644 index 0000000..6d91e69 --- /dev/null +++ b/src/main/java/com/ifish/dao/LookReportDao.java @@ -0,0 +1,13 @@ +package com.ifish.dao; + +import com.ifish.entity.LookReport; + +/** + * @ClassName: LookReportDao + * @Description: TODO + * @author ggw + * + */ +public interface LookReportDao extends BaseDao{ + +} diff --git a/src/main/java/com/ifish/dao/PushListDao.java b/src/main/java/com/ifish/dao/PushListDao.java new file mode 100644 index 0000000..e67297b --- /dev/null +++ b/src/main/java/com/ifish/dao/PushListDao.java @@ -0,0 +1,15 @@ +package com.ifish.dao; + +import com.ifish.entity.PushList; +import com.ifish.hibernate.Pagination; + +/** + * @ClassName: PushListDao + * @Description: TODO + * @author ggw + * + */ +public interface PushListDao extends BaseDao{ + + public Pagination findByCriteria(Integer pushId,Integer userId,Integer firstResult,Integer pageSize); +} diff --git a/src/main/java/com/ifish/dao/QuestionsFeedbackDao.java b/src/main/java/com/ifish/dao/QuestionsFeedbackDao.java new file mode 100644 index 0000000..828ec47 --- /dev/null +++ b/src/main/java/com/ifish/dao/QuestionsFeedbackDao.java @@ -0,0 +1,13 @@ +package com.ifish.dao; + +import com.ifish.entity.QuestionsFeedback; + +/** + * @ClassName: QuestionsFeedbackDao + * @Description: TODO + * @author ggw + * + */ +public interface QuestionsFeedbackDao extends BaseDao{ + +} diff --git a/src/main/java/com/ifish/dao/ShopsInfoDao.java b/src/main/java/com/ifish/dao/ShopsInfoDao.java new file mode 100644 index 0000000..9bf0e87 --- /dev/null +++ b/src/main/java/com/ifish/dao/ShopsInfoDao.java @@ -0,0 +1,35 @@ +package com.ifish.dao; + +import java.util.List; + +import com.ifish.dto.ShopsListDto; +import com.ifish.entity.ShopsInfo; +import com.ifish.hibernate.Pagination; + + +/** + * @ClassName: ShopsInfoDao + * @Description: TODO + * @author ggw + * + */ +public interface ShopsInfoDao extends BaseDao{ + + /** + * 根据距离获取数据 + * @param longitude + * @param latitude + * @param firstResult + * @param pageSize + * @return + */ + public Pagination findByDistance(Double longitude,Double latitude,Integer firstResult,Integer pageSize); + + + /** + * 随机取得用户ID + * @return + */ + public List getShopsUserIdByRand(Integer userId); + +} diff --git a/src/main/java/com/ifish/dao/ShopsUserInfoDao.java b/src/main/java/com/ifish/dao/ShopsUserInfoDao.java new file mode 100644 index 0000000..38a0bb4 --- /dev/null +++ b/src/main/java/com/ifish/dao/ShopsUserInfoDao.java @@ -0,0 +1,13 @@ +package com.ifish.dao; + +import com.ifish.entity.ShopsUserInfo; +import com.ifish.entity.ShopsUserInfoId; + +/** + * 商家会员信息dao + * @author Administrator + * + */ +public interface ShopsUserInfoDao extends BaseDao{ + +} diff --git a/src/main/java/com/ifish/dao/UeditorDao.java b/src/main/java/com/ifish/dao/UeditorDao.java new file mode 100644 index 0000000..38679fc --- /dev/null +++ b/src/main/java/com/ifish/dao/UeditorDao.java @@ -0,0 +1,13 @@ +package com.ifish.dao; + +import com.ifish.entity.Ueditor; + +/** + * @ClassName: UeditorDao + * @Description: TODO + * @author ggw + * + */ +public interface UeditorDao extends BaseDao{ + +} diff --git a/src/main/java/com/ifish/dao/UserActivityDao.java b/src/main/java/com/ifish/dao/UserActivityDao.java new file mode 100644 index 0000000..0427f51 --- /dev/null +++ b/src/main/java/com/ifish/dao/UserActivityDao.java @@ -0,0 +1,12 @@ +package com.ifish.dao; + +import com.ifish.entity.UserActivity; + +/** + * 用户动态 + * @author Administrator + * + */ +public interface UserActivityDao extends BaseDao{ + +} diff --git a/src/main/java/com/ifish/dao/UserAssetDao.java b/src/main/java/com/ifish/dao/UserAssetDao.java new file mode 100644 index 0000000..f3e2611 --- /dev/null +++ b/src/main/java/com/ifish/dao/UserAssetDao.java @@ -0,0 +1,12 @@ +package com.ifish.dao; + +import com.ifish.entity.UserAsset; + +/** + * 用户资产(金币,经验值等信息) + * @author Administrator + * + */ +public interface UserAssetDao extends BaseDao{ + +} diff --git a/src/main/java/com/ifish/dao/UserDao.java b/src/main/java/com/ifish/dao/UserDao.java new file mode 100644 index 0000000..827d803 --- /dev/null +++ b/src/main/java/com/ifish/dao/UserDao.java @@ -0,0 +1,42 @@ +package com.ifish.dao; + +import java.util.List; + +import com.ifish.dto.ShopsLookUserDto; +import com.ifish.entity.User; +import com.ifish.hibernate.Pagination; + +/** + * @ClassName: UserDao + * @Description: TODO + * @author ggw + * + */ +public interface UserDao extends BaseDao{ + + /** + * 商家看护下的某个用户的所有摄像头 + * @param shopsUserId + * @param firstResult + * @param pageSize + * @return + */ + public Pagination findByCriteria(Integer shopsUserId,Integer firstResult,Integer pageSize); + + + /** + * 更新用户登陆时间和登陆次数 + * @param userId + * @return + */ + public int executeLoginUpdate(Integer userId,String loginType); + + /** + * 获取用户ID + * @param userId + * @param firstResult + * @param maxResults + * @return + */ + public List getUserIds(Integer userId,Integer firstResult,int maxResults); +} diff --git a/src/main/java/com/ifish/dao/VenderListDao.java b/src/main/java/com/ifish/dao/VenderListDao.java new file mode 100644 index 0000000..d146eeb --- /dev/null +++ b/src/main/java/com/ifish/dao/VenderListDao.java @@ -0,0 +1,18 @@ +package com.ifish.dao; + +import com.ifish.entity.VenderList; +import com.ifish.hibernate.Pagination; + +/** + * @ClassName: VenderListDao + * @Description: TODO + * @author ggw + * + */ +public interface VenderListDao extends BaseDao{ + + public VenderList getDefaultVenderList(); + + public Pagination findByCriteria(Integer firstResult,Integer pageSize); + +} diff --git a/src/main/java/com/ifish/dao/VersionDao.java b/src/main/java/com/ifish/dao/VersionDao.java new file mode 100644 index 0000000..eaab4c5 --- /dev/null +++ b/src/main/java/com/ifish/dao/VersionDao.java @@ -0,0 +1,15 @@ +package com.ifish.dao; + +import com.ifish.entity.Version; + +/** + * @ClassName: UserDao + * @Description: TODO + * @author ggw + * + */ +public interface VersionDao { + + public Version getNewestVersion(String phoneType); + +} diff --git a/src/main/java/com/ifish/daoImpl/AdInfoDaoImpl.java b/src/main/java/com/ifish/daoImpl/AdInfoDaoImpl.java new file mode 100644 index 0000000..06e2d3e --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/AdInfoDaoImpl.java @@ -0,0 +1,20 @@ +package com.ifish.daoImpl; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.AdInfoDao; +import com.ifish.entity.AdInfo; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * 广告信息 + */ +@Repository +public class AdInfoDaoImpl extends HibernateBaseDao implements AdInfoDao { + + @Override + protected Class getEntityClass() { + return AdInfo.class; + } + +} diff --git a/src/main/java/com/ifish/daoImpl/BrowseRoomDaoImpl.java b/src/main/java/com/ifish/daoImpl/BrowseRoomDaoImpl.java new file mode 100644 index 0000000..eaf2c45 --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/BrowseRoomDaoImpl.java @@ -0,0 +1,25 @@ +package com.ifish.daoImpl; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.BrowseRoomDao; +import com.ifish.entity.BrowseRoom; +import com.ifish.entity.BrowseRoomId; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * @ClassName: CameraDaoImpl + * @Description: TODO + * @author ggw + * + */ + +@Repository +public class BrowseRoomDaoImpl extends HibernateBaseDao implements BrowseRoomDao { + + @Override + protected Class getEntityClass() { + return BrowseRoom.class; + } + +} diff --git a/src/main/java/com/ifish/daoImpl/CameraActiveDaoImpl.java b/src/main/java/com/ifish/daoImpl/CameraActiveDaoImpl.java new file mode 100644 index 0000000..4cbdab1 --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/CameraActiveDaoImpl.java @@ -0,0 +1,24 @@ +package com.ifish.daoImpl; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.CameraActiveDao; +import com.ifish.entity.CameraActive; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * @ClassName: CameraActiveDao + * @Description: TODO + * @author ggw + * + */ + +@Repository +public class CameraActiveDaoImpl extends HibernateBaseDao implements CameraActiveDao { + + @Override + public Class getEntityClass() { + return CameraActive.class; + } + +} diff --git a/src/main/java/com/ifish/daoImpl/CameraDaoImpl.java b/src/main/java/com/ifish/daoImpl/CameraDaoImpl.java new file mode 100644 index 0000000..19cef6a --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/CameraDaoImpl.java @@ -0,0 +1,24 @@ +package com.ifish.daoImpl; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.CameraDao; +import com.ifish.entity.Camera; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * @ClassName: CameraDaoImpl + * @Description: TODO + * @author ggw + * + */ + +@Repository +public class CameraDaoImpl extends HibernateBaseDao implements CameraDao { + + @Override + protected Class getEntityClass() { + return Camera.class; + } + +} diff --git a/src/main/java/com/ifish/daoImpl/CameraUserDaoImpl.java b/src/main/java/com/ifish/daoImpl/CameraUserDaoImpl.java new file mode 100644 index 0000000..5b63f2b --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/CameraUserDaoImpl.java @@ -0,0 +1,39 @@ +package com.ifish.daoImpl; + +import java.math.BigInteger; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.CameraUserDao; +import com.ifish.entity.CameraUser; +import com.ifish.entity.CameraUserId; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * @ClassName: CameraUserDaoImpl + * @Description: TODO + * @author ggw + * + */ + +@Repository +public class CameraUserDaoImpl extends HibernateBaseDao implements CameraUserDao { + + @Override + protected Class getEntityClass() { + return CameraUser.class; + } + + /** + * 查询用户的摄像头数量 + * @param userId + * @return + */ + @Override + public int getCameraNumById(Integer userId) { + String sql = "select count(*) from tbl_camera_user where user_id=?"; + int deviceNum = ((BigInteger)this.getSession().createSQLQuery(sql).setInteger(0, userId).uniqueResult()).intValue(); + return deviceNum; + } + +} diff --git a/src/main/java/com/ifish/daoImpl/CommentDaoImpl.java b/src/main/java/com/ifish/daoImpl/CommentDaoImpl.java new file mode 100644 index 0000000..7e6e04a --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/CommentDaoImpl.java @@ -0,0 +1,31 @@ +package com.ifish.daoImpl; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.CommentDao; +import com.ifish.entity.Comment; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * @ClassName: CommentDaoImpl + * @Description: TODO + * @author ggw + * + */ + +@Repository() +public class CommentDaoImpl extends HibernateBaseDao implements CommentDao { + + @Override + protected Class getEntityClass() { + return Comment.class; + } + + @Override + public Integer getPinglunNum(Integer ueditorId) { + //查询评论数据 + String sql = "SELECT count(*) FROM tbl_comment where ueditor_id=?"; + return ((Number)getSession().createSQLQuery(sql).setInteger(0, ueditorId).uniqueResult()).intValue(); + } + +} diff --git a/src/main/java/com/ifish/daoImpl/CouponDaoImpl.java b/src/main/java/com/ifish/daoImpl/CouponDaoImpl.java new file mode 100644 index 0000000..4bf719e --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/CouponDaoImpl.java @@ -0,0 +1,22 @@ +package com.ifish.daoImpl; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.CouponDao; +import com.ifish.entity.Coupon; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * 优惠券 + * @author Administrator + * + */ +@Repository +public class CouponDaoImpl extends HibernateBaseDao implements CouponDao { + + @Override + protected Class getEntityClass() { + return Coupon.class; + } + +} diff --git a/src/main/java/com/ifish/daoImpl/CouponRecordDaoImpl.java b/src/main/java/com/ifish/daoImpl/CouponRecordDaoImpl.java new file mode 100644 index 0000000..7c88270 --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/CouponRecordDaoImpl.java @@ -0,0 +1,37 @@ +package com.ifish.daoImpl; + +import java.math.BigInteger; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.CouponRecordDao; +import com.ifish.entity.CouponRecord; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * 优惠价兑换记录 + * @author Administrator + * + */ +@Repository +public class CouponRecordDaoImpl extends HibernateBaseDao implements CouponRecordDao { + + @Override + protected Class getEntityClass() { + return CouponRecord.class; + } + + @Override + public int getCouponRecordCountByCouponId(Integer couponId) { + String sql = "select count(*) from tbl_coupon_record where coupon_id=?"; + return ((BigInteger)getSession().createSQLQuery(sql).setInteger(0, couponId).uniqueResult()).intValue(); + } + + @Override + public int getCouponRecordCountByUser(Integer userId, Integer couponId) { + String sql = "select count(*) from tbl_coupon_record where user_id=? and coupon_id=?"; + return ((BigInteger)getSession().createSQLQuery(sql).setInteger(0, userId).setInteger(1, couponId).uniqueResult()).intValue(); + } + + +} diff --git a/src/main/java/com/ifish/daoImpl/DeviceCameraDaoImpl.java b/src/main/java/com/ifish/daoImpl/DeviceCameraDaoImpl.java new file mode 100644 index 0000000..bb0529a --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/DeviceCameraDaoImpl.java @@ -0,0 +1,35 @@ +package com.ifish.daoImpl; + +import java.util.List; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.DeviceCameraDao; +import com.ifish.entity.DeviceCamera; +import com.ifish.entity.DeviceCameraId; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * @ClassName: DeviceCameraDaoImpl + * @Description: TODO + * @author ggw + * + */ + +@Repository +public class DeviceCameraDaoImpl extends HibernateBaseDao implements DeviceCameraDao { + + + @Override + protected Class getEntityClass() { + return DeviceCamera.class; + } + + @Override + public void removeAll(List list) { + for (DeviceCamera deviceCamera:list) { + delete(deviceCamera); + } + } + +} diff --git a/src/main/java/com/ifish/daoImpl/DeviceDaoImpl.java b/src/main/java/com/ifish/daoImpl/DeviceDaoImpl.java new file mode 100644 index 0000000..77e704f --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/DeviceDaoImpl.java @@ -0,0 +1,24 @@ +package com.ifish.daoImpl; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.DeviceDao; +import com.ifish.entity.Device; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * @ClassName: DeviceDaoImpl + * @Description: TODO + * @author ggw + * + */ + +@Repository +public class DeviceDaoImpl extends HibernateBaseDao implements DeviceDao { + + @Override + protected Class getEntityClass() { + return Device.class; + } + +} diff --git a/src/main/java/com/ifish/daoImpl/DeviceUserDaoImpl.java b/src/main/java/com/ifish/daoImpl/DeviceUserDaoImpl.java new file mode 100644 index 0000000..db544aa --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/DeviceUserDaoImpl.java @@ -0,0 +1,47 @@ +package com.ifish.daoImpl; + +import java.math.BigInteger; +import java.util.List; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.DeviceUserDao; +import com.ifish.entity.DeviceUser; +import com.ifish.entity.DeviceUserId; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * @ClassName: DeviceUserDaoImpl + * @Description: TODO + * @author ggw + * + */ + +@Repository +public class DeviceUserDaoImpl extends HibernateBaseDao implements DeviceUserDao { + + @Override + protected Class getEntityClass() { + return DeviceUser.class; + } + + @Override + public void removeAll(List list) { + for (DeviceUser deviceUser:list) { + delete(deviceUser); + } + } + + /** + * 查询用户的设备数量 + * @param userId + * @return + */ + @Override + public int getDeviceNumById(Integer userId) { + String sql = "select count(*) from tbl_device_user where user_id=?"; + int deviceNum = ((BigInteger)this.getSession().createSQLQuery(sql).setInteger(0, userId).uniqueResult()).intValue(); + return deviceNum; + } + +} diff --git a/src/main/java/com/ifish/daoImpl/GoldControlDaoImpl.java b/src/main/java/com/ifish/daoImpl/GoldControlDaoImpl.java new file mode 100644 index 0000000..42fcc77 --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/GoldControlDaoImpl.java @@ -0,0 +1,23 @@ +package com.ifish.daoImpl; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.GoldControlDao; +import com.ifish.entity.GoldControl; +import com.ifish.entity.GoldControlId; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * 金币控制信息 + * @author Administrator + * + */ +@Repository +public class GoldControlDaoImpl extends HibernateBaseDao implements GoldControlDao{ + + @Override + protected Class getEntityClass() { + return GoldControl.class; + } + +} diff --git a/src/main/java/com/ifish/daoImpl/GoldExpendRecordDaoImpl.java b/src/main/java/com/ifish/daoImpl/GoldExpendRecordDaoImpl.java new file mode 100644 index 0000000..e0882be --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/GoldExpendRecordDaoImpl.java @@ -0,0 +1,22 @@ +package com.ifish.daoImpl; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.GoldExpendRecordDao; +import com.ifish.entity.GoldExpendRecord; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * 金币消耗记录 + * @author Administrator + * + */ +@Repository +public class GoldExpendRecordDaoImpl extends HibernateBaseDao implements GoldExpendRecordDao { + + @Override + protected Class getEntityClass() { + return GoldExpendRecord.class; + } + +} diff --git a/src/main/java/com/ifish/daoImpl/GoldGetRecordDaoImpl.java b/src/main/java/com/ifish/daoImpl/GoldGetRecordDaoImpl.java new file mode 100644 index 0000000..c940a05 --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/GoldGetRecordDaoImpl.java @@ -0,0 +1,31 @@ +package com.ifish.daoImpl; + +import java.math.BigDecimal; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.GoldGetRecordDao; +import com.ifish.entity.GoldGetRecord; +import com.ifish.enums.GoldGetTypeEnum; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * 金币获取记录 + * @author Administrator + * + */ +@Repository +public class GoldGetRecordDaoImpl extends HibernateBaseDao implements GoldGetRecordDao { + + @Override + protected Class getEntityClass() { + return GoldGetRecord.class; + } + + @Override + public BigDecimal getQuestionPayTourGoldValue(Integer userId) { + String sql = "select sum(get_value) from tbl_gold_get_record where get_type=? and user_id=?"; + return (BigDecimal) getSession().createSQLQuery(sql).setString(0, GoldGetTypeEnum.liveRoomPayTour.getKey()).setInteger(1, userId).uniqueResult(); + } + +} diff --git a/src/main/java/com/ifish/daoImpl/GoldRuleImpl.java b/src/main/java/com/ifish/daoImpl/GoldRuleImpl.java new file mode 100644 index 0000000..237c32a --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/GoldRuleImpl.java @@ -0,0 +1,23 @@ +package com.ifish.daoImpl; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.GoldRuleDao; +import com.ifish.entity.GoldTask; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * 金币获取规则 + * @author Administrator + * + */ +@Repository +public class GoldRuleImpl extends HibernateBaseDao implements GoldRuleDao { + + @Override + protected Class getEntityClass() { + return GoldTask.class; + } + + +} diff --git a/src/main/java/com/ifish/daoImpl/GradeControlDaoImpl.java b/src/main/java/com/ifish/daoImpl/GradeControlDaoImpl.java new file mode 100644 index 0000000..46753f4 --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/GradeControlDaoImpl.java @@ -0,0 +1,23 @@ +package com.ifish.daoImpl; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.GradeControlDao; +import com.ifish.entity.GradeControl; +import com.ifish.entity.GradeControlId; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * 等级信息控制 + * @author Administrator + * + */ +@Repository +public class GradeControlDaoImpl extends HibernateBaseDao implements GradeControlDao { + + @Override + protected Class getEntityClass() { + return GradeControl.class; + } + +} diff --git a/src/main/java/com/ifish/daoImpl/GradeDaoImpl.java b/src/main/java/com/ifish/daoImpl/GradeDaoImpl.java new file mode 100644 index 0000000..1fe43bc --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/GradeDaoImpl.java @@ -0,0 +1,24 @@ +package com.ifish.daoImpl; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.GradeDao; +import com.ifish.entity.Grade; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * @ClassName: GradeDaoImpl + * @Description: TODO + * @author ggw + * + */ + +@Repository +public class GradeDaoImpl extends HibernateBaseDao implements GradeDao { + + @Override + protected Class getEntityClass() { + return Grade.class; + } + +} diff --git a/src/main/java/com/ifish/daoImpl/GradeRecordDaoImpl.java b/src/main/java/com/ifish/daoImpl/GradeRecordDaoImpl.java new file mode 100644 index 0000000..814ae18 --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/GradeRecordDaoImpl.java @@ -0,0 +1,24 @@ +package com.ifish.daoImpl; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.GradeRecordDao; +import com.ifish.entity.GradeRecord; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * @ClassName: GradeRecordDaoImpl + * @Description: TODO + * @author ggw + * + */ + +@Repository +public class GradeRecordDaoImpl extends HibernateBaseDao implements GradeRecordDao { + + @Override + protected Class getEntityClass() { + return GradeRecord.class; + } + +} diff --git a/src/main/java/com/ifish/daoImpl/GradeRuleImpl.java b/src/main/java/com/ifish/daoImpl/GradeRuleImpl.java new file mode 100644 index 0000000..ee7a7ea --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/GradeRuleImpl.java @@ -0,0 +1,24 @@ +package com.ifish.daoImpl; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.GradeRuleDao; +import com.ifish.entity.GradeTask; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * @ClassName: GradeRuleImpl + * @Description: TODO + * @author ggw + * + */ + +@Repository +public class GradeRuleImpl extends HibernateBaseDao implements GradeRuleDao { + + @Override + protected Class getEntityClass() { + return GradeTask.class; + } + +} diff --git a/src/main/java/com/ifish/daoImpl/HardwareTypeDaoImpl.java b/src/main/java/com/ifish/daoImpl/HardwareTypeDaoImpl.java new file mode 100644 index 0000000..43d1082 --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/HardwareTypeDaoImpl.java @@ -0,0 +1,25 @@ +package com.ifish.daoImpl; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.HardwareTypeDao; +import com.ifish.entity.HardwareType; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * @ClassName: HardwareTypeDaoImpl + * @Description: TODO + * @author ggw + * + */ + +@Repository +public class HardwareTypeDaoImpl extends HibernateBaseDao implements HardwareTypeDao { + + + @Override + protected Class getEntityClass() { + return HardwareType.class; + } + +} diff --git a/src/main/java/com/ifish/daoImpl/IfishDoctorDaoImpl.java b/src/main/java/com/ifish/daoImpl/IfishDoctorDaoImpl.java new file mode 100644 index 0000000..2607cd8 --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/IfishDoctorDaoImpl.java @@ -0,0 +1,24 @@ +package com.ifish.daoImpl; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.IfishDoctorDao; +import com.ifish.entity.IfishDoctor; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * @ClassName: IfishDoctorDaoImpl + * @Description: TODO + * @author ggw + * + */ + +@Repository +public class IfishDoctorDaoImpl extends HibernateBaseDao implements IfishDoctorDao { + + @Override + protected Class getEntityClass() { + return IfishDoctor.class; + } + +} diff --git a/src/main/java/com/ifish/daoImpl/IfishGoodsDaoImpl.java b/src/main/java/com/ifish/daoImpl/IfishGoodsDaoImpl.java new file mode 100644 index 0000000..61d3ed8 --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/IfishGoodsDaoImpl.java @@ -0,0 +1,22 @@ +package com.ifish.daoImpl; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.IfishGoodsDao; +import com.ifish.entity.IfishGoods; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * 商品管理dao + * @author Administrator + * + */ +@Repository +public class IfishGoodsDaoImpl extends HibernateBaseDao implements IfishGoodsDao { + + @Override + protected Class getEntityClass() { + return IfishGoods.class; + } + +} diff --git a/src/main/java/com/ifish/daoImpl/IfishShopDaoImpl.java b/src/main/java/com/ifish/daoImpl/IfishShopDaoImpl.java new file mode 100644 index 0000000..b7a4e23 --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/IfishShopDaoImpl.java @@ -0,0 +1,22 @@ +package com.ifish.daoImpl; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.IfishShopDao; +import com.ifish.entity.IfishShop; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * 店铺管理dao + * @author Administrator + * + */ +@Repository +public class IfishShopDaoImpl extends HibernateBaseDao implements IfishShopDao { + + @Override + protected Class getEntityClass() { + return IfishShop.class; + } + +} diff --git a/src/main/java/com/ifish/daoImpl/InformationDaoImpl.java b/src/main/java/com/ifish/daoImpl/InformationDaoImpl.java new file mode 100644 index 0000000..a67c5f0 --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/InformationDaoImpl.java @@ -0,0 +1,24 @@ +package com.ifish.daoImpl; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.InformationDao; +import com.ifish.entity.Information; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * @ClassName: InformationDaoImpl + * @Description: TODO + * @author ggw + * + */ + +@Repository("informationDao") +public class InformationDaoImpl extends HibernateBaseDao implements InformationDao { + + @Override + protected Class getEntityClass() { + return Information.class; + } + +} diff --git a/src/main/java/com/ifish/daoImpl/InformationStatsDaoImpl.java b/src/main/java/com/ifish/daoImpl/InformationStatsDaoImpl.java new file mode 100644 index 0000000..610f27d --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/InformationStatsDaoImpl.java @@ -0,0 +1,22 @@ +package com.ifish.daoImpl; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.InformationStatsDao; +import com.ifish.entity.InformationStats; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * 资讯数据统计 + * @author Administrator + * + */ +@Repository +public class InformationStatsDaoImpl extends HibernateBaseDao implements InformationStatsDao { + + @Override + protected Class getEntityClass() { + return InformationStats.class; + } + +} diff --git a/src/main/java/com/ifish/daoImpl/LiveBannerImpl.java b/src/main/java/com/ifish/daoImpl/LiveBannerImpl.java new file mode 100644 index 0000000..93e00c9 --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/LiveBannerImpl.java @@ -0,0 +1,24 @@ +package com.ifish.daoImpl; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.LiveBannerDao; +import com.ifish.entity.LiveBanner; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * @ClassName: LiveBannerImpl + * @Description: TODO + * @author ggw + * + */ + +@Repository +public class LiveBannerImpl extends HibernateBaseDao implements LiveBannerDao { + + @Override + protected Class getEntityClass() { + return LiveBanner.class; + } + +} diff --git a/src/main/java/com/ifish/daoImpl/LiveMessageDaoImpl.java b/src/main/java/com/ifish/daoImpl/LiveMessageDaoImpl.java new file mode 100644 index 0000000..0597c45 --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/LiveMessageDaoImpl.java @@ -0,0 +1,32 @@ +package com.ifish.daoImpl; + +import java.math.BigInteger; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.LiveMessageDao; +import com.ifish.entity.LiveMessage; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * @ClassName: LiveMessageDaoImpl + * @Description: TODO + * @author ggw + * + */ + +@Repository +public class LiveMessageDaoImpl extends HibernateBaseDao implements LiveMessageDao { + + @Override + protected Class getEntityClass() { + return LiveMessage.class; + } + + @Override + public int getLiveMessageCount(Integer roomId) { + String sql = "SELECT COUNT(*) FROM tbl_live_message WHERE room_id=?"; + return ((BigInteger)getSession().createSQLQuery(sql).setInteger(0, roomId).uniqueResult()).intValue(); + } + +} diff --git a/src/main/java/com/ifish/daoImpl/LiveRoomImpl.java b/src/main/java/com/ifish/daoImpl/LiveRoomImpl.java new file mode 100644 index 0000000..a590e9b --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/LiveRoomImpl.java @@ -0,0 +1,203 @@ +package com.ifish.daoImpl; + +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.List; + +import org.hibernate.SQLQuery; +import org.hibernate.transform.Transformers; +import org.springframework.stereotype.Repository; + +import com.ifish.dao.LiveRoomDao; +import com.ifish.dto.LiveRoomInfoDto; +import com.ifish.entity.LiveRoom; +import com.ifish.enums.BooleanEnum; +import com.ifish.enums.RoomStatusEnum; +import com.ifish.hibernate.HibernateBaseDao; +import com.ifish.hibernate.Pagination; + +/** + * @ClassName: LiveRoomImpl + * @Description: TODO + * @author ggw + * + */ + +@Repository +public class LiveRoomImpl extends HibernateBaseDao implements LiveRoomDao { + + @Override + protected Class getEntityClass() { + return LiveRoom.class; + } + + @SuppressWarnings("unchecked") + @Override + public List findByDistance(Double longitude,Double latitude) { + if(longitude!=null && latitude!=null){ + String sql = "select l.room_id AS roomId,u.user_id AS userId,u.user_type AS userType,u.nick_name AS nickName,u.user_img AS userImg,u.login_time AS loginTime,c.camera_id AS cameraId,l.room_name AS roomName,l.room_desc AS roomDesc,l.popularity_value AS popularityValue,(TO_DAYS(NOW())-TO_DAYS(l.create_time)) AS numberDays,round(6378.138*2*asin(sqrt(pow(sin((?*pi()/180-u.latitude*pi()/180)/2),2)+cos(?*pi()/180)*cos(u.latitude*pi()/180)* pow(sin((?*pi()/180-u.longitude*pi()/180)/2),2)))*1000) AS distance from tbl_user u LEFT JOIN tbl_camera_user c ON u.user_id=c.user_id LEFT JOIN tbl_live_room l on c.user_id=l.user_id WHERE c.is_live=? AND l.room_status=? HAVING distance IS NOT NULL ORDER BY distance ASC LIMIT 5"; + return this.getSession().createSQLQuery(sql) + .setParameter(0, latitude) + .setParameter(1, latitude) + .setParameter(2, longitude) + .setParameter(3, BooleanEnum.YES.getKey()) + .setParameter(4, RoomStatusEnum.status1.getKey()) + .setResultTransformer(Transformers.aliasToBean(LiveRoomInfoDto.class)) + .list(); + } + else{ + return new ArrayList(); + } + } + + @SuppressWarnings("unchecked") + @Override + public List findByBrowse(Integer userId) { + if(userId!=null){ + String sql = "select l.room_id AS roomId,u.user_id AS userId,u.user_type AS userType,u.nick_name AS nickName,u.user_img AS userImg,u.login_time AS loginTime,c.camera_id AS cameraId,l.room_name AS roomName,l.room_desc AS roomDesc,l.popularity_value AS popularityValue,(TO_DAYS(NOW())-TO_DAYS(l.create_time)) AS numberDays from tbl_browse_room b LEFT JOIN tbl_live_room l ON b.room_id=l.room_id LEFT JOIN tbl_camera_user c ON c.user_id=l.user_id LEFT JOIN tbl_user u ON c.user_id=u.user_id where b.user_id=? AND c.is_live=? AND l.room_status=? ORDER BY b.update_time DESC LIMIT 5"; + return this.getSession().createSQLQuery(sql) + .setParameter(0, userId) + .setParameter(1, BooleanEnum.YES.getKey()) + .setParameter(2, RoomStatusEnum.status1.getKey()) + .setResultTransformer(Transformers.aliasToBean(LiveRoomInfoDto.class)) + .list(); + } + else{ + return new ArrayList(); + } + } + + @SuppressWarnings("unchecked") + @Override + public List findByPopularityValue() { + String sql = "select l.room_id AS roomId,u.user_id AS userId,u.user_type AS userType,u.nick_name AS nickName,u.user_img AS userImg,u.login_time AS loginTime,c.camera_id AS cameraId,l.room_name AS roomName,l.room_desc AS roomDesc,l.popularity_value AS popularityValue,(TO_DAYS(NOW())-TO_DAYS(l.create_time)) AS numberDays from tbl_user u LEFT JOIN tbl_camera_user c ON u.user_id=c.user_id LEFT JOIN tbl_live_room l ON u.user_id=l.user_id WHERE c.is_live=? AND l.room_status=? ORDER BY l.popularity_value DESC LIMIT 5"; + return this.getSession().createSQLQuery(sql) + .setParameter(0, BooleanEnum.YES.getKey()) + .setParameter(1, RoomStatusEnum.status1.getKey()) + .setResultTransformer(Transformers.aliasToBean(LiveRoomInfoDto.class)) + .list(); + } + + @SuppressWarnings("unchecked") + @Override + public Pagination findByTime(Integer firstResult,Integer pageSize,String orders) { + //综合数据 + Integer length = 0; + String[] strOrder = null; + if(orders!=null && orders.length()>0){ + strOrder = orders.split(","); + length = strOrder.length; + } + //总条数 + String countSql = "select count(*) from tbl_user u LEFT JOIN tbl_camera_user c ON u.user_id=c.user_id LEFT JOIN tbl_live_room l ON u.user_id=l.user_id WHERE ### c.is_live=? AND l.room_status=? ORDER BY l.create_time DESC"; + //分页数据 + String sql = "select l.room_id AS roomId,u.user_id AS userId,u.user_type AS userType,u.nick_name AS nickName,u.user_img AS userImg,u.login_time AS loginTime,l.create_time AS createTime,c.camera_id AS cameraId,l.room_name AS roomName,l.room_desc AS roomDesc,l.popularity_value AS popularityValue,(TO_DAYS(NOW())-TO_DAYS(l.create_time)) AS numberDays from tbl_user u LEFT JOIN tbl_camera_user c ON u.user_id=c.user_id LEFT JOIN tbl_live_room l ON u.user_id=l.user_id WHERE ### c.is_live=? AND l.room_status=? ORDER BY l.create_time DESC LIMIT ?,?"; + //查询条件去除综合数据 + Object[] intOrder = new Integer[length]; + StringBuilder pingjie = new StringBuilder(""); + if(length>0){ + pingjie.append("l.room_id NOT IN ("); + for (int i = 0; i < length; i++) { + if(i==0){ + pingjie.append("?"); + } + else{ + pingjie.append(",?"); + } + intOrder[i] = Integer.valueOf(strOrder[i]); + } + pingjie.append(") AND"); + } + countSql = countSql.replaceAll("###", pingjie.toString()); + sql = sql.replaceAll("###", pingjie.toString()); + //查询total + SQLQuery countQuery = this.getSession().createSQLQuery(countSql); + if(length>0){ + for (int i = 0; i < length; i++) { + countQuery.setParameter(i, intOrder[i]); + } + countQuery.setParameter(length, BooleanEnum.YES.getKey()); + countQuery.setParameter((length+1), RoomStatusEnum.status1.getKey()); + } + else{ + countQuery.setParameter(0, BooleanEnum.YES.getKey()); + countQuery.setParameter(1, RoomStatusEnum.status1.getKey()); + } + int totalCount = ((BigInteger)countQuery.uniqueResult()).intValue(); + //分页数据 + SQLQuery query = this.getSession().createSQLQuery(sql); + if(length>0){ + for (int i = 0; i < length; i++) { + query.setParameter(i, intOrder[i]); + } + query.setParameter(length, BooleanEnum.YES.getKey()); + query.setParameter((length+1), RoomStatusEnum.status1.getKey()); + query.setParameter((length+2), firstResult); + query.setParameter((length+3), pageSize); + } + else{ + query.setParameter(0, BooleanEnum.YES.getKey()); + query.setParameter(1, RoomStatusEnum.status1.getKey()); + query.setParameter(2, firstResult); + query.setParameter(3, pageSize); + } + List list = query.setResultTransformer(Transformers.aliasToBean(LiveRoomInfoDto.class)).list(); + //分页封装 + Pagination page = new Pagination(); + page.setTotalCount(totalCount); + page.setList(list); + return page; + + } + + @SuppressWarnings("unchecked") + @Override + public Pagination findByPopularityValue(Integer firstResult,Integer pageSize) { + //总条数 + String countSql = "select count(*) from tbl_user u LEFT JOIN tbl_camera_user c ON u.user_id=c.user_id LEFT JOIN tbl_live_room l ON u.user_id=l.user_id WHERE c.is_live=? AND l.room_status=? ORDER BY l.popularity_value DESC"; + int totalCount = ((BigInteger) this.getSession().createSQLQuery(countSql) + .setParameter(0, BooleanEnum.YES.getKey()) + .setParameter(1, RoomStatusEnum.status1.getKey()) + .uniqueResult()).intValue(); + String sql = "select l.room_id AS roomId,u.user_id AS userId,u.user_type AS userType,u.nick_name AS nickName,u.user_img AS userImg,u.login_time AS loginTime,c.camera_id AS cameraId,l.room_name AS roomName,l.room_desc AS roomDesc,l.popularity_value AS popularityValue,(TO_DAYS(NOW())-TO_DAYS(l.create_time)) AS numberDays from tbl_user u LEFT JOIN tbl_camera_user c ON u.user_id=c.user_id LEFT JOIN tbl_live_room l ON u.user_id=l.user_id WHERE c.is_live=? AND l.room_status=? ORDER BY l.popularity_value DESC LIMIT ?,?"; + //分页数据 + List list = this.getSession().createSQLQuery(sql) + .setParameter(0, BooleanEnum.YES.getKey()) + .setParameter(1, RoomStatusEnum.status1.getKey()) + .setParameter(2, firstResult) + .setParameter(3, pageSize) + .setResultTransformer(Transformers.aliasToBean(LiveRoomInfoDto.class)) + .list(); + //分页封装 + Pagination page = new Pagination(); + page.setTotalCount(totalCount); + page.setList(list); + return page; + } + + @SuppressWarnings("unchecked") + @Override + public Pagination getLiveRoomsByTuijian(Integer firstResult, Integer pageSize) { + //总条数 + String countSql = "select count(*) from tbl_user u LEFT JOIN tbl_camera_user c ON u.user_id=c.user_id LEFT JOIN tbl_live_room l ON u.user_id=l.user_id WHERE c.is_live=? AND l.room_status=? ORDER BY l.popularity_value DESC"; + int totalCount = ((BigInteger) this.getSession().createSQLQuery(countSql) + .setParameter(0, BooleanEnum.YES.getKey()) + .setParameter(1, RoomStatusEnum.status1.getKey()) + .uniqueResult()).intValue(); + String sql = "select l.room_id AS roomId,u.user_id AS userId,u.user_type AS userType,u.nick_name AS nickName,u.user_img AS userImg,u.login_time AS loginTime,c.camera_id AS cameraId,l.room_name AS roomName,l.room_desc AS roomDesc,l.popularity_value AS popularityValue,(TO_DAYS(NOW())-TO_DAYS(l.create_time)) AS numberDays from tbl_user u LEFT JOIN tbl_camera_user c ON u.user_id=c.user_id LEFT JOIN tbl_live_room l ON u.user_id=l.user_id WHERE l.is_tuijian='1' AND c.is_live=? AND l.room_status=? ORDER BY l.tuijian_num ASC LIMIT ?,?"; + //分页数据 + List list = this.getSession().createSQLQuery(sql) + .setParameter(0, BooleanEnum.YES.getKey()) + .setParameter(1, RoomStatusEnum.status1.getKey()) + .setParameter(2, firstResult) + .setParameter(3, pageSize) + .setResultTransformer(Transformers.aliasToBean(LiveRoomInfoDto.class)) + .list(); + //分页封装 + Pagination page = new Pagination(); + page.setTotalCount(totalCount); + page.setList(list); + return page; + } + +} diff --git a/src/main/java/com/ifish/daoImpl/LiveRoomZanDaoImpl.java b/src/main/java/com/ifish/daoImpl/LiveRoomZanDaoImpl.java new file mode 100644 index 0000000..f9c239c --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/LiveRoomZanDaoImpl.java @@ -0,0 +1,31 @@ +package com.ifish.daoImpl; + +import java.math.BigInteger; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.LiveRoomZanDao; +import com.ifish.entity.LiveRoomZan; +import com.ifish.entity.LiveRoomZanId; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * 直播间点赞 + * @author Administrator + * + */ +@Repository +public class LiveRoomZanDaoImpl extends HibernateBaseDao implements LiveRoomZanDao { + + @Override + protected Class getEntityClass() { + return LiveRoomZan.class; + } + + @Override + public Integer getZanNum(Integer roomId) { + String sql = "select count(*) from tbl_live_room_zan where room_id=?"; + return ((BigInteger)getSession().createSQLQuery(sql).setInteger(0, roomId).uniqueResult()).intValue(); + } + +} diff --git a/src/main/java/com/ifish/daoImpl/LookReportDaoImpl.java b/src/main/java/com/ifish/daoImpl/LookReportDaoImpl.java new file mode 100644 index 0000000..f93e650 --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/LookReportDaoImpl.java @@ -0,0 +1,24 @@ +package com.ifish.daoImpl; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.LookReportDao; +import com.ifish.entity.LookReport; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * @ClassName: LookReportDaoImpl + * @Description: TODO + * @author ggw + * + */ + +@Repository +public class LookReportDaoImpl extends HibernateBaseDao implements LookReportDao { + + @Override + protected Class getEntityClass() { + return LookReport.class; + } + +} diff --git a/src/main/java/com/ifish/daoImpl/PushListDaoImpl.java b/src/main/java/com/ifish/daoImpl/PushListDaoImpl.java new file mode 100644 index 0000000..508c7cd --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/PushListDaoImpl.java @@ -0,0 +1,51 @@ +package com.ifish.daoImpl; + +import java.util.ArrayList; +import java.util.List; + +import org.hibernate.criterion.Criterion; +import org.hibernate.criterion.Order; +import org.hibernate.criterion.Restrictions; +import org.springframework.stereotype.Repository; + +import com.ifish.dao.PushListDao; +import com.ifish.entity.PushList; +import com.ifish.enums.PushTypeEnum; +import com.ifish.hibernate.HibernateBaseDao; +import com.ifish.hibernate.Pagination; + +/** + * @ClassName: PushListDaoImpl + * @Description: TODO + * @author ggw + * + */ + +@Repository +public class PushListDaoImpl extends HibernateBaseDao implements PushListDao { + + @Override + protected Class getEntityClass() { + return PushList.class; + } + + @Override + public Pagination findByCriteria(Integer pushId,Integer userId,Integer firstResult, Integer pageSize) { + //查询条件 + List queryList = new ArrayList(); + if(pushId!=null){ + Criterion criterion = Restrictions.gt("pushId", pushId); + queryList.add(criterion); + } + if(userId!=null){ + Criterion criterion = Restrictions.or(Restrictions.eq("userId", userId),Restrictions.eq("pushType", PushTypeEnum.all_push.getKey())); + queryList.add(criterion); + } + else{ + Criterion criterion = Restrictions.eq("pushType", PushTypeEnum.all_push.getKey()); + queryList.add(criterion); + } + return this.findByCriteria(firstResult, pageSize,Order.desc("pushId"), queryList.toArray(new Criterion[queryList.size()])); + } + +} diff --git a/src/main/java/com/ifish/daoImpl/QuestionsFeedbackDaoImpl.java b/src/main/java/com/ifish/daoImpl/QuestionsFeedbackDaoImpl.java new file mode 100644 index 0000000..8542acc --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/QuestionsFeedbackDaoImpl.java @@ -0,0 +1,25 @@ +package com.ifish.daoImpl; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.QuestionsFeedbackDao; +import com.ifish.entity.QuestionsFeedback; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * @ClassName: QuestionsFeedbackDaoImpl + * @Description: TODO + * @author ggw + * + */ + +@Repository +public class QuestionsFeedbackDaoImpl extends HibernateBaseDao implements QuestionsFeedbackDao { + + + @Override + protected Class getEntityClass() { + return QuestionsFeedback.class; + } + +} diff --git a/src/main/java/com/ifish/daoImpl/ShopsInfoDaoImpl.java b/src/main/java/com/ifish/daoImpl/ShopsInfoDaoImpl.java new file mode 100644 index 0000000..56953a7 --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/ShopsInfoDaoImpl.java @@ -0,0 +1,78 @@ +package com.ifish.daoImpl; + +import java.math.BigInteger; +import java.util.List; + +import org.hibernate.transform.Transformers; +import org.springframework.stereotype.Repository; + +import com.ifish.dao.ShopsInfoDao; +import com.ifish.dto.ShopsListDto; +import com.ifish.entity.ShopsInfo; +import com.ifish.enums.BooleanEnum; +import com.ifish.enums.ShopsStatusEnum; +import com.ifish.hibernate.HibernateBaseDao; +import com.ifish.hibernate.Pagination; + +/** + * @ClassName: ShopsInfoDaoImpl + * @Description: TODO + * @author ggw + * + */ + +@Repository +public class ShopsInfoDaoImpl extends HibernateBaseDao implements ShopsInfoDao { + + @Override + protected Class getEntityClass() { + return ShopsInfo.class; + } + + @SuppressWarnings("unchecked") + @Override + public Pagination findByDistance(Double longitude,Double latitude,Integer firstResult, Integer pageSize) { + //总条数 + String countSql = "select count(*) from tbl_shops_info where status=?"; + int totalCount = ((BigInteger) this.getSession().createSQLQuery(countSql) + .setParameter(0, ShopsStatusEnum.status1.getKey()) + .uniqueResult()).intValue(); + String sql ="select s.shops_id shopsId,s.is_ping_bi as isPingBi,s.user_id AS userId,u.user_img AS userImg,u.nick_name AS userName,s.shops_name AS shopsName,s.shops_phone AS shopsPhone,s.shops_province AS shopsProvince,s.shops_city AS shopsCity,s.shops_area AS shopsArea,s.shops_address AS shopsAddress,s.picture4 AS picture4,s.remark AS remark,s.weixin_code AS weixinCode,s.shop_link AS shopLink,ifnull(round(6378.138*2*asin(sqrt(pow(sin((?*pi()/180-u.latitude*pi()/180)/2),2)+cos(?*pi()/180)*cos(u.latitude*pi()/180)*pow(sin((?*pi()/180-u.longitude*pi()/180)/2),2)))*1000),99999999999) AS distance from tbl_shops_info s LEFT JOIN tbl_user u ON s.user_id=u.user_id where s.status=? and app_show=? ORDER BY distance ASC LIMIT ?,?"; + //分页数据 + List list = this.getSession().createSQLQuery(sql) + .setParameter(0, latitude) + .setParameter(1, latitude) + .setParameter(2, longitude) + .setParameter(3, ShopsStatusEnum.status1.getKey()) + .setParameter(4, BooleanEnum.YES.getKey()) + .setParameter(5, firstResult) + .setParameter(6, pageSize) + .setResultTransformer(Transformers.aliasToBean(ShopsListDto.class)) + .list(); + String pingbiMsg = "请通过下方咨询联系我"; + for (ShopsListDto shopsList : list) { + if(shopsList.getIsPingBi().equals(BooleanEnum.YES.getKey())){ + shopsList.setShopsAddress(""); + shopsList.setShopsPhone(pingbiMsg); + shopsList.setWeixinCode(pingbiMsg); + shopsList.setShopLink(pingbiMsg); + } + } + //分页封装 + Pagination page = new Pagination(); + page.setTotalCount(totalCount); + page.setList(list); + return page; + } + + @Override + @SuppressWarnings("unchecked") + public List getShopsUserIdByRand(Integer userId) { + String sql = "SELECT user_id FROM tbl_shops_info WHERE status='1' AND user_id!=? AND user_id!=12 AND app_show='1' ORDER BY RAND() LIMIT 9"; + List list = this.getSession().createSQLQuery(sql).setParameter(0, userId).list(); + //固定发送给小陈 + list.add(12); + return list; + } + +} diff --git a/src/main/java/com/ifish/daoImpl/ShopsUserInfoDaoImpl.java b/src/main/java/com/ifish/daoImpl/ShopsUserInfoDaoImpl.java new file mode 100644 index 0000000..0cfa640 --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/ShopsUserInfoDaoImpl.java @@ -0,0 +1,23 @@ +package com.ifish.daoImpl; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.ShopsUserInfoDao; +import com.ifish.entity.ShopsUserInfo; +import com.ifish.entity.ShopsUserInfoId; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * 商家会员信息 + * @author Administrator + * + */ +@Repository +public class ShopsUserInfoDaoImpl extends HibernateBaseDao implements ShopsUserInfoDao{ + + @Override + protected Class getEntityClass() { + return ShopsUserInfo.class; + } + +} \ No newline at end of file diff --git a/src/main/java/com/ifish/daoImpl/UeditorDaoImpl.java b/src/main/java/com/ifish/daoImpl/UeditorDaoImpl.java new file mode 100644 index 0000000..470e51b --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/UeditorDaoImpl.java @@ -0,0 +1,24 @@ +package com.ifish.daoImpl; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.UeditorDao; +import com.ifish.entity.Ueditor; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * @ClassName: UeditorDaoImpl + * @Description: TODO + * @author ggw + * + */ + +@Repository() +public class UeditorDaoImpl extends HibernateBaseDao implements UeditorDao { + + @Override + protected Class getEntityClass() { + return Ueditor.class; + } + +} diff --git a/src/main/java/com/ifish/daoImpl/UserActivityDaoImpl.java b/src/main/java/com/ifish/daoImpl/UserActivityDaoImpl.java new file mode 100644 index 0000000..3cda09d --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/UserActivityDaoImpl.java @@ -0,0 +1,22 @@ +package com.ifish.daoImpl; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.UserActivityDao; +import com.ifish.entity.UserActivity; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * 用户动态 + * @author Administrator + * + */ +@Repository +public class UserActivityDaoImpl extends HibernateBaseDaoimplements UserActivityDao { + + @Override + protected Class getEntityClass() { + return UserActivity.class; + } + +} diff --git a/src/main/java/com/ifish/daoImpl/UserAssetDaoImpl.java b/src/main/java/com/ifish/daoImpl/UserAssetDaoImpl.java new file mode 100644 index 0000000..5c13948 --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/UserAssetDaoImpl.java @@ -0,0 +1,17 @@ +package com.ifish.daoImpl; + +import org.springframework.stereotype.Repository; + +import com.ifish.dao.UserAssetDao; +import com.ifish.entity.UserAsset; +import com.ifish.hibernate.HibernateBaseDao; + +@Repository +public class UserAssetDaoImpl extends HibernateBaseDao implements UserAssetDao { + + @Override + protected Class getEntityClass() { + return UserAsset.class; + } + +} diff --git a/src/main/java/com/ifish/daoImpl/UserDaoImpl.java b/src/main/java/com/ifish/daoImpl/UserDaoImpl.java new file mode 100644 index 0000000..7e2b116 --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/UserDaoImpl.java @@ -0,0 +1,66 @@ +package com.ifish.daoImpl; + +import java.util.List; + +import org.hibernate.Query; +import org.hibernate.transform.Transformers; +import org.springframework.stereotype.Repository; + +import com.ifish.dao.UserDao; +import com.ifish.dto.ShopsLookUserDto; +import com.ifish.entity.User; +import com.ifish.enums.BooleanEnum; +import com.ifish.hibernate.HibernateBaseDao; +import com.ifish.hibernate.Pagination; + +/** + * @ClassName: UserDaoImpl + * @Description: TODO + * @author ggw + * + */ + +@Repository +public class UserDaoImpl extends HibernateBaseDao implements UserDao { + + @Override + protected Class getEntityClass() { + return User.class; + } + + + @Override + public User update(User user) { + getSession().update(user); + return user; + } + + @SuppressWarnings("unchecked") + @Override + public Pagination findByCriteria(Integer shopsUserId,Integer firstResult, Integer pageSize) { + String sql = "select u.user_id as userId,u.nick_name as nickName,c.camera_id as cameraId,u.user_img as userImg from tbl_user u LEFT JOIN tbl_camera_user c ON u.user_id=c.user_id where c.is_look=1 and shops_user_id="+shopsUserId; + List list = this.getSession().createSQLQuery(sql).setResultTransformer(Transformers.aliasToBean(ShopsLookUserDto.class)).list(); + Pagination page = new Pagination(); + page.setTotalCount(list.size()); + page.setList(list); + return page; + } + + + @Override + public int executeLoginUpdate(Integer userId,String loginType) { + String sql = "update tbl_user set login_count=if(login_count is null,1,login_count+1),login_type=?,login_time=current_timestamp() where user_id=?"; + Query query = this.getSession().createSQLQuery(sql).setString(0, loginType).setInteger(1, userId); + return query.executeUpdate(); + } + + + @SuppressWarnings("unchecked") + @Override + public List getUserIds(Integer userId,Integer firstResult, int maxResults) { + String sql = "select user_id from tbl_user where user_id!=? and is_register_netease=? limit ?,?"; + List list = this.getSession().createSQLQuery(sql).setInteger(0, userId).setString(1, BooleanEnum.YES.getKey()).setInteger(2, firstResult).setInteger(3,maxResults).list(); + return list; + } + +} diff --git a/src/main/java/com/ifish/daoImpl/VenderListDaoImpl.java b/src/main/java/com/ifish/daoImpl/VenderListDaoImpl.java new file mode 100644 index 0000000..bfe6445 --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/VenderListDaoImpl.java @@ -0,0 +1,41 @@ +package com.ifish.daoImpl; + +import org.hibernate.criterion.Criterion; +import org.hibernate.criterion.Restrictions; +import org.springframework.stereotype.Repository; + +import com.ifish.dao.VenderListDao; +import com.ifish.entity.VenderList; +import com.ifish.enums.BooleanEnum; +import com.ifish.hibernate.HibernateBaseDao; +import com.ifish.hibernate.Pagination; + +/** + * @ClassName: VenderDaoImpl + * @Description: TODO + * @author ggw + * + */ + +@Repository +public class VenderListDaoImpl extends HibernateBaseDao implements VenderListDao { + + @Override + protected Class getEntityClass() { + return VenderList.class; + } + + + @Override + public Pagination findByCriteria(Integer firstResult, Integer pageSize) { + Criterion appShow = Restrictions.eq("appShow", BooleanEnum.YES.getKey()); + Criterion brandCode = Restrictions.ne("brandCode", "AYQ"); + return this.findByCriteria(firstResult, pageSize,null, appShow ,brandCode); + } + + + @Override + public VenderList getDefaultVenderList() { + return this.get("AYQ"); + } +} diff --git a/src/main/java/com/ifish/daoImpl/VersionDaoImpl.java b/src/main/java/com/ifish/daoImpl/VersionDaoImpl.java new file mode 100644 index 0000000..2c31d2b --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/VersionDaoImpl.java @@ -0,0 +1,44 @@ +package com.ifish.daoImpl; + +import org.hibernate.SQLQuery; +import org.hibernate.transform.Transformers; +import org.springframework.stereotype.Repository; + +import com.ifish.dao.VersionDao; +import com.ifish.entity.Version; +import com.ifish.hibernate.HibernateBaseDao; + +/** + * @ClassName: UserDaoImpl + * @Description: TODO + * @author ggw + * + */ + +@Repository +public class VersionDaoImpl extends HibernateBaseDao implements VersionDao { + + + @Override + protected Class getEntityClass() { + return Version.class; + } + + @Override + public Version getNewestVersion(String phoneType) { + String sql = "select version_id as versionId,version_code as versionCode,phone_type as phoneType,upload_content as uploadContent,app_address as appAddress,is_must_update as isMustUpdate,create_time as createTime from tbl_version where phone_type=? order by versionId desc"; + SQLQuery query = this.getSession().createSQLQuery(sql); + query.setString(0, phoneType); + query.addScalar("versionId") + .addScalar("versionCode") + .addScalar("phoneType") + .addScalar("uploadContent") + .addScalar("appAddress") + .addScalar("isMustUpdate") + .addScalar("createTime") + .setResultTransformer(Transformers.aliasToBean(Version.class)); + return (Version) query.list().get(0); + } + + +} diff --git a/src/main/java/com/ifish/dto/AdInfoDto.java b/src/main/java/com/ifish/dto/AdInfoDto.java new file mode 100644 index 0000000..3891da1 --- /dev/null +++ b/src/main/java/com/ifish/dto/AdInfoDto.java @@ -0,0 +1,69 @@ +package com.ifish.dto; + +public class AdInfoDto { + + /** + * id + */ + private Integer adId; + /** + * 广告类型 + */ + private Integer adType; + /** + * 广告图片 + */ + private String adImage; + /** + * 广告链接 + */ + private String adLink; + /** + * 排序号 + */ + private Integer orderNum; + + public AdInfoDto() {} + + public AdInfoDto(Integer adId, Integer adType, String adImage, String adLink, Integer orderNum) { + this.adId = adId; + this.adType = adType; + this.adImage = adImage; + this.adLink = adLink; + this.orderNum = orderNum; + } + + public Integer getOrderNum() { + return orderNum; + } + + public void setOrderNum(Integer orderNum) { + this.orderNum = orderNum; + } + + public Integer getAdId() { + return adId; + } + public void setAdId(Integer adId) { + this.adId = adId; + } + public Integer getAdType() { + return adType; + } + public void setAdType(Integer adType) { + this.adType = adType; + } + public String getAdImage() { + return adImage; + } + public void setAdImage(String adImage) { + this.adImage = adImage; + } + public String getAdLink() { + return adLink; + } + public void setAdLink(String adLink) { + this.adLink = adLink; + } + +} diff --git a/src/main/java/com/ifish/dto/DeviceDto.java b/src/main/java/com/ifish/dto/DeviceDto.java new file mode 100644 index 0000000..5e2ff33 --- /dev/null +++ b/src/main/java/com/ifish/dto/DeviceDto.java @@ -0,0 +1,205 @@ +package com.ifish.dto; + + +/** + * 设备信息dto + * @author Administrator + * + */ +public class DeviceDto { + /** + * 设备ID + */ + private Integer deviceId; + /** + * 用户ID + */ + private Integer userId; + /** + * mac地址 + */ + private String macAddress; + /** + * 是否授权 + */ + private String isBlacklist; + /** + * 显示名称 + */ + private String showName; + /** + * 是否主控 + */ + private String isMaster; + /** + * 硬件类型(后台维护) + */ + private String type; + /** + * 控制个数 + */ + private Integer controlAmount; + /** + * 有无工作模式 + */ + private String isWorkModel; + /** + * 有无背光 + */ + private String isLightness; + /** + * 有无柜灯 + */ + private String isSarkLamp; + /** + * 是否显示预警设置 + */ + private String isPushWendu; + /** + * 定时器个数 + */ + private Integer timerAmount; + /** + * 今天是否提醒换水 + */ + private String todayRemind; + /** + * 换水提醒开关 + */ + private String waterRemind; + /** + * 下次提醒日期 + */ + private String remindDate; + /** + * 提醒周期 + */ + private String remindCycle; + /** + * 鱼缸厂信息 + */ + private VenderDto venderDto; + + public DeviceDto() {} + + public DeviceDto(Integer deviceId, String macAddress, String showName, String isMaster, String type,String isBlacklist) { + this.deviceId = deviceId; + this.macAddress = macAddress; + this.showName = showName; + this.isMaster = isMaster; + this.type = type; + this.isBlacklist = isBlacklist; + } + + public Integer getDeviceId() { + return deviceId; + } + public void setDeviceId(Integer deviceId) { + this.deviceId = deviceId; + } + public String getMacAddress() { + return macAddress; + } + public void setMacAddress(String macAddress) { + this.macAddress = macAddress; + } + public String getShowName() { + return showName; + } + public void setShowName(String showName) { + this.showName = showName; + } + public String getIsMaster() { + return isMaster; + } + public void setIsMaster(String isMaster) { + this.isMaster = isMaster; + } + public String getType() { + return type; + } + public void setType(String type) { + this.type = type; + } + public String getTodayRemind() { + return todayRemind; + } + public void setTodayRemind(String todayRemind) { + this.todayRemind = todayRemind; + } + public String getWaterRemind() { + return waterRemind; + } + public void setWaterRemind(String waterRemind) { + this.waterRemind = waterRemind; + } + public String getRemindDate() { + return remindDate; + } + public void setRemindDate(String remindDate) { + this.remindDate = remindDate; + } + public String getRemindCycle() { + return remindCycle; + } + public void setRemindCycle(String remindCycle) { + this.remindCycle = remindCycle; + } + public VenderDto getVenderDto() { + return venderDto; + } + public void setVenderDto(VenderDto venderDto) { + this.venderDto = venderDto; + } + public Integer getControlAmount() { + return controlAmount; + } + public void setControlAmount(Integer controlAmount) { + this.controlAmount = controlAmount; + } + public Integer getTimerAmount() { + return timerAmount; + } + public void setTimerAmount(Integer timerAmount) { + this.timerAmount = timerAmount; + } + public String getIsBlacklist() { + return isBlacklist; + } + public void setIsBlacklist(String isBlacklist) { + this.isBlacklist = isBlacklist; + } + public String getIsWorkModel() { + return isWorkModel; + } + public void setIsWorkModel(String isWorkModel) { + this.isWorkModel = isWorkModel; + } + public String getIsLightness() { + return isLightness; + } + public void setIsLightness(String isLightness) { + this.isLightness = isLightness; + } + public String getIsSarkLamp() { + return isSarkLamp; + } + public void setIsSarkLamp(String isSarkLamp) { + this.isSarkLamp = isSarkLamp; + } + public String getIsPushWendu() { + return isPushWendu; + } + public void setIsPushWendu(String isPushWendu) { + this.isPushWendu = isPushWendu; + } + + public Integer getUserId() { + return userId; + } + + public void setUserId(Integer userId) { + this.userId = userId; + } + +} diff --git a/src/main/java/com/ifish/dto/DeviceInfoDto.java b/src/main/java/com/ifish/dto/DeviceInfoDto.java new file mode 100644 index 0000000..4db596e --- /dev/null +++ b/src/main/java/com/ifish/dto/DeviceInfoDto.java @@ -0,0 +1,43 @@ +package com.ifish.dto; + +import java.util.List; + +/** + * 设备信息 + * @author Administrator + * + */ +public class DeviceInfoDto { + + /** + * 设备ID列表 + */ + private List deviceIds; + + /** + * 设备信息列表 + */ + private List deviceList; + + public DeviceInfoDto(List deviceIds, List deviceList) { + this.deviceIds = deviceIds; + this.deviceList = deviceList; + } + + public List getDeviceIds() { + return deviceIds; + } + + public void setDeviceIds(List deviceIds) { + this.deviceIds = deviceIds; + } + + public List getDeviceList() { + return deviceList; + } + + public void setDeviceList(List deviceList) { + this.deviceList = deviceList; + } + +} diff --git a/src/main/java/com/ifish/dto/GoldTaskDto.java b/src/main/java/com/ifish/dto/GoldTaskDto.java new file mode 100644 index 0000000..92fde7d --- /dev/null +++ b/src/main/java/com/ifish/dto/GoldTaskDto.java @@ -0,0 +1,62 @@ +package com.ifish.dto; + +/** + * 规则信息 + * @author Administrator + * + */ +public class GoldTaskDto { + /** + * 类型 + */ + private String ruleType; + /** + * 加成类型 + */ + private String addType; + /** + * 加成值 + */ + private String addValue; + /** + * 是否完成 + */ + private String isFinish; + + public GoldTaskDto() {} + + public GoldTaskDto(String ruleType, String addType, String addValue, + String isFinish) { + super(); + this.ruleType = ruleType; + this.addType = addType; + this.addValue = addValue; + this.isFinish = isFinish; + } + + public String getRuleType() { + return ruleType; + } + public void setRuleType(String ruleType) { + this.ruleType = ruleType; + } + public String getAddType() { + return addType; + } + public void setAddType(String addType) { + this.addType = addType; + } + public String getAddValue() { + return addValue; + } + public void setAddValue(String addValue) { + this.addValue = addValue; + } + public String getIsFinish() { + return isFinish; + } + public void setIsFinish(String isFinish) { + this.isFinish = isFinish; + } + +} diff --git a/src/main/java/com/ifish/dto/GradeInfoDto.java b/src/main/java/com/ifish/dto/GradeInfoDto.java new file mode 100644 index 0000000..383be3c --- /dev/null +++ b/src/main/java/com/ifish/dto/GradeInfoDto.java @@ -0,0 +1,62 @@ +package com.ifish.dto; + +/** + * 等级信息 + * @author Administrator + * + */ +public class GradeInfoDto { + + //等级 + private Integer gradeNum; + //等级名称 + private String gradeName; + //最小值 + private Integer minValue; + //最大值 + private Integer maxValue; + //描述 + private String remark; + + public GradeInfoDto() { + } + public GradeInfoDto(Integer gradeNum, String gradeName, Integer minValue, + Integer maxValue, String remark) { + this.gradeNum = gradeNum; + this.gradeName = gradeName; + this.minValue = minValue; + this.maxValue = maxValue; + this.remark = remark; + } + public Integer getGradeNum() { + return gradeNum; + } + public void setGradeNum(Integer gradeNum) { + this.gradeNum = gradeNum; + } + public String getGradeName() { + return gradeName; + } + public void setGradeName(String gradeName) { + this.gradeName = gradeName; + } + public Integer getMinValue() { + return minValue; + } + public void setMinValue(Integer minValue) { + this.minValue = minValue; + } + public Integer getMaxValue() { + return maxValue; + } + public void setMaxValue(Integer maxValue) { + this.maxValue = maxValue; + } + public String getRemark() { + return remark; + } + public void setRemark(String remark) { + this.remark = remark; + } + +} diff --git a/src/main/java/com/ifish/dto/GwellParamDto.java b/src/main/java/com/ifish/dto/GwellParamDto.java new file mode 100644 index 0000000..7b755a3 --- /dev/null +++ b/src/main/java/com/ifish/dto/GwellParamDto.java @@ -0,0 +1,66 @@ +package com.ifish.dto; + +/** + * 技威相关参数 + * @author Administrator + * + */ +public class GwellParamDto { + + //是否注册技威 + private String isRegisterGwell; + //code1 + private String P2PVerifyCode1; + //code2 + private String P2PVerifyCode2; + //技威userID + private String UserID; + + public GwellParamDto(String isRegisterGwell) { + this.isRegisterGwell = isRegisterGwell; + this.P2PVerifyCode1 = ""; + this.P2PVerifyCode2 = ""; + this.UserID = ""; + } + + public GwellParamDto(String isRegisterGwell, String p2pVerifyCode1,String p2pVerifyCode2, String userID) { + this.isRegisterGwell = isRegisterGwell; + this.P2PVerifyCode1 = p2pVerifyCode1; + this.P2PVerifyCode2 = p2pVerifyCode2; + this.UserID = userID; + } + + + public String getIsRegisterGwell() { + return isRegisterGwell; + } + + public void setIsRegisterGwell(String isRegisterGwell) { + this.isRegisterGwell = isRegisterGwell; + } + + public String getP2PVerifyCode1() { + return P2PVerifyCode1; + } + + public void setP2PVerifyCode1(String p2pVerifyCode1) { + P2PVerifyCode1 = p2pVerifyCode1; + } + + public String getP2PVerifyCode2() { + return P2PVerifyCode2; + } + + public void setP2PVerifyCode2(String p2pVerifyCode2) { + P2PVerifyCode2 = p2pVerifyCode2; + } + + public String getUserID() { + return UserID; + } + + public void setUserID(String userID) { + UserID = userID; + } + +} diff --git a/src/main/java/com/ifish/dto/IfishGoodsDto.java b/src/main/java/com/ifish/dto/IfishGoodsDto.java new file mode 100644 index 0000000..0f8b677 --- /dev/null +++ b/src/main/java/com/ifish/dto/IfishGoodsDto.java @@ -0,0 +1,102 @@ +package com.ifish.dto; + +import java.math.BigDecimal; + +/** + * 商品信息DTO + * @author Administrator + * + */ +public class IfishGoodsDto { + + /** + * 商品ID + */ + private Integer goodsId; + /** + * 店铺名称 + */ + private String shopName; + /** + * 商品名称 + */ + private String goodsName; + /** + * 是否是淘宝链接 + */ + private Integer isTaobaoLink; + /** + * 商品链接 + */ + private String goodsLink; + /** + * 商铺图片 + */ + private String goodsPicture; + /** + * 原价格 + */ + private BigDecimal oriPrice; + /** + * 优惠价格 + */ + private BigDecimal prePrice; + + public IfishGoodsDto(Integer goodsId, String shopName, String goodsName, String goodsLink, BigDecimal oriPrice, BigDecimal prePrice) { + this.goodsId = goodsId; + this.shopName = shopName; + this.goodsName = goodsName; + this.goodsLink = goodsLink; + this.oriPrice = oriPrice; + this.prePrice = prePrice; + } + public Integer getGoodsId() { + return goodsId; + } + public void setGoodsId(Integer goodsId) { + this.goodsId = goodsId; + } + public String getGoodsName() { + return goodsName; + } + public void setGoodsName(String goodsName) { + this.goodsName = goodsName; + } + public String getGoodsLink() { + return goodsLink; + } + public void setGoodsLink(String goodsLink) { + this.goodsLink = goodsLink; + } + public String getGoodsPicture() { + return goodsPicture; + } + public void setGoodsPicture(String goodsPicture) { + this.goodsPicture = goodsPicture; + } + public BigDecimal getOriPrice() { + return oriPrice; + } + public void setOriPrice(BigDecimal oriPrice) { + this.oriPrice = oriPrice; + } + public BigDecimal getPrePrice() { + return prePrice; + } + public void setPrePrice(BigDecimal prePrice) { + this.prePrice = prePrice; + } + public String getShopName() { + return shopName; + } + public void setShopName(String shopName) { + this.shopName = shopName; + } + public Integer getIsTaobaoLink() { + return isTaobaoLink; + } + public void setIsTaobaoLink(Integer isTaobaoLink) { + this.isTaobaoLink = isTaobaoLink; + } + +} diff --git a/src/main/java/com/ifish/dto/InformationDto.java b/src/main/java/com/ifish/dto/InformationDto.java new file mode 100644 index 0000000..5384f6a --- /dev/null +++ b/src/main/java/com/ifish/dto/InformationDto.java @@ -0,0 +1,76 @@ +package com.ifish.dto; + + +/** + * 资讯信息封装 + * @author Administrator + * + */ +public class InformationDto { + //ID + private Integer infoId; + //链接 + private String link; + //标题 + private String title; + //内容 + private String contents; + //图片 + private String image; + //点击数 + private Integer clickNum; + //评论数 + private Integer pinglunNum; + + public InformationDto(Integer infoId) { + this.infoId = infoId; + this.pinglunNum = 0; + this.clickNum = 0; + } + + public Integer getInfoId() { + return infoId; + } + public void setInfoId(Integer infoId) { + this.infoId = infoId; + } + public String getLink() { + return link; + } + public void setLink(String link) { + this.link = link; + } + public String getTitle() { + return title; + } + public void setTitle(String title) { + this.title = title; + } + + public Integer getClickNum() { + return clickNum; + } + + public void setClickNum(Integer clickNum) { + this.clickNum = clickNum; + } + public Integer getPinglunNum() { + return pinglunNum; + } + public void setPinglunNum(Integer pinglunNum) { + this.pinglunNum = pinglunNum; + } + public String getImage() { + return image; + } + public void setImage(String image) { + this.image = image; + } + public String getContents() { + return contents; + } + public void setContents(String contents) { + this.contents = contents; + } + +} diff --git a/src/main/java/com/ifish/dto/JsonResult.java b/src/main/java/com/ifish/dto/JsonResult.java new file mode 100644 index 0000000..44b6b4e --- /dev/null +++ b/src/main/java/com/ifish/dto/JsonResult.java @@ -0,0 +1,49 @@ +package com.ifish.dto; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.serializer.SerializerFeature; + +/** + * 请求返回json结果 + * @author Administrator + * + * @param + */ +public class JsonResult { + //结果码 + private String result; + //数据 + private T data; + + public JsonResult(String result, T data) { + this.result = result; + this.data = data; + } + + public JsonResult(String result) { + this.result = result; + this.data = null; + } + + public String getResult() { + return result; + } + + public void setResult(String result) { + this.result = result; + } + + public T getData() { + return data; + } + + public void setData(T data) { + this.data = data; + } + + @Override + public String toString() { + //允许null值 + return JSON.toJSONString(this,SerializerFeature.WriteMapNullValue); + } +} diff --git a/src/main/java/com/ifish/dto/LiveRoomInfoDto.java b/src/main/java/com/ifish/dto/LiveRoomInfoDto.java new file mode 100644 index 0000000..780fe76 --- /dev/null +++ b/src/main/java/com/ifish/dto/LiveRoomInfoDto.java @@ -0,0 +1,169 @@ +package com.ifish.dto; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 直播间列表 + * @author Administrator + * + */ +public class LiveRoomInfoDto implements Serializable{ + + private static final long serialVersionUID = 2438713198151455034L; + //直播间ID + private Integer roomId; + //用户ID + private Integer userId; + //用户类型 + private String userType; + //昵称 + private String nickName; + //用户头像 + private String userImg; + //用户最后一次登录时间 + private Date loginTime; + //摄像头ID + private String cameraId; + //直播间名称 + private String roomName; + //直播宣言 + private String roomDesc; + //人气值 + private Integer popularityValue; + //活跃度 + private String liveness; + //直播天数 + private Integer numberDays; + //距离 + private Double distance; + //创建时间 + private Date createTime; + //评论数 + private Integer pinglunNum; + //点赞数量 + private Integer zanNum; + //是否点过赞 + private String isZan; + //打赏金币数量 + private BigDecimal totalGoldValue; + //等级 + private Integer gradeNum; + + public Integer getRoomId() { + return roomId; + } + public void setRoomId(Integer roomId) { + this.roomId = roomId; + } + public String getNickName() { + return nickName; + } + public void setNickName(String nickName) { + this.nickName = nickName; + } + public String getCameraId() { + return cameraId; + } + public void setCameraId(String cameraId) { + this.cameraId = cameraId; + } + public String getRoomName() { + return roomName; + } + public void setRoomName(String roomName) { + this.roomName = roomName; + } + public String getRoomDesc() { + return roomDesc; + } + public void setRoomDesc(String roomDesc) { + this.roomDesc = roomDesc; + } + public Integer getPopularityValue() { + return popularityValue; + } + public void setPopularityValue(Integer popularityValue) { + this.popularityValue = popularityValue; + } + public Integer getNumberDays() { + return numberDays; + } + public void setNumberDays(Integer numberDays) { + this.numberDays = numberDays; + } + public Double getDistance() { + return distance; + } + public void setDistance(Double distance) { + this.distance = distance; + } + public String getUserImg() { + return userImg; + } + public void setUserImg(String userImg) { + this.userImg = userImg; + } + public String getLiveness() { + return liveness; + } + public void setLiveness(String liveness) { + this.liveness = liveness; + } + public Date getLoginTime() { + return loginTime; + } + public void setLoginTime(Date loginTime) { + this.loginTime = loginTime; + } + public Integer getUserId() { + return userId; + } + public void setUserId(Integer userId) { + this.userId = userId; + } + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + public String getUserType() { + return userType; + } + public void setUserType(String userType) { + this.userType = userType; + } + public Integer getPinglunNum() { + return pinglunNum; + } + public void setPinglunNum(Integer pinglunNum) { + this.pinglunNum = pinglunNum; + } + public String getIsZan() { + return isZan; + } + public void setIsZan(String isZan) { + this.isZan = isZan; + } + public Integer getGradeNum() { + return gradeNum; + } + public void setGradeNum(Integer gradeNum) { + this.gradeNum = gradeNum; + } + public Integer getZanNum() { + return zanNum; + } + public void setZanNum(Integer zanNum) { + this.zanNum = zanNum; + } + public BigDecimal getTotalGoldValue() { + return totalGoldValue; + } + public void setTotalGoldValue(BigDecimal totalGoldValue) { + this.totalGoldValue = totalGoldValue; + } + +} diff --git a/src/main/java/com/ifish/dto/NeteaseParamDto.java b/src/main/java/com/ifish/dto/NeteaseParamDto.java new file mode 100644 index 0000000..05a2851 --- /dev/null +++ b/src/main/java/com/ifish/dto/NeteaseParamDto.java @@ -0,0 +1,42 @@ +package com.ifish.dto; + +/** + * 云信相关参数 + * @author Administrator + * + */ +public class NeteaseParamDto { + + //是否注册云信 + private String isRegisterNetease; + //云信token + private String neteaseToken; + + public NeteaseParamDto(String isRegisterNetease) { + this.isRegisterNetease = isRegisterNetease; + this.neteaseToken = ""; + } + + public NeteaseParamDto(String isRegisterNetease, String neteaseToken) { + this.isRegisterNetease = isRegisterNetease; + this.neteaseToken = neteaseToken; + } + + public String getIsRegisterNetease() { + return isRegisterNetease; + } + + public void setIsRegisterNetease(String isRegisterNetease) { + this.isRegisterNetease = isRegisterNetease; + } + + public String getNeteaseToken() { + return neteaseToken; + } + + public void setNeteaseToken(String neteaseToken) { + this.neteaseToken = neteaseToken; + } + + +} diff --git a/src/main/java/com/ifish/dto/PageingDto.java b/src/main/java/com/ifish/dto/PageingDto.java new file mode 100644 index 0000000..d40830c --- /dev/null +++ b/src/main/java/com/ifish/dto/PageingDto.java @@ -0,0 +1,62 @@ +package com.ifish.dto; + +import java.util.List; + +/** + * 分页数据封装 + * @author Administrator + * + * @param + */ +public class PageingDto{ + + private String result; + + private Integer firstResult; + + private Integer total; + + private List data; + + public PageingDto() {} + + public PageingDto(String result, Integer firstResult, Integer total,List data) { + this.result = result; + this.firstResult = firstResult; + this.total = total; + this.data = data; + } + + public String getResult() { + return result; + } + + public void setResult(String result) { + this.result = result; + } + + public Integer getFirstResult() { + return firstResult; + } + + public void setFirstResult(Integer firstResult) { + this.firstResult = firstResult; + } + + public Integer getTotal() { + return total; + } + + public void setTotal(Integer total) { + this.total = total; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + +} diff --git a/src/main/java/com/ifish/dto/RuleInfoDto.java b/src/main/java/com/ifish/dto/RuleInfoDto.java new file mode 100644 index 0000000..596eef8 --- /dev/null +++ b/src/main/java/com/ifish/dto/RuleInfoDto.java @@ -0,0 +1,88 @@ +package com.ifish.dto; + +/** + * 规则信息 + * @author Administrator + * + */ +public class RuleInfoDto { + /** + * 类型 + */ + private String ruleType; + /** + * 名称 + */ + private String ruleName; + /** + * 加成类型 + */ + private String addType; + /** + * 加成值 + */ + private String addValue; + /** + * 描述 + */ + private String ruleRemark; + /** + * 是否完成 + */ + private String isFinish; + + public RuleInfoDto() {} + + public RuleInfoDto(String ruleType, String ruleName, String addType, + String addValue, String ruleRemark, String isFinish) { + this.ruleType = ruleType; + this.ruleName = ruleName; + this.addType = addType; + this.addValue = addValue; + this.ruleRemark = ruleRemark; + this.isFinish = isFinish; + } + + + public String getRuleName() { + return ruleName; + } + + public void setRuleName(String ruleName) { + this.ruleName = ruleName; + } + + public String getRuleRemark() { + return ruleRemark; + } + + public void setRuleRemark(String ruleRemark) { + this.ruleRemark = ruleRemark; + } + + public String getRuleType() { + return ruleType; + } + public void setRuleType(String ruleType) { + this.ruleType = ruleType; + } + public String getAddType() { + return addType; + } + public void setAddType(String addType) { + this.addType = addType; + } + public String getAddValue() { + return addValue; + } + public void setAddValue(String addValue) { + this.addValue = addValue; + } + public String getIsFinish() { + return isFinish; + } + public void setIsFinish(String isFinish) { + this.isFinish = isFinish; + } + +} diff --git a/src/main/java/com/ifish/dto/RuleRecordDto.java b/src/main/java/com/ifish/dto/RuleRecordDto.java new file mode 100644 index 0000000..bff32cb --- /dev/null +++ b/src/main/java/com/ifish/dto/RuleRecordDto.java @@ -0,0 +1,68 @@ +package com.ifish.dto; + +/** + * 金币经验加成记录DTO + * @author Administrator + * + */ +public class RuleRecordDto { + + /** + * id + */ + private Integer id; + /** + * 值 + */ + private String value; + /** + * 描述 + */ + private String ramark; + /** + * 记录时间 + */ + private String createTime; + + public RuleRecordDto() {} + + public RuleRecordDto(Integer id, String value,String ramark,String createTime) { + this.id = id; + this.value = value; + this.ramark = ramark; + this.createTime = createTime; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getRamark() { + return ramark; + } + + public void setRamark(String ramark) { + this.ramark = ramark; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + +} diff --git a/src/main/java/com/ifish/dto/ShopsListDto.java b/src/main/java/com/ifish/dto/ShopsListDto.java new file mode 100644 index 0000000..e57de72 --- /dev/null +++ b/src/main/java/com/ifish/dto/ShopsListDto.java @@ -0,0 +1,143 @@ +package com.ifish.dto; + +import java.io.Serializable; + +/** + * 商家列表 + * @author Administrator + * + */ +public class ShopsListDto implements Serializable{ + + private static final long serialVersionUID = -669448254021154912L; + //ID + private Integer shopsId; + //用户ID + private Integer userId; + //头像 + private String userImg; + //店家姓名 + private String userName; + //店铺名称 + private String shopsName; + //店家电话 + private String shopsPhone; + //省 + private String shopsProvince; + //市 + private String shopsCity; + //区 + private String shopsArea; + //店家地址 + private String shopsAddress; + //店铺招牌 + private String picture4; + //备注 + private String remark; + //微信号 + private String weixinCode; + //网店地址 + private String shopLink; + //距离 + private Double distance; + //是否屏蔽微信号 + private String isPingBi; + + public String getIsPingBi() { + return isPingBi; + } + public void setIsPingBi(String isPingBi) { + this.isPingBi = isPingBi; + } + public Integer getShopsId() { + return shopsId; + } + public void setShopsId(Integer shopsId) { + this.shopsId = shopsId; + } + public Integer getUserId() { + return userId; + } + public void setUserId(Integer userId) { + this.userId = userId; + } + public String getUserName() { + return userName; + } + public void setUserName(String userName) { + this.userName = userName; + } + public String getShopsName() { + return shopsName; + } + public void setShopsName(String shopsName) { + this.shopsName = shopsName; + } + public String getShopsPhone() { + return shopsPhone; + } + public void setShopsPhone(String shopsPhone) { + this.shopsPhone = shopsPhone; + } + public String getShopsProvince() { + return shopsProvince; + } + public void setShopsProvince(String shopsProvince) { + this.shopsProvince = shopsProvince; + } + public String getShopsCity() { + return shopsCity; + } + public void setShopsCity(String shopsCity) { + this.shopsCity = shopsCity; + } + public String getShopsArea() { + return shopsArea; + } + public void setShopsArea(String shopsArea) { + this.shopsArea = shopsArea; + } + public String getShopsAddress() { + return shopsAddress; + } + public void setShopsAddress(String shopsAddress) { + this.shopsAddress = shopsAddress; + } + public String getPicture4() { + return picture4; + } + public void setPicture4(String picture4) { + this.picture4 = picture4; + } + public String getRemark() { + return remark; + } + public void setRemark(String remark) { + this.remark = remark; + } + public Double getDistance() { + return distance; + } + public void setDistance(Double distance) { + this.distance = distance; + } + public String getUserImg() { + return userImg; + } + public void setUserImg(String userImg) { + this.userImg = userImg; + } + public String getWeixinCode() { + return weixinCode; + } + public void setWeixinCode(String weixinCode) { + this.weixinCode = weixinCode; + } + public String getShopLink() { + return shopLink; + } + public void setShopLink(String shopLink) { + this.shopLink = shopLink; + } + +} diff --git a/src/main/java/com/ifish/dto/ShopsLookUserDto.java b/src/main/java/com/ifish/dto/ShopsLookUserDto.java new file mode 100644 index 0000000..b452840 --- /dev/null +++ b/src/main/java/com/ifish/dto/ShopsLookUserDto.java @@ -0,0 +1,53 @@ +package com.ifish.dto; + + +/** + * 商家看护用户 + * @author Administrator + * + */ +public class ShopsLookUserDto{ + + /** + * 用户ID + */ + private Integer userId; + /** + * 用户昵称 + */ + private String nickName; + /** + * 摄像头ID + */ + private String cameraId; + /** + * 头像 + */ + private String userImg; + + public String getNickName() { + return nickName; + } + public void setNickName(String nickName) { + this.nickName = nickName; + } + public String getCameraId() { + return cameraId; + } + public void setCameraId(String cameraId) { + this.cameraId = cameraId; + } + public Integer getUserId() { + return userId; + } + public void setUserId(Integer userId) { + this.userId = userId; + } + public String getUserImg() { + return userImg; + } + public void setUserImg(String userImg) { + this.userImg = userImg; + } + +} diff --git a/src/main/java/com/ifish/dto/ShopsUserDto.java b/src/main/java/com/ifish/dto/ShopsUserDto.java new file mode 100644 index 0000000..80fffbd --- /dev/null +++ b/src/main/java/com/ifish/dto/ShopsUserDto.java @@ -0,0 +1,68 @@ +package com.ifish.dto; + +/** + * 商家会员分页信息DTO + * @author Administrator + * + */ +public class ShopsUserDto { + /** + * 用户ID + */ + private Integer userId; + /** + * 备注名 + */ + private String userName; + /** + * 会员名 + */ + private String nickName; + /** + * 头像 + */ + private String userImg; + /** + * 最后登陆时间 + */ + private String loginTime; + + public ShopsUserDto() {} + + public ShopsUserDto(Integer userId, String userName) { + this.userId = userId; + this.userName = userName; + } + + public Integer getUserId() { + return userId; + } + public void setUserId(Integer userId) { + this.userId = userId; + } + public String getUserName() { + return userName; + } + public void setUserName(String userName) { + this.userName = userName; + } + public String getNickName() { + return nickName; + } + public void setNickName(String nickName) { + this.nickName = nickName; + } + public String getUserImg() { + return userImg; + } + public void setUserImg(String userImg) { + this.userImg = userImg; + } + public String getLoginTime() { + return loginTime; + } + public void setLoginTime(String loginTime) { + this.loginTime = loginTime; + } + +} diff --git a/src/main/java/com/ifish/dto/ShopsUserInfoDto.java b/src/main/java/com/ifish/dto/ShopsUserInfoDto.java new file mode 100644 index 0000000..fb39d4f --- /dev/null +++ b/src/main/java/com/ifish/dto/ShopsUserInfoDto.java @@ -0,0 +1,147 @@ +package com.ifish.dto; + +/** + * 商家会员详细信息DTO + * @author Administrator + * + */ +public class ShopsUserInfoDto { + /** + * 用户ID + */ + private Integer userId; + /** + * 商家ID + */ + private Integer shopsId; + /** + * 会员等级 + */ + private int memberLevel; + /** + * 用户名称 + */ + private String userName; + /** + * 手机号码 + */ + private String phoneNumber; + /** + * 省 + */ + private String province; + /** + * 市 + */ + private String city; + /** + * 区 + */ + private String area; + /** + * 地址 + */ + private String address; + /** + * 备注 + */ + private String remark; + /** + * 设备个数 + */ + private Integer deviceNum; + /** + * 摄像头个数 + */ + private Integer cameraNum; + + public ShopsUserInfoDto() {} + + public ShopsUserInfoDto(Integer userId, Integer shopsId, int memberLevel, Integer deviceNum, Integer cameraNum) { + this.userId = userId; + this.shopsId = shopsId; + this.memberLevel = memberLevel; + this.deviceNum = deviceNum; + this.cameraNum = cameraNum; + } + + public int getMemberLevel() { + return memberLevel; + } + public void setMemberLevel(int memberLevel) { + this.memberLevel = memberLevel; + } + public String getUserName() { + return userName; + } + public void setUserName(String userName) { + this.userName = userName; + } + public String getPhoneNumber() { + return phoneNumber; + } + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + } + public String getAddress() { + return address; + } + public void setAddress(String address) { + this.address = address; + } + public String getRemark() { + return remark; + } + public void setRemark(String remark) { + this.remark = remark; + } + public Integer getShopsId() { + return shopsId; + } + public void setShopsId(Integer shopsId) { + this.shopsId = shopsId; + } + public Integer getUserId() { + return userId; + } + public void setUserId(Integer userId) { + this.userId = userId; + } + public Integer getDeviceNum() { + return deviceNum; + } + public void setDeviceNum(Integer deviceNum) { + this.deviceNum = deviceNum; + } + public Integer getCameraNum() { + return cameraNum; + } + public void setCameraNum(Integer cameraNum) { + this.cameraNum = cameraNum; + } + + public String getProvince() { + return province; + } + + public void setProvince(String province) { + this.province = province; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public String getArea() { + return area; + } + + public void setArea(String area) { + this.area = area; + } + +} diff --git a/src/main/java/com/ifish/dto/UserActivityDto.java b/src/main/java/com/ifish/dto/UserActivityDto.java new file mode 100644 index 0000000..227eb28 --- /dev/null +++ b/src/main/java/com/ifish/dto/UserActivityDto.java @@ -0,0 +1,93 @@ +package com.ifish.dto; + +import java.util.Date; + +/** + * 用户动态 + * @author Administrator + * + */ +public class UserActivityDto { + /** + * 动态ID + */ + private Integer activityId; + /** + * 用户ID + */ + private Integer userId; + /** + * 头像 + */ + private String userImg; + /** + * 昵称 + */ + private String nickName; + /** + * 等级 + */ + private Integer gradeNum; + /** + * 动态类型 + */ + private String activityType; + /** + * 创建时间 + */ + private Date createTime; + + public UserActivityDto() { } + + public UserActivityDto(Integer activityId, Integer userId,String activityType, Date createTime) { + this.activityId = activityId; + this.userId = userId; + this.activityType = activityType; + this.createTime = createTime; + this.gradeNum = 0; + } + + public Integer getActivityId() { + return activityId; + } + public void setActivityId(Integer activityId) { + this.activityId = activityId; + } + public Integer getUserId() { + return userId; + } + public void setUserId(Integer userId) { + this.userId = userId; + } + public String getUserImg() { + return userImg; + } + public void setUserImg(String userImg) { + this.userImg = userImg; + } + public String getNickName() { + return nickName; + } + public void setNickName(String nickName) { + this.nickName = nickName; + } + public Integer getGradeNum() { + return gradeNum; + } + public void setGradeNum(Integer gradeNum) { + this.gradeNum = gradeNum; + } + public String getActivityType() { + return activityType; + } + public void setActivityType(String activityType) { + this.activityType = activityType; + } + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + +} diff --git a/src/main/java/com/ifish/dto/UserAssetDto.java b/src/main/java/com/ifish/dto/UserAssetDto.java new file mode 100644 index 0000000..2b0b4b1 --- /dev/null +++ b/src/main/java/com/ifish/dto/UserAssetDto.java @@ -0,0 +1,139 @@ +package com.ifish.dto; + +import java.math.BigDecimal; + +import com.ifish.enums.BooleanEnum; + +/** + * 用户资产信息(金币,经验值等) + * @author Administrator + * + */ +public class UserAssetDto { + + /** + * 经验值 + */ + private Integer gradeValue; + /** + * 等级 + */ + private Integer gradeNum; + /** + * 等级名称 + */ + private String gradeName; + /** + * 金币 + */ + private BigDecimal goldValue; + /** + * 今天是否签到 + */ + private String toDaySignin; + + /** + * 连续签到天数 + */ + private Integer keepSigninNum; + + /** + * 最后一次登陆日期 + */ + private String lastLoginDate; + /** + * 是否砸过金蛋(默认砸过) + */ + private String isHitGoldenEgg; + + /** + * 所加经验值 + */ + private BigDecimal addValue; + + + public UserAssetDto() { + this.gradeValue = 0; + this.gradeNum = 7; + this.gradeName = "海龙王"; + this.goldValue = new BigDecimal(0); + this.toDaySignin = BooleanEnum.NO.getKey(); + this.keepSigninNum = 0; + this.lastLoginDate = ""; + this.isHitGoldenEgg = BooleanEnum.YES.getKey(); + this.addValue = new BigDecimal(0); + } + + public Integer getGradeValue() { + return gradeValue; + } + + public void setGradeValue(Integer gradeValue) { + this.gradeValue = gradeValue; + } + + public Integer getGradeNum() { + return gradeNum; + } + + public void setGradeNum(Integer gradeNum) { + this.gradeNum = gradeNum; + } + + public String getGradeName() { + return gradeName; + } + + public void setGradeName(String gradeName) { + this.gradeName = gradeName; + } + + public BigDecimal getGoldValue() { + return goldValue; + } + + public void setGoldValue(BigDecimal goldValue) { + this.goldValue = goldValue; + } + + public String getToDaySignin() { + return toDaySignin; + } + + public void setToDaySignin(String toDaySignin) { + this.toDaySignin = toDaySignin; + } + + public Integer getKeepSigninNum() { + return keepSigninNum; + } + + public void setKeepSigninNum(Integer keepSigninNum) { + this.keepSigninNum = keepSigninNum; + } + + public String getLastLoginDate() { + return lastLoginDate; + } + + public void setLastLoginDate(String lastLoginDate) { + this.lastLoginDate = lastLoginDate; + } + + public String getIsHitGoldenEgg() { + return isHitGoldenEgg; + } + + public void setIsHitGoldenEgg(String isHitGoldenEgg) { + this.isHitGoldenEgg = isHitGoldenEgg; + } + + public BigDecimal getAddValue() { + return addValue; + } + + public void setAddValue(BigDecimal addValue) { + this.addValue = addValue; + } + +} diff --git a/src/main/java/com/ifish/dto/UserInfoDto.java b/src/main/java/com/ifish/dto/UserInfoDto.java new file mode 100644 index 0000000..4a92d39 --- /dev/null +++ b/src/main/java/com/ifish/dto/UserInfoDto.java @@ -0,0 +1,133 @@ +package com.ifish.dto; + + +/** + * 用户信息 + * @author Administrator + * + */ +public class UserInfoDto { + + /** + * 用户ID + */ + private Integer userId; + /** + * 手机号码 + */ + private String phoneNumber; + /** + * 性别 + */ + private String userSex; + /** + * 签名 + */ + private String signature; + /** + * 用户名 + */ + private String nickName; + /** + * 用户头像 + */ + private String userImg; + /** + * 用户类型(0:普通用户,1:商家用户) + */ + private String userType; + /** + * 商家用户Id + */ + private Integer shopsUserId; + /** + * 技威CODE1 + */ + private String P2PVerifyCode1; + /** + * 技威CODE2 + */ + private String P2PVerifyCode2; + /** + * 技威用户ID + */ + private String gwellUserID; + /** + * 云信token + */ + private String neteaseToken; + + public Integer getUserId() { + return userId; + } + public void setUserId(Integer userId) { + this.userId = userId; + } + public String getPhoneNumber() { + return phoneNumber; + } + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + } + public String getUserSex() { + return userSex; + } + public void setUserSex(String userSex) { + this.userSex = userSex; + } + public String getSignature() { + return signature; + } + public void setSignature(String signature) { + this.signature = signature; + } + public String getNickName() { + return nickName; + } + public void setNickName(String nickName) { + this.nickName = nickName; + } + public String getUserImg() { + return userImg; + } + public void setUserImg(String userImg) { + this.userImg = userImg; + } + public String getUserType() { + return userType; + } + public void setUserType(String userType) { + this.userType = userType; + } + public Integer getShopsUserId() { + return shopsUserId; + } + public void setShopsUserId(Integer shopsUserId) { + this.shopsUserId = shopsUserId; + } + public String getP2PVerifyCode1() { + return P2PVerifyCode1; + } + public void setP2PVerifyCode1(String p2pVerifyCode1) { + P2PVerifyCode1 = p2pVerifyCode1; + } + public String getP2PVerifyCode2() { + return P2PVerifyCode2; + } + public void setP2PVerifyCode2(String p2pVerifyCode2) { + P2PVerifyCode2 = p2pVerifyCode2; + } + public String getGwellUserID() { + return gwellUserID; + } + public void setGwellUserID(String gwellUserID) { + this.gwellUserID = gwellUserID; + } + public String getNeteaseToken() { + return neteaseToken; + } + public void setNeteaseToken(String neteaseToken) { + this.neteaseToken = neteaseToken; + } + +} diff --git a/src/main/java/com/ifish/dto/VenderDto.java b/src/main/java/com/ifish/dto/VenderDto.java new file mode 100644 index 0000000..5c44663 --- /dev/null +++ b/src/main/java/com/ifish/dto/VenderDto.java @@ -0,0 +1,48 @@ +package com.ifish.dto; + + +/** + * 鱼缸厂信息dto + * @author Administrator + * + */ +public class VenderDto { + + /** + * 厂家名称 + */ + private String brandName; + /** + * 品牌介绍 + */ + private String brandIntroduce; + /** + * logo + */ + private String logo; + + public VenderDto(String brandName, String brandIntroduce, String logo) { + this.brandName = brandName; + this.brandIntroduce = brandIntroduce; + this.logo = logo; + } + public String getBrandName() { + return brandName; + } + public void setBrandName(String brandName) { + this.brandName = brandName; + } + public String getBrandIntroduce() { + return brandIntroduce; + } + public void setBrandIntroduce(String brandIntroduce) { + this.brandIntroduce = brandIntroduce; + } + public String getLogo() { + return logo; + } + public void setLogo(String logo) { + this.logo = logo; + } + +} diff --git a/src/main/java/com/ifish/entity/AdInfo.java b/src/main/java/com/ifish/entity/AdInfo.java new file mode 100644 index 0000000..776acbb --- /dev/null +++ b/src/main/java/com/ifish/entity/AdInfo.java @@ -0,0 +1,120 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +/** + * 广告位信息 + * @author Administrator + * + */ +@Entity +@Table(name="tbl_ad_info") +public class AdInfo implements Serializable{ + + private static final long serialVersionUID = 1658175021665132499L; + + /** + * id + */ + @Id + @Column(name="ad_id") + @GeneratedValue(strategy=GenerationType.IDENTITY) + private Integer adId; + /** + * 是否显示 + */ + @Column(name="is_show",length=1) + private String isShow; + /** + * 广告类型 + */ + @Column(name="ad_type",nullable=false) + private Integer adType; + /** + * 广告位图片 + */ + @Column(name="ad_image",length=20) + private String adImage; + /** + * 广告位链接 + */ + @Column(name="ad_link",length=100) + private String adLink; + /** + * 排序 + */ + @Column(name="order_num",nullable=false) + private Integer orderNum; + /** + * 更新时间 + */ + @Column(name="update_time") + @Temporal(TemporalType.TIMESTAMP) + private Date updateTime; + /** + * 创建时间 + */ + @Column(name="create_time") + @Temporal(TemporalType.TIMESTAMP) + private Date createTime; + + public Integer getAdId() { + return adId; + } + public void setAdId(Integer adId) { + this.adId = adId; + } + public Integer getAdType() { + return adType; + } + public void setAdType(Integer adType) { + this.adType = adType; + } + public String getAdImage() { + return adImage; + } + public void setAdImage(String adImage) { + this.adImage = adImage; + } + public String getAdLink() { + return adLink; + } + public void setAdLink(String adLink) { + this.adLink = adLink; + } + public Date getUpdateTime() { + return updateTime; + } + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + public String getIsShow() { + return isShow; + } + public void setIsShow(String isShow) { + this.isShow = isShow; + } + public Integer getOrderNum() { + return orderNum; + } + public void setOrderNum(Integer orderNum) { + this.orderNum = orderNum; + } + +} diff --git a/src/main/java/com/ifish/entity/BrowseRoom.java b/src/main/java/com/ifish/entity/BrowseRoom.java new file mode 100644 index 0000000..5860138 --- /dev/null +++ b/src/main/java/com/ifish/entity/BrowseRoom.java @@ -0,0 +1,39 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.util.Date; + +/** + * @ClassName: tbl_browse_room + * @date 2015年7月2日 下午16:40:00 + * + */ +public class BrowseRoom implements Serializable{ + + private static final long serialVersionUID = 1866585948782100462L; + //ID + private BrowseRoomId browseRoomId; + //修改时间 + private Date updateTime; + //创建时间 + private Date createTime; + public BrowseRoomId getBrowseRoomId() { + return browseRoomId; + } + public void setBrowseRoomId(BrowseRoomId browseRoomId) { + this.browseRoomId = browseRoomId; + } + public Date getUpdateTime() { + return updateTime; + } + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + +} diff --git a/src/main/java/com/ifish/entity/BrowseRoomId.java b/src/main/java/com/ifish/entity/BrowseRoomId.java new file mode 100644 index 0000000..d17faba --- /dev/null +++ b/src/main/java/com/ifish/entity/BrowseRoomId.java @@ -0,0 +1,52 @@ +package com.ifish.entity; + +import java.io.Serializable; + +public class BrowseRoomId implements Serializable { + + private static final long serialVersionUID = 1L; + + private Integer roomId; + private Integer userId; + + public BrowseRoomId() { + } + + public BrowseRoomId(Integer roomId, Integer userId) { + this.roomId = roomId; + this.userId = userId; + } + + public Integer getRoomId() { + return roomId; + } + + public void setRoomId(Integer roomId) { + this.roomId = roomId; + } + + public Integer getUserId() { + return userId; + } + + public void setUserId(Integer userId) { + this.userId = userId; + } + + @Override + public boolean equals(Object obj) { + if(obj instanceof BrowseRoomId){ + BrowseRoomId pk=(BrowseRoomId)obj; + if(this.roomId.equals(pk.roomId) && this.userId.equals(pk.userId)){ + return true; + } + } + return false; + } + + @Override + public int hashCode() { + return super.hashCode(); + } + +} diff --git a/src/main/java/com/ifish/entity/Camera.java b/src/main/java/com/ifish/entity/Camera.java new file mode 100644 index 0000000..d93b5b3 --- /dev/null +++ b/src/main/java/com/ifish/entity/Camera.java @@ -0,0 +1,56 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.util.Date; + +/** + * @ClassName: tbl_camera + * @date 2015年7月2日 下午16:40:00 + * + */ +public class Camera implements Serializable{ + + private static final long serialVersionUID = -5292867602998823697L; + //ID + private String cameraId; + //激活码 + private String activeCode; + //激活时间 + private Date activeTime; + //修改时间 + private Date updateTime; + //创建时间 + private Date createTime; + + public Date getUpdateTime() { + return updateTime; + } + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + public String getCameraId() { + return cameraId; + } + public void setCameraId(String cameraId) { + this.cameraId = cameraId; + } + public String getActiveCode() { + return activeCode; + } + public void setActiveCode(String activeCode) { + this.activeCode = activeCode; + } + public Date getActiveTime() { + return activeTime; + } + public void setActiveTime(Date activeTime) { + this.activeTime = activeTime; + } + +} diff --git a/src/main/java/com/ifish/entity/CameraActive.java b/src/main/java/com/ifish/entity/CameraActive.java new file mode 100644 index 0000000..ad3e5ff --- /dev/null +++ b/src/main/java/com/ifish/entity/CameraActive.java @@ -0,0 +1,48 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.util.Date; + +/** + * @ClassName: tbl_camera_active + * @date 2015年7月2日 下午16:40:00 + * + */ +public class CameraActive implements Serializable{ + + private static final long serialVersionUID = 2069622365188365453L; + //激活码 + private String activeCode; + //批次号 + private String batchCode; + //是否使用 + private String isUsed; + //创建时间 + private Date createTime; + + public String getActiveCode() { + return activeCode; + } + public void setActiveCode(String activeCode) { + this.activeCode = activeCode; + } + public String getBatchCode() { + return batchCode; + } + public void setBatchCode(String batchCode) { + this.batchCode = batchCode; + } + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + public String getIsUsed() { + return isUsed; + } + public void setIsUsed(String isUsed) { + this.isUsed = isUsed; + } + +} diff --git a/src/main/java/com/ifish/entity/CameraUser.java b/src/main/java/com/ifish/entity/CameraUser.java new file mode 100644 index 0000000..bcd5b44 --- /dev/null +++ b/src/main/java/com/ifish/entity/CameraUser.java @@ -0,0 +1,72 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.util.Date; + +/** + * @ClassName: tbl_camera_user + * @date 2015年7月2日 下午16:40:00 + * + */ +public class CameraUser implements Serializable{ + + private static final long serialVersionUID = -5292867602998823697L; + //ID + private CameraUserId cameraUserId; + //1、主控制权,0、被分享者 + private String isMaster; + //显示名称 + private String showName; + //是否看护 + private String isLook; + //是否直播 + private String isLive; + //修改时间 + private Date updateTime; + //创建时间 + private Date createTime; + + public String getShowName() { + return showName; + } + public void setShowName(String showName) { + this.showName = showName; + } + public Date getUpdateTime() { + return updateTime; + } + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + public String getIsMaster() { + return isMaster; + } + public void setIsMaster(String isMaster) { + this.isMaster = isMaster; + } + public CameraUserId getCameraUserId() { + return cameraUserId; + } + public void setCameraUserId(CameraUserId cameraUserId) { + this.cameraUserId = cameraUserId; + } + public String getIsLook() { + return isLook; + } + public void setIsLook(String isLook) { + this.isLook = isLook; + } + public String getIsLive() { + return isLive; + } + public void setIsLive(String isLive) { + this.isLive = isLive; + } + +} diff --git a/src/main/java/com/ifish/entity/CameraUserId.java b/src/main/java/com/ifish/entity/CameraUserId.java new file mode 100644 index 0000000..0c6e140 --- /dev/null +++ b/src/main/java/com/ifish/entity/CameraUserId.java @@ -0,0 +1,52 @@ +package com.ifish.entity; + +import java.io.Serializable; + +public class CameraUserId implements Serializable { + + private static final long serialVersionUID = 1L; + + private Integer userId; + private String cameraId; + + public CameraUserId() { + } + + public CameraUserId(Integer userId, String cameraId) { + this.userId = userId; + this.cameraId = cameraId; + } + + public Integer getUserId() { + return userId; + } + + public void setUserId(Integer userId) { + this.userId = userId; + } + + public String getCameraId() { + return cameraId; + } + + public void setCameraId(String cameraId) { + this.cameraId = cameraId; + } + + @Override + public boolean equals(Object obj) { + if(obj instanceof CameraUserId){ + CameraUserId pk=(CameraUserId)obj; + if(this.userId.equals(pk.userId) && this.cameraId.equals(pk.cameraId)){ + return true; + } + } + return false; + } + + @Override + public int hashCode() { + return super.hashCode(); + } + +} diff --git a/src/main/java/com/ifish/entity/Comment.java b/src/main/java/com/ifish/entity/Comment.java new file mode 100644 index 0000000..ba78997 --- /dev/null +++ b/src/main/java/com/ifish/entity/Comment.java @@ -0,0 +1,130 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Transient; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.ifish.serializer.CustomDateSerializer; + +/** + * @ClassName: tbl_comment + * @date 2015年7月2日 下午16:40:00 * + */ +@Entity +@Table(name="tbl_comment") +public class Comment implements Serializable{ + + private static final long serialVersionUID = 1312658178156695378L; + /** + * ID + */ + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + @Column(name="comment_id") + private Integer commentId; + /** + * 编辑器ID + */ + @Column(name="ueditor_id") + private Integer ueditorId; + /** + * 用户ID + */ + @Column(name="user_id") + private Integer userId; + /** + * 回复用户ID + */ + @Column(name="as_user_id") + private Integer asUserId; + /** + * 回复用户名称 + */ + @Transient + private String asUserName; + /** + * 头像 + */ + @Transient + private String userImg; + /** + * 用户 + */ + @Transient + private String userName; + /** + * 内容 + */ + @Column(name="comment_content",nullable=true,length=200) + private String commentContent; + /** + * 创建时间 + */ + @JsonSerialize(using = CustomDateSerializer.class) + @Column(name="create_time",columnDefinition="timestamp",updatable=false,length=1) + private Date createTime; + + public Integer getCommentId() { + return commentId; + } + public void setCommentId(Integer commentId) { + this.commentId = commentId; + } + public Integer getUeditorId() { + return ueditorId; + } + public void setUeditorId(Integer ueditorId) { + this.ueditorId = ueditorId; + } + public Integer getUserId() { + return userId; + } + public void setUserId(Integer userId) { + this.userId = userId; + } + public String getCommentContent() { + return commentContent; + } + public void setCommentContent(String commentContent) { + this.commentContent = commentContent; + } + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + public String getUserImg() { + return userImg; + } + public void setUserImg(String userImg) { + this.userImg = userImg; + } + public String getUserName() { + return userName; + } + public void setUserName(String userName) { + this.userName = userName; + } + public Integer getAsUserId() { + return asUserId; + } + public void setAsUserId(Integer asUserId) { + this.asUserId = asUserId; + } + public String getAsUserName() { + return asUserName; + } + public void setAsUserName(String asUserName) { + this.asUserName = asUserName; + } + +} diff --git a/src/main/java/com/ifish/entity/Coupon.java b/src/main/java/com/ifish/entity/Coupon.java new file mode 100644 index 0000000..37ee943 --- /dev/null +++ b/src/main/java/com/ifish/entity/Coupon.java @@ -0,0 +1,155 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import javax.persistence.Transient; + +/** + * 优惠券 + * @author Administrator + * + */ +@Entity +@Table(name="tbl_coupon") +public class Coupon implements Serializable { + + private static final long serialVersionUID = 970686228633163972L; + /** + * 优惠券ID + */ + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + @Column(name="coupon_id") + private Integer couponId; + /** + * 兑换RMB价值 + */ + @Column(name="money_value",nullable=false) + private Integer moneyValue; + /** + * 兑换所需金币 + */ + @Column(name="need_gold",precision=6,scale=2,nullable=false) + private BigDecimal needGold; + /** + * 使用兑换券需要消费金额 + */ + @Column(name="use_need_money",nullable=false) + private Integer useNeedMoney; + /** + * 用户所能兑换数量 + */ + @Column(name="upper_limit") + private Integer upperLimit; + /** + * 优惠券数量 + */ + @Column(name="coupon_number") + private Integer couponNumber; + /** + * 文字标签 + */ + @Column(name="tag_text",length=20) + private String tagText; + /** + * 有效开始时间 + */ + @Column(name="valid_start_date") + @Temporal(TemporalType.DATE) + private Date validStartDate; + /** + * 有效结束时间 + */ + @Column(name="valid_end_date") + @Temporal(TemporalType.DATE) + private Date validEndDate; + /** + * 更新时间 + */ + @Column(name="update_time") + @Temporal(TemporalType.TIMESTAMP) + private Date updateTime; + /** + * 兑换数量 + */ + @Transient + private Integer exchangeCount; + + public Integer getCouponId() { + return couponId; + } + public void setCouponId(Integer couponId) { + this.couponId = couponId; + } + public Integer getMoneyValue() { + return moneyValue; + } + public void setMoneyValue(Integer moneyValue) { + this.moneyValue = moneyValue; + } + public BigDecimal getNeedGold() { + return needGold; + } + public void setNeedGold(BigDecimal needGold) { + this.needGold = needGold; + } + public Integer getUseNeedMoney() { + return useNeedMoney; + } + public void setUseNeedMoney(Integer useNeedMoney) { + this.useNeedMoney = useNeedMoney; + } + public String getTagText() { + return tagText; + } + public void setTagText(String tagText) { + this.tagText = tagText; + } + public Date getValidStartDate() { + return validStartDate; + } + public void setValidStartDate(Date validStartDate) { + this.validStartDate = validStartDate; + } + public Date getValidEndDate() { + return validEndDate; + } + public void setValidEndDate(Date validEndDate) { + this.validEndDate = validEndDate; + } + public Integer getUpperLimit() { + return upperLimit; + } + public void setUpperLimit(Integer upperLimit) { + this.upperLimit = upperLimit; + } + public Integer getExchangeCount() { + return exchangeCount; + } + public void setExchangeCount(Integer exchangeCount) { + this.exchangeCount = exchangeCount; + } + public Integer getCouponNumber() { + return couponNumber; + } + public void setCouponNumber(Integer couponNumber) { + this.couponNumber = couponNumber; + } + public Date getUpdateTime() { + return updateTime; + } + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + +} diff --git a/src/main/java/com/ifish/entity/CouponRecord.java b/src/main/java/com/ifish/entity/CouponRecord.java new file mode 100644 index 0000000..3e5814d --- /dev/null +++ b/src/main/java/com/ifish/entity/CouponRecord.java @@ -0,0 +1,164 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +/** + * 优惠券兑换记录 + * @author Administrator + * + */ +@Entity +@Table(name="tbl_coupon_record") +public class CouponRecord implements Serializable { + + private static final long serialVersionUID = 5703119042203252824L; + /** + *记录ID + */ + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + @Column(name="record_id") + private Integer recordId; + /** + * 用户ID + */ + @Column(name="user_id",nullable=false) + private Integer userId; + /** + * 优惠券ID + */ + @Column(name="coupon_id",nullable=false) + private Integer couponId; + /** + * 兑换RMB价值 + */ + @Column(name="money_value",nullable=false) + private Integer moneyValue; + /** + * 兑换所需金币 + */ + @Column(name="need_gold",precision=6,scale=2,nullable=false) + private BigDecimal needGold; + /** + * 使用兑换券需要消费金额 + */ + @Column(name="use_need_money",nullable=false) + private Integer useNeedMoney; + /** + * 文字标签 + */ + @Column(name="tag_text",length=20) + private String tagText; + /** + * 有效开始时间 + */ + @Column(name="valid_start_date") + @Temporal(TemporalType.DATE) + private Date validStartDate; + /** + * 有效结束时间 + */ + @Column(name="valid_end_date") + @Temporal(TemporalType.DATE) + private Date validEndDate; + /** + * 激活码 + */ + @Column(name="activation_code",length=8,nullable=false) + private String activationCode; + /** + * 是否使用过 + */ + @Column(name="is_used",nullable=false,length=1) + private String isUsed; + /** + * 创建时间 + */ + @Column(name="create_time") + @Temporal(TemporalType.TIMESTAMP) + private Date createTime; + + public Integer getRecordId() { + return recordId; + } + public void setRecordId(Integer recordId) { + this.recordId = recordId; + } + public Integer getUserId() { + return userId; + } + public void setUserId(Integer userId) { + this.userId = userId; + } + public Integer getCouponId() { + return couponId; + } + public void setCouponId(Integer couponId) { + this.couponId = couponId; + } + public String getActivationCode() { + return activationCode; + } + public void setActivationCode(String activationCode) { + this.activationCode = activationCode; + } + public String getIsUsed() { + return isUsed; + } + public void setIsUsed(String isUsed) { + this.isUsed = isUsed; + } + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + public Date getValidStartDate() { + return validStartDate; + } + public void setValidStartDate(Date validStartDate) { + this.validStartDate = validStartDate; + } + public Date getValidEndDate() { + return validEndDate; + } + public void setValidEndDate(Date validEndDate) { + this.validEndDate = validEndDate; + } + public Integer getMoneyValue() { + return moneyValue; + } + public void setMoneyValue(Integer moneyValue) { + this.moneyValue = moneyValue; + } + public BigDecimal getNeedGold() { + return needGold; + } + public void setNeedGold(BigDecimal needGold) { + this.needGold = needGold; + } + public Integer getUseNeedMoney() { + return useNeedMoney; + } + public void setUseNeedMoney(Integer useNeedMoney) { + this.useNeedMoney = useNeedMoney; + } + public String getTagText() { + return tagText; + } + public void setTagText(String tagText) { + this.tagText = tagText; + } +} diff --git a/src/main/java/com/ifish/entity/Device.java b/src/main/java/com/ifish/entity/Device.java new file mode 100644 index 0000000..07643bf --- /dev/null +++ b/src/main/java/com/ifish/entity/Device.java @@ -0,0 +1,152 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.util.Date; + +/** + * @ClassName: tbl_device + * @date 2015年7月2日 下午16:40:00 + * + */ +public class Device implements Serializable{ + + private static final long serialVersionUID = -2890074039912965824L; + //设备ID + private Integer deviceId; + //服务器IP + private String serverIP; + //设备IP + private String deviceIP; + //设备MAC地址 + private String macAddress; + //登陆次数 + private Integer loginCount; + //厂家 + private String brandCode; + //硬件型号 + private String hardwareType; + //版本 + private String softwareVersion; + //最后一次登陆时间 + private Date loginTime; + //是否是黑名单:1是,0否 + private String isBlacklist; + //首次激活时间 + private Date firstActivate; + //创建时间 + private Date createTime; + //分配日期 + private Date createDate; + //是否开启换水提醒 + private String waterRemind; + //换水提醒日期 + private Date remindDate; + //换水周期 + private Integer remindCycle; + //今天是否需要提醒 + private String todayRemind; + + public Integer getDeviceId() { + return deviceId; + } + public void setDeviceId(Integer deviceId) { + this.deviceId = deviceId; + } + public String getServerIP() { + return serverIP; + } + public void setServerIP(String serverIP) { + this.serverIP = serverIP; + } + public String getDeviceIP() { + return deviceIP; + } + public void setDeviceIP(String deviceIP) { + this.deviceIP = deviceIP; + } + public String getMacAddress() { + return macAddress; + } + public void setMacAddress(String macAddress) { + this.macAddress = macAddress; + } + public Integer getLoginCount() { + return loginCount; + } + public void setLoginCount(Integer loginCount) { + this.loginCount = loginCount; + } + public Date getLoginTime() { + return loginTime; + } + public void setLoginTime(Date loginTime) { + this.loginTime = loginTime; + } + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + public String getIsBlacklist() { + return isBlacklist; + } + public void setIsBlacklist(String isBlacklist) { + this.isBlacklist = isBlacklist; + } + public Date getFirstActivate() { + return firstActivate; + } + public void setFirstActivate(Date firstActivate) { + this.firstActivate = firstActivate; + } + public String getHardwareType() { + return hardwareType; + } + public void setHardwareType(String hardwareType) { + this.hardwareType = hardwareType; + } + public String getSoftwareVersion() { + return softwareVersion; + } + public void setSoftwareVersion(String softwareVersion) { + this.softwareVersion = softwareVersion; + } + public String getWaterRemind() { + return waterRemind; + } + public void setWaterRemind(String waterRemind) { + this.waterRemind = waterRemind; + } + public Date getRemindDate() { + return remindDate; + } + public void setRemindDate(Date remindDate) { + this.remindDate = remindDate; + } + public Integer getRemindCycle() { + return remindCycle; + } + public void setRemindCycle(Integer remindCycle) { + this.remindCycle = remindCycle; + } + public String getTodayRemind() { + return todayRemind; + } + public void setTodayRemind(String todayRemind) { + this.todayRemind = todayRemind; + } + public String getBrandCode() { + return brandCode; + } + public void setBrandCode(String brandCode) { + this.brandCode = brandCode; + } + public Date getCreateDate() { + return createDate; + } + public void setCreateDate(Date createDate) { + this.createDate = createDate; + } + +} diff --git a/src/main/java/com/ifish/entity/DeviceCamera.java b/src/main/java/com/ifish/entity/DeviceCamera.java new file mode 100644 index 0000000..38815d7 --- /dev/null +++ b/src/main/java/com/ifish/entity/DeviceCamera.java @@ -0,0 +1,22 @@ +package com.ifish.entity; + +import java.io.Serializable; + +/** + * @ClassName: tbl_device_camera + * @date 2015年7月2日 下午16:40:00 + * + */ +public class DeviceCamera implements Serializable{ + + private static final long serialVersionUID = 3231903227046749991L; + //ID + private DeviceCameraId deviceCameraId; + + public DeviceCameraId getDeviceCameraId() { + return deviceCameraId; + } + public void setDeviceCameraId(DeviceCameraId deviceCameraId) { + this.deviceCameraId = deviceCameraId; + } +} diff --git a/src/main/java/com/ifish/entity/DeviceCameraId.java b/src/main/java/com/ifish/entity/DeviceCameraId.java new file mode 100644 index 0000000..4cc52eb --- /dev/null +++ b/src/main/java/com/ifish/entity/DeviceCameraId.java @@ -0,0 +1,47 @@ +package com.ifish.entity; + +import java.io.Serializable; + +public class DeviceCameraId implements Serializable { + + private static final long serialVersionUID = 1L; + + private Integer deviceId; + private String cameraId; + + public DeviceCameraId() { + } + public DeviceCameraId(Integer deviceId, String cameraId) { + this.deviceId = deviceId; + this.cameraId = cameraId; + } + public Integer getDeviceId() { + return deviceId; + } + public void setDeviceId(Integer deviceId) { + this.deviceId = deviceId; + } + public String getCameraId() { + return cameraId; + } + public void setCameraId(String cameraId) { + this.cameraId = cameraId; + } + + @Override + public boolean equals(Object obj) { + if(obj instanceof DeviceCameraId){ + DeviceCameraId pk=(DeviceCameraId)obj; + if(this.deviceId.equals(pk.deviceId)&&this.cameraId.equals(pk.cameraId)){ + return true; + } + } + return false; + } + + @Override + public int hashCode() { + return super.hashCode(); + } + +} diff --git a/src/main/java/com/ifish/entity/DeviceUser.java b/src/main/java/com/ifish/entity/DeviceUser.java new file mode 100644 index 0000000..69251c0 --- /dev/null +++ b/src/main/java/com/ifish/entity/DeviceUser.java @@ -0,0 +1,84 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.util.Date; + +/** + * @ClassName: tbl_device_user + * @date 2015年7月2日 下午16:40:00 + * + */ +public class DeviceUser implements Serializable{ + + private static final long serialVersionUID = -6056043883433438749L; + //ID + private DeviceUserId priId = new DeviceUserId(); + //1、主控制权,0、被分享者 + private String isMaster; + //显示名称 + private String showName; + //保存的显示图标 + private String customIconName; + //保存的显示名称 + private String customShowName; + //修改时间 + private Date updateTime; + //创建时间 + private Date createTime; + + public DeviceUser() {} + + public DeviceUser(DeviceUserId priId, String isMaster, String showName) { + this.priId = priId; + this.isMaster = isMaster; + this.showName = showName; + this.customIconName = ""; + this.customShowName = ""; + this.updateTime = new Date(); + this.createTime = new Date(); + } + + public DeviceUserId getPriId() { + return priId; + } + public void setPriId(DeviceUserId priId) { + this.priId = priId; + } + public String getShowName() { + return showName; + } + public void setShowName(String showName) { + this.showName = showName; + } + public Date getUpdateTime() { + return updateTime; + } + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + public String getIsMaster() { + return isMaster; + } + public void setIsMaster(String isMaster) { + this.isMaster = isMaster; + } + public String getCustomIconName() { + return customIconName; + } + public void setCustomIconName(String customIconName) { + this.customIconName = customIconName; + } + public String getCustomShowName() { + return customShowName; + } + public void setCustomShowName(String customShowName) { + this.customShowName = customShowName; + } + +} diff --git a/src/main/java/com/ifish/entity/DeviceUserId.java b/src/main/java/com/ifish/entity/DeviceUserId.java new file mode 100644 index 0000000..de09193 --- /dev/null +++ b/src/main/java/com/ifish/entity/DeviceUserId.java @@ -0,0 +1,47 @@ +package com.ifish.entity; + +import java.io.Serializable; + +public class DeviceUserId implements Serializable { + + private static final long serialVersionUID = 1L; + + private Integer userId; + private Integer deviceId; + + public DeviceUserId() {} + + public DeviceUserId(Integer userId, Integer deviceId) { + this.userId = userId; + this.deviceId = deviceId; + } + public Integer getUserId() { + return userId; + } + public void setUserId(Integer userId) { + this.userId = userId; + } + public Integer getDeviceId() { + return deviceId; + } + public void setDeviceId(Integer deviceId) { + this.deviceId = deviceId; + } + + @Override + public boolean equals(Object obj) { + if(obj instanceof DeviceUserId){ + DeviceUserId pk=(DeviceUserId)obj; + if(this.userId.equals(pk.userId)&&this.deviceId.equals(pk.deviceId)){ + return true; + } + } + return false; + } + + @Override + public int hashCode() { + return super.hashCode(); + } + +} diff --git a/src/main/java/com/ifish/entity/GoldControl.java b/src/main/java/com/ifish/entity/GoldControl.java new file mode 100644 index 0000000..d520a6c --- /dev/null +++ b/src/main/java/com/ifish/entity/GoldControl.java @@ -0,0 +1,71 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +/** + * 等级控制信息 + * @author Administrator + * + */ +@Entity +@Table(name="tbl_gold_control") +public class GoldControl implements Serializable{ + + private static final long serialVersionUID = -4825126780492039784L; + /** + * ID + */ + @Id + private GoldControlId goldControlId; + /** + * 控制日期参数 + */ + @Column(name="control_param",nullable=false,length=10) + private String controlParam; + + /** + * 更新日期 + */ + @Column(name="update_time",columnDefinition="timestamp") + private Date updateTime; + + public GoldControl() {} + + public GoldControl(GoldControlId goldControlId, String controlParam, + Date updateTime) { + this.goldControlId = goldControlId; + this.controlParam = controlParam; + this.updateTime = updateTime; + } + + public GoldControlId getGoldControlId() { + return goldControlId; + } + + public void setGoldControlId(GoldControlId goldControlId) { + this.goldControlId = goldControlId; + } + + public String getControlParam() { + return controlParam; + } + + public void setControlParam(String controlParam) { + this.controlParam = controlParam; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + +} diff --git a/src/main/java/com/ifish/entity/GoldControlId.java b/src/main/java/com/ifish/entity/GoldControlId.java new file mode 100644 index 0000000..095e2fe --- /dev/null +++ b/src/main/java/com/ifish/entity/GoldControlId.java @@ -0,0 +1,60 @@ +package com.ifish.entity; + +import java.io.Serializable; + +import javax.persistence.Column; +import javax.persistence.Embeddable; + +/** + * 金币控制信息ID + * @author Administrator + * + */ +@Embeddable +public class GoldControlId implements Serializable{ + + private static final long serialVersionUID = -728035080350308137L; + /** + * 用户ID + */ + @Column(name="user_id") + private Integer userId; + /** + * 规则类型 + */ + @Column(name="task_type",nullable=false,length=20) + private String ruleType; + + public GoldControlId() {} + + public GoldControlId(Integer userId, String ruleType) { + this.userId = userId; + this.ruleType = ruleType; + } + + public Integer getUserId() { + return userId; + } + public void setUserId(Integer userId) { + this.userId = userId; + } + + public String getRuleType() { + return ruleType; + } + + public void setRuleType(String ruleType) { + this.ruleType = ruleType; + } + + @Override + public int hashCode() { + return super.hashCode(); + } + + @Override + public boolean equals(Object obj) { + return super.equals(obj); + } + +} diff --git a/src/main/java/com/ifish/entity/GoldExpendRecord.java b/src/main/java/com/ifish/entity/GoldExpendRecord.java new file mode 100644 index 0000000..07cf10f --- /dev/null +++ b/src/main/java/com/ifish/entity/GoldExpendRecord.java @@ -0,0 +1,129 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.ifish.enums.GoldExpendTypeEnum; +import com.ifish.serializer.CustomDateSerializer; + +/** + * 获取金币记录 + * @author Administrator + * + */ +@Entity +@Table(name="tbl_gold_expend_record") +public class GoldExpendRecord implements Serializable{ + + private static final long serialVersionUID = 8682996968614095485L; + /** + * 记录ID + */ + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + @Column(name="record_id") + private Integer recordId; + /** + * 用户ID + */ + @Column(name="user_id",nullable=false) + private Integer userId; + /** + * 消耗方式 + */ + @Column(name="expend_type",nullable=false,length=20) + private String expendType; + /** + * 消耗值 + */ + @Column(name="expend_value",nullable=false,precision=6,scale=2) + private BigDecimal expendValue; + /** + * ID + */ + @Column(name="relation_id") + private Integer relationId; + /** + * 记录描述 + */ + @Column(name="record_remark",nullable=false,length=50) + private String recordRemark; + /** + * 创建时间 + */ + @JsonSerialize(using = CustomDateSerializer.class) + @Column(name="create_time",nullable=false) + @Temporal(TemporalType.TIMESTAMP) + private Date createTime; + + public GoldExpendRecord() {} + + public GoldExpendRecord(Integer userId,BigDecimal expendValue,GoldExpendTypeEnum goldExpendType) { + this.userId = userId; + this.expendValue = expendValue; + this.expendType = goldExpendType.getKey(); + this.recordRemark = goldExpendType.getValue(); + this.createTime = new Date(); + } + + public Integer getRecordId() { + return recordId; + } + public void setRecordId(Integer recordId) { + this.recordId = recordId; + } + public String getRecordRemark() { + return recordRemark; + } + public void setRecordRemark(String recordRemark) { + this.recordRemark = recordRemark; + } + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + public Integer getUserId() { + return userId; + } + public void setUserId(Integer userId) { + this.userId = userId; + } + + public String getExpendType() { + return expendType; + } + + public void setExpendType(String expendType) { + this.expendType = expendType; + } + + public BigDecimal getExpendValue() { + return expendValue; + } + + public void setExpendValue(BigDecimal expendValue) { + this.expendValue = expendValue; + } + + public Integer getRelationId() { + return relationId; + } + + public void setRelationId(Integer relationId) { + this.relationId = relationId; + } + +} diff --git a/src/main/java/com/ifish/entity/GoldGetRecord.java b/src/main/java/com/ifish/entity/GoldGetRecord.java new file mode 100644 index 0000000..740c952 --- /dev/null +++ b/src/main/java/com/ifish/entity/GoldGetRecord.java @@ -0,0 +1,133 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.ifish.enums.GoldGetTypeEnum; +import com.ifish.serializer.CustomDateSerializer; + +/** + * 获取金币记录 + * @author Administrator + * + */ +@Entity +@Table(name="tbl_gold_get_record") +public class GoldGetRecord implements Serializable{ + + private static final long serialVersionUID = 8682996968614095485L; + /** + * 记录ID + */ + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + @Column(name="record_id") + private Integer recordId; + /** + * 用户ID + */ + @Column(name="user_id",nullable=false) + private Integer userId; + /** + * 获取方式 + */ + @Column(name="get_type",nullable=false,length=20) + private String ruleType; + /** + * 金币值 + */ + @Column(name="get_value",nullable=false,precision=3,scale=2) + private BigDecimal addValue; + /** + * 问题ID + */ + @Column(name="relation_id") + private Integer relationId; + /** + * 记录描述 + */ + @Column(name="record_remark",nullable=false,length=50) + private String recordRemark; + /** + * 创建时间 + */ + @JsonSerialize(using = CustomDateSerializer.class) + @Column(name="create_time",nullable=false) + @Temporal(TemporalType.TIMESTAMP) + private Date createTime; + + public GoldGetRecord() {} + + public GoldGetRecord(Integer userId, String ruleType, + BigDecimal addValue, String recordRemark) { + this.userId = userId; + this.ruleType = ruleType; + this.addValue = addValue; + this.recordRemark = recordRemark; + this.createTime = new Date(); + } + public GoldGetRecord(Integer userId,BigDecimal addValue,GoldGetTypeEnum goldGetTypeEnum) { + this.userId = userId; + this.addValue = addValue; + this.ruleType = goldGetTypeEnum.getKey(); + this.recordRemark = goldGetTypeEnum.getValue(); + this.createTime = new Date(); + } + + public Integer getRecordId() { + return recordId; + } + public void setRecordId(Integer recordId) { + this.recordId = recordId; + } + public String getRecordRemark() { + return recordRemark; + } + public void setRecordRemark(String recordRemark) { + this.recordRemark = recordRemark; + } + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + public Integer getUserId() { + return userId; + } + public void setUserId(Integer userId) { + this.userId = userId; + } + public String getRuleType() { + return ruleType; + } + public void setRuleType(String ruleType) { + this.ruleType = ruleType; + } + public BigDecimal getAddValue() { + return addValue; + } + public void setAddValue(BigDecimal addValue) { + this.addValue = addValue; + } + public Integer getRelationId() { + return relationId; + } + + public void setRelationId(Integer relationId) { + this.relationId = relationId; + } + + +} diff --git a/src/main/java/com/ifish/entity/GoldTask.java b/src/main/java/com/ifish/entity/GoldTask.java new file mode 100644 index 0000000..fd48b1c --- /dev/null +++ b/src/main/java/com/ifish/entity/GoldTask.java @@ -0,0 +1,101 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.math.BigDecimal; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +/** + * 获取金币规则 + * @author Administrator + * + */ +@Entity +@Table(name="tbl_gold_task") +public class GoldTask implements Serializable{ + + private static final long serialVersionUID = -3681549432190225803L; + /** + * 规则类型 + */ + @Id + @Column(name="task_type",nullable=false,length=20) + private String ruleType; + /** + * 规则名称 + */ + @Column(name="task_name",nullable=false,length=20) + private String ruleName; + /** + * 增加金币值 + */ + @Column(name="add_value",nullable=false,precision=3,scale=2) + private BigDecimal addValue; + /** + * 加成类型(once:一次,everyDay:每天,everyTime:每次) + */ + @Column(name="add_type",nullable=false,length=20) + private String addType; + /** + * 是否返回app显示(1:是,0:否) + */ + @Column(name="state",nullable=false,length=1) + private String state; + /** + * 排序字段 + */ + @Column(name="order_num") + private Integer orderNum; + /** + * 任务描述 + */ + @Column(name="task_remark",nullable=false,length=50) + private String ruleRemark; + + public String getRuleType() { + return ruleType; + } + public void setRuleType(String ruleType) { + this.ruleType = ruleType; + } + public String getRuleName() { + return ruleName; + } + public void setRuleName(String ruleName) { + this.ruleName = ruleName; + } + public BigDecimal getAddValue() { + return addValue; + } + public void setAddValue(BigDecimal addValue) { + this.addValue = addValue; + } + public String getAddType() { + return addType; + } + public void setAddType(String addType) { + this.addType = addType; + } + public String getState() { + return state; + } + public void setState(String state) { + this.state = state; + } + public String getRuleRemark() { + return ruleRemark; + } + public void setRuleRemark(String ruleRemark) { + this.ruleRemark = ruleRemark; + } + public Integer getOrderNum() { + return orderNum; + } + public void setOrderNum(Integer orderNum) { + this.orderNum = orderNum; + } + +} diff --git a/src/main/java/com/ifish/entity/Grade.java b/src/main/java/com/ifish/entity/Grade.java new file mode 100644 index 0000000..068b2c4 --- /dev/null +++ b/src/main/java/com/ifish/entity/Grade.java @@ -0,0 +1,90 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.math.BigDecimal; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +/** + * 等级信息 + * @author Administrator + * + */ +@Entity +@Table(name="tbl_grade") +public class Grade implements Serializable{ + + private static final long serialVersionUID = -4501110511210925531L; + /** + * 等级 + */ + @Id + @Column(name="grade_num") + private Integer gradeNum; + /** + * 等级名称 + */ + @Column(name="grade_name",nullable=false,length=10) + private String gradeName; + /** + * 最小经验值<= + */ + @Column(name="min_value",nullable=false) + private Integer minValue; + /** + * 最大经验值< + */ + @Column(name="max_value",nullable=false) + private Integer maxValue; + /** + * 金币加成 + */ + @Column(name="gold_addition",precision=3,scale=2) + private BigDecimal goldAddition; + /** + * 等级描述 + */ + @Column(name="grade_remark",nullable=false,length=50) + private String gradeRemark; + + public Integer getGradeNum() { + return gradeNum; + } + public void setGradeNum(Integer gradeNum) { + this.gradeNum = gradeNum; + } + public String getGradeName() { + return gradeName; + } + public void setGradeName(String gradeName) { + this.gradeName = gradeName; + } + public Integer getMinValue() { + return minValue; + } + public void setMinValue(Integer minValue) { + this.minValue = minValue; + } + public Integer getMaxValue() { + return maxValue; + } + public void setMaxValue(Integer maxValue) { + this.maxValue = maxValue; + } + public String getGradeRemark() { + return gradeRemark; + } + public void setGradeRemark(String gradeRemark) { + this.gradeRemark = gradeRemark; + } + public BigDecimal getGoldAddition() { + return goldAddition; + } + public void setGoldAddition(BigDecimal goldAddition) { + this.goldAddition = goldAddition; + } + +} diff --git a/src/main/java/com/ifish/entity/GradeControl.java b/src/main/java/com/ifish/entity/GradeControl.java new file mode 100644 index 0000000..b285255 --- /dev/null +++ b/src/main/java/com/ifish/entity/GradeControl.java @@ -0,0 +1,71 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +/** + * 等级控制信息 + * @author Administrator + * + */ +@Entity +@Table(name="tbl_grade_control") +public class GradeControl implements Serializable{ + + private static final long serialVersionUID = 4967272971514676023L; + /** + * ID + */ + @Id + private GradeControlId gradeControlId; + /** + * 控制日期参数 + */ + @Column(name="control_param",nullable=false,length=10) + private String controlParam; + + /** + * 更新日期 + */ + @Column(name="update_time",columnDefinition="timestamp") + private Date updateTime; + + public GradeControl() {} + + public GradeControl(GradeControlId gradeControlId, String controlParam, + Date updateTime) { + this.gradeControlId = gradeControlId; + this.controlParam = controlParam; + this.updateTime = updateTime; + } + + public GradeControlId getGradeControlId() { + return gradeControlId; + } + + public void setGradeControlId(GradeControlId gradeControlId) { + this.gradeControlId = gradeControlId; + } + + public String getControlParam() { + return controlParam; + } + + public void setControlParam(String controlParam) { + this.controlParam = controlParam; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + +} diff --git a/src/main/java/com/ifish/entity/GradeControlId.java b/src/main/java/com/ifish/entity/GradeControlId.java new file mode 100644 index 0000000..a66f890 --- /dev/null +++ b/src/main/java/com/ifish/entity/GradeControlId.java @@ -0,0 +1,60 @@ +package com.ifish.entity; + +import java.io.Serializable; + +import javax.persistence.Column; +import javax.persistence.Embeddable; + +/** + * 等级控制信息ID + * @author Administrator + * + */ +@Embeddable +public class GradeControlId implements Serializable{ + + private static final long serialVersionUID = -728035080350308137L; + /** + * 用户ID + */ + @Column(name="user_id") + private Integer userId; + /** + * 规则类型 + */ + @Column(name="task_type",nullable=false,length=20) + private String ruleType; + + public GradeControlId() {} + + public GradeControlId(Integer userId, String ruleType) { + this.userId = userId; + this.ruleType = ruleType; + } + + public Integer getUserId() { + return userId; + } + public void setUserId(Integer userId) { + this.userId = userId; + } + + public String getRuleType() { + return ruleType; + } + + public void setRuleType(String ruleType) { + this.ruleType = ruleType; + } + + @Override + public int hashCode() { + return super.hashCode(); + } + + @Override + public boolean equals(Object obj) { + return super.equals(obj); + } + +} diff --git a/src/main/java/com/ifish/entity/GradeRecord.java b/src/main/java/com/ifish/entity/GradeRecord.java new file mode 100644 index 0000000..cd95593 --- /dev/null +++ b/src/main/java/com/ifish/entity/GradeRecord.java @@ -0,0 +1,115 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.ifish.serializer.CustomDateSerializer; + +/** + * 等级经验值获取记录 + * @author Administrator + * + */ +@Entity +@Table(name="tbl_grade_record") +public class GradeRecord implements Serializable{ + + private static final long serialVersionUID = 4877610293427598136L; + /** + * 记录ID + */ + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + @Column(name="record_id") + private Integer recordId; + /** + * 用户ID + */ + @Column(name="user_id",nullable=false) + private Integer userId; + /** + * 规则类型 + */ + @Column(name="task_type",nullable=false,length=20) + private String ruleType; + /** + * 增加经验值 + */ + @Column(name="add_value",nullable=false) + private Integer addValue; + /** + * 记录描述 + */ + @Column(name="record_remark",nullable=false,length=50) + private String recordRemark; + /** + * 创建时间 + */ + @JsonSerialize(using = CustomDateSerializer.class) + @Column(name="create_time",nullable=true) + @Temporal(TemporalType.TIMESTAMP) + private Date createTime; + + public GradeRecord() {} + + public GradeRecord(Integer userId, String ruleType, Integer addValue, + String recordRemark) { + this.userId = userId; + this.ruleType = ruleType; + this.addValue = addValue; + this.recordRemark = recordRemark; + this.createTime = new Date(); + } + + public Integer getRecordId() { + return recordId; + } + public void setRecordId(Integer recordId) { + this.recordId = recordId; + } + public Integer getUserId() { + return userId; + } + public void setUserId(Integer userId) { + this.userId = userId; + } + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + public String getRecordRemark() { + return recordRemark; + } + public void setRecordRemark(String recordRemark) { + this.recordRemark = recordRemark; + } + + public String getRuleType() { + return ruleType; + } + + public void setRuleType(String ruleType) { + this.ruleType = ruleType; + } + + public Integer getAddValue() { + return addValue; + } + + public void setAddValue(Integer addValue) { + this.addValue = addValue; + } + +} diff --git a/src/main/java/com/ifish/entity/GradeTask.java b/src/main/java/com/ifish/entity/GradeTask.java new file mode 100644 index 0000000..93aa487 --- /dev/null +++ b/src/main/java/com/ifish/entity/GradeTask.java @@ -0,0 +1,100 @@ +package com.ifish.entity; + +import java.io.Serializable; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +/** + * 获取经验值规则 + * @author Administrator + * + */ +@Entity +@Table(name="tbl_grade_task") +public class GradeTask implements Serializable{ + + private static final long serialVersionUID = 8410405690637553622L; + /** + * 规则类型 + */ + @Id + @Column(name="task_type",nullable=false,length=20) + private String ruleType; + /** + * 规则名称 + */ + @Column(name="task_name",nullable=false,length=20) + private String ruleName; + /** + * 增加经验值 + */ + @Column(name="add_value",nullable=false) + private Integer addValue; + /** + * 加成类型(once:一次,everyDay:每天,everyTime:每次) + */ + @Column(name="add_type",nullable=false,length=20) + private String addType; + /** + * 是否返回app显示(1:是,0:否) + */ + @Column(name="state",nullable=false,length=1) + private String state; + /** + * 排序字段 + */ + @Column(name="order_num") + private Integer orderNum; + /** + * 规则描述 + */ + @Column(name="task_remark",nullable=false,length=50) + private String ruleRemark; + + public String getRuleType() { + return ruleType; + } + public void setRuleType(String ruleType) { + this.ruleType = ruleType; + } + public String getRuleName() { + return ruleName; + } + public void setRuleName(String ruleName) { + this.ruleName = ruleName; + } + public Integer getAddValue() { + return addValue; + } + public void setAddValue(Integer addValue) { + this.addValue = addValue; + } + public String getAddType() { + return addType; + } + public void setAddType(String addType) { + this.addType = addType; + } + public String getState() { + return state; + } + public void setState(String state) { + this.state = state; + } + public Integer getOrderNum() { + return orderNum; + } + public void setOrderNum(Integer orderNum) { + this.orderNum = orderNum; + } + public String getRuleRemark() { + return ruleRemark; + } + public void setRuleRemark(String ruleRemark) { + this.ruleRemark = ruleRemark; + } + +} diff --git a/src/main/java/com/ifish/entity/HardwareType.java b/src/main/java/com/ifish/entity/HardwareType.java new file mode 100644 index 0000000..a79bbb8 --- /dev/null +++ b/src/main/java/com/ifish/entity/HardwareType.java @@ -0,0 +1,144 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.util.Date; + +/** + * @ClassName: tbl_hardware_type + * @date 2015年7月2日 下午16:40:00 + * + */ +public class HardwareType implements Serializable{ + + private static final long serialVersionUID = -3276528943627616026L; + //类型编号 + private String hardwareType; + //类型名称 + private String hardwareName; + //控制个数 + private Integer controlAmount; + //定时器个数 + private Integer timerAmount; + //是否有模式 + private String isWorkModel; + //是否自定义图标 + private String isCustomIcon; + //显示名称 + private String allShowName; + //默认图标 + private String defaultIconName; + //默认名称 + private String defaultShowName; + //自定义图标根地址 + private String iconLink; + //根地址下图标名称 + private String allIconName; + //描述 + private String hardwareDesc; + //修改时间 + private Date updateTime; + //创建时间 + private Date createTime; + //是否有背光 + private String isLightness; + //是否有柜灯 + private String isSarkLamp; + + public String getHardwareType() { + return hardwareType; + } + public void setHardwareType(String hardwareType) { + this.hardwareType = hardwareType; + } + public String getHardwareName() { + return hardwareName; + } + public void setHardwareName(String hardwareName) { + this.hardwareName = hardwareName; + } + public String getHardwareDesc() { + return hardwareDesc; + } + public void setHardwareDesc(String hardwareDesc) { + this.hardwareDesc = hardwareDesc; + } + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + public Integer getControlAmount() { + return controlAmount; + } + public void setControlAmount(Integer controlAmount) { + this.controlAmount = controlAmount; + } + public Integer getTimerAmount() { + return timerAmount; + } + public void setTimerAmount(Integer timerAmount) { + this.timerAmount = timerAmount; + } + public String getIsCustomIcon() { + return isCustomIcon; + } + public void setIsCustomIcon(String isCustomIcon) { + this.isCustomIcon = isCustomIcon; + } + public String getIconLink() { + return iconLink; + } + public void setIconLink(String iconLink) { + this.iconLink = iconLink; + } + public String getAllIconName() { + return allIconName; + } + public void setAllIconName(String allIconName) { + this.allIconName = allIconName; + } + public Date getUpdateTime() { + return updateTime; + } + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + public String getIsLightness() { + return isLightness; + } + public void setIsLightness(String isLightness) { + this.isLightness = isLightness; + } + public String getIsSarkLamp() { + return isSarkLamp; + } + public void setIsSarkLamp(String isSarkLamp) { + this.isSarkLamp = isSarkLamp; + } + public String getIsWorkModel() { + return isWorkModel; + } + public void setIsWorkModel(String isWorkModel) { + this.isWorkModel = isWorkModel; + } + public String getAllShowName() { + return allShowName; + } + public void setAllShowName(String allShowName) { + this.allShowName = allShowName; + } + public String getDefaultIconName() { + return defaultIconName; + } + public void setDefaultIconName(String defaultIconName) { + this.defaultIconName = defaultIconName; + } + public String getDefaultShowName() { + return defaultShowName; + } + public void setDefaultShowName(String defaultShowName) { + this.defaultShowName = defaultShowName; + } + +} diff --git a/src/main/java/com/ifish/entity/IfishDoctor.java b/src/main/java/com/ifish/entity/IfishDoctor.java new file mode 100644 index 0000000..2e83443 --- /dev/null +++ b/src/main/java/com/ifish/entity/IfishDoctor.java @@ -0,0 +1,106 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.ifish.serializer.CustomDateSerializer; + +/** + * @ClassName: tbl_fish_doctor + * @date 2015年7月2日 下午16:40:00 * + */ +@Entity +@Table(name="tbl_fish_doctor") +public class IfishDoctor implements Serializable{ + + private static final long serialVersionUID = -4328045174375463938L; + /** + * ID + */ + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + @Column(name="question_id") + private Integer questionId; + /** + * 用户ID + */ + @Column(name="user_id",nullable=true) + @NotNull + @Min(1) + private Integer userId; + /** + * 是否打赏 + */ + @Column(name="is_pay_tour",nullable=false,length=1) + private String isPayTour; + /** + * 打赏金额 + */ + @Column(name="pay_tour_sum",nullable=false) + private BigDecimal payTourSum; + /** + * 提问内容 + */ + @Column(name="question_content",nullable=true,length=200) + @NotBlank + @Length(max=200) + private String questionContent; + /** + * 创建时间 + */ + @JsonSerialize(using = CustomDateSerializer.class) + @Column(name="create_time",columnDefinition="timestamp",updatable=false,length=1) + private Date createTime; + + public Integer getQuestionId() { + return questionId; + } + public void setQuestionId(Integer questionId) { + this.questionId = questionId; + } + public Integer getUserId() { + return userId; + } + public void setUserId(Integer userId) { + this.userId = userId; + } + public String getQuestionContent() { + return questionContent; + } + public void setQuestionContent(String questionContent) { + this.questionContent = questionContent; + } + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + public String getIsPayTour() { + return isPayTour; + } + public void setIsPayTour(String isPayTour) { + this.isPayTour = isPayTour; + } + public BigDecimal getPayTourSum() { + return payTourSum; + } + public void setPayTourSum(BigDecimal payTourSum) { + this.payTourSum = payTourSum; + } + +} diff --git a/src/main/java/com/ifish/entity/IfishGoods.java b/src/main/java/com/ifish/entity/IfishGoods.java new file mode 100644 index 0000000..af28c72 --- /dev/null +++ b/src/main/java/com/ifish/entity/IfishGoods.java @@ -0,0 +1,160 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.math.BigDecimal; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Transient; + +/** + * 商品管理 + * @author Administrator + * + */ +@Entity +@Table(name="tbl_ifish_goods") +public class IfishGoods implements Serializable{ + + private static final long serialVersionUID = -5086333556284372931L; + /** + * 商品ID + */ + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + @Column(name="goods_id") + private Integer goodsId; + /** + * 商品名称 + */ + @Column(name="goods_name",nullable=false,length=20) + private String goodsName; + /** + * 是否是淘宝链接 + */ + @Column(name="is_taobao_link",nullable=false) + private Integer isTaobaoLink; + /** + * 商品链接 + */ + @Column(name="goods_link",nullable=false,length=100) + private String goodsLink; + /** + * 商铺图片 + */ + @Column(name="goods_picture",nullable=false,length=20) + private String goodsPicture; + /** + * 原价格 + */ + @Column(name="ori_price",nullable=false,scale=2,precision=7) + private BigDecimal oriPrice; + /** + * 优惠价格 + */ + @Column(name="pre_price",nullable=false,scale=2,precision=7) + private BigDecimal prePrice; + /** + * 是否显示 + */ + @Column(name="is_show",nullable=false) + private Integer isShow; + /** + * 商品位置 + */ + @Column(name="goods_place",nullable=false) + private Integer goodsPlace; + /** + * 所属店铺 + */ + @Column(name="shop_id",nullable=false) + private Integer shopId; + /** + * 点击量 + */ + @Column(name="click_num",nullable=false) + private Integer clickNum; + /** + * 店铺名称 + */ + @Transient + private String shopName; + + public Integer getGoodsId() { + return goodsId; + } + public void setGoodsId(Integer goodsId) { + this.goodsId = goodsId; + } + public String getGoodsName() { + return goodsName; + } + public void setGoodsName(String goodsName) { + this.goodsName = goodsName; + } + public String getGoodsLink() { + return goodsLink; + } + public void setGoodsLink(String goodsLink) { + this.goodsLink = goodsLink; + } + public String getGoodsPicture() { + return goodsPicture; + } + public void setGoodsPicture(String goodsPicture) { + this.goodsPicture = goodsPicture; + } + public BigDecimal getOriPrice() { + return oriPrice; + } + public void setOriPrice(BigDecimal oriPrice) { + this.oriPrice = oriPrice; + } + public BigDecimal getPrePrice() { + return prePrice; + } + public void setPrePrice(BigDecimal prePrice) { + this.prePrice = prePrice; + } + public Integer getIsShow() { + return isShow; + } + public void setIsShow(Integer isShow) { + this.isShow = isShow; + } + public Integer getGoodsPlace() { + return goodsPlace; + } + public void setGoodsPlace(Integer goodsPlace) { + this.goodsPlace = goodsPlace; + } + public Integer getShopId() { + return shopId; + } + public void setShopId(Integer shopId) { + this.shopId = shopId; + } + public String getShopName() { + return shopName; + } + public void setShopName(String shopName) { + this.shopName = shopName; + } + public Integer getClickNum() { + return clickNum; + } + public void setClickNum(Integer clickNum) { + this.clickNum = clickNum; + } + public Integer getIsTaobaoLink() { + return isTaobaoLink; + } + public void setIsTaobaoLink(Integer isTaobaoLink) { + this.isTaobaoLink = isTaobaoLink; + } + +} diff --git a/src/main/java/com/ifish/entity/IfishShop.java b/src/main/java/com/ifish/entity/IfishShop.java new file mode 100644 index 0000000..bc0dc25 --- /dev/null +++ b/src/main/java/com/ifish/entity/IfishShop.java @@ -0,0 +1,48 @@ +package com.ifish.entity; + +import java.io.Serializable; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +/** + * 店铺管理 + * @author Administrator + * + */ +@Entity +@Table(name="tbl_ifish_shop") +public class IfishShop implements Serializable{ + + private static final long serialVersionUID = 7045978553607756344L; + /** + * 店铺ID + */ + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + @Column(name="shop_id") + private Integer shopId; + /** + * 店铺名称 + */ + @Column(name="shop_name",nullable=false,length=20) + private String shopName; + + public Integer getShopId() { + return shopId; + } + public void setShopId(Integer shopId) { + this.shopId = shopId; + } + public String getShopName() { + return shopName; + } + public void setShopName(String shopName) { + this.shopName = shopName; + } + +} diff --git a/src/main/java/com/ifish/entity/Information.java b/src/main/java/com/ifish/entity/Information.java new file mode 100644 index 0000000..9547cea --- /dev/null +++ b/src/main/java/com/ifish/entity/Information.java @@ -0,0 +1,142 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import javax.persistence.Transient; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.ifish.enums.BooleanEnum; +import com.ifish.serializer.CustomDateSerializer; + +/** + * @ClassName: tbl_information + * + */ +@Entity +@Table(name="tbl_information") +public class Information implements Serializable{ + + private static final long serialVersionUID = 7472598147626976361L; + /** + * ID + */ + @Id + @Column(name="info_id") + private Integer infoId; + /** + * app展示 + */ + @Column(name="app_show",length=1) + private String appShow; + /** + * 链接 + */ + @Column(name="link",length=100) + private String link; + /** + * 标题 + */ + @Column(name="title",length=50) + private String title; + /** + * 内容 + */ + @Column(name="contents",length=50) + private String contents; + /** + * 图片 + */ + @Column(name="image",length=20) + private String image; + /** + * 编辑器ID + */ + @Column(name="ueditor_id") + private Integer ueditorId; + /** + * 类型 + */ + @Column(name="ueditor_type",length=1) + private String ueditorType; + /** + * 创建时间 + */ + @JsonSerialize(using=CustomDateSerializer.class) + @Column(name="create_time") + @Temporal(TemporalType.TIMESTAMP) + private Date createTime; + /** + * 是否拼接用户ID + */ + @Transient + private String isAddUserId = BooleanEnum.NO.getKey(); + + public Integer getInfoId() { + return infoId; + } + public void setInfoId(Integer infoId) { + this.infoId = infoId; + } + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + public String getAppShow() { + return appShow; + } + public void setAppShow(String appShow) { + this.appShow = appShow; + } + public String getLink() { + return link; + } + public void setLink(String link) { + this.link = link; + } + public String getTitle() { + return title; + } + public void setTitle(String title) { + this.title = title; + } + public Integer getUeditorId() { + return ueditorId; + } + public void setUeditorId(Integer ueditorId) { + this.ueditorId = ueditorId; + } + public String getIsAddUserId() { + return isAddUserId; + } + public void setIsAddUserId(String isAddUserId) { + this.isAddUserId = isAddUserId; + } + public String getContents() { + return contents; + } + public void setContents(String contents) { + this.contents = contents; + } + public String getUeditorType() { + return ueditorType; + } + public void setUeditorType(String ueditorType) { + this.ueditorType = ueditorType; + } + public String getImage() { + return image; + } + public void setImage(String image) { + this.image = image; + } + +} diff --git a/src/main/java/com/ifish/entity/InformationStats.java b/src/main/java/com/ifish/entity/InformationStats.java new file mode 100644 index 0000000..6d1f1fb --- /dev/null +++ b/src/main/java/com/ifish/entity/InformationStats.java @@ -0,0 +1,45 @@ +package com.ifish.entity; + +import java.io.Serializable; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +/** + * 资讯数据统计 + * @author Administrator + * + */ +@Entity +@Table(name="tbl_information_stats") +public class InformationStats implements Serializable{ + + private static final long serialVersionUID = -8449695970790949331L; + /** + * 资讯ID + */ + @Id + @Column(name="info_id",nullable=false) + private Integer infoId; + /** + * 点击量 + */ + @Column(name="click_num",nullable=false) + private Integer clickNum; + + public Integer getInfoId() { + return infoId; + } + public void setInfoId(Integer infoId) { + this.infoId = infoId; + } + public Integer getClickNum() { + return clickNum; + } + public void setClickNum(Integer clickNum) { + this.clickNum = clickNum; + } + +} diff --git a/src/main/java/com/ifish/entity/LiveBanner.java b/src/main/java/com/ifish/entity/LiveBanner.java new file mode 100644 index 0000000..51733c4 --- /dev/null +++ b/src/main/java/com/ifish/entity/LiveBanner.java @@ -0,0 +1,55 @@ +package com.ifish.entity; + +import java.io.Serializable; + +/** + * @ClassName: tbl_live_banner + * @date 2015年7月2日 下午16:40:00 + * + */ +public class LiveBanner implements Serializable{ + + private static final long serialVersionUID = -6459241094002600290L; + //ID + private Integer bannerId; + //是否展示 + private String appShow; + //类型 + private String bannerType; + //链接 + private String bannerLink; + //banner图片 + private String bannerImg; + + public Integer getBannerId() { + return bannerId; + } + public void setBannerId(Integer bannerId) { + this.bannerId = bannerId; + } + public String getAppShow() { + return appShow; + } + public void setAppShow(String appShow) { + this.appShow = appShow; + } + public String getBannerType() { + return bannerType; + } + public void setBannerType(String bannerType) { + this.bannerType = bannerType; + } + public String getBannerLink() { + return bannerLink; + } + public void setBannerLink(String bannerLink) { + this.bannerLink = bannerLink; + } + public String getBannerImg() { + return bannerImg; + } + public void setBannerImg(String bannerImg) { + this.bannerImg = bannerImg; + } + +} diff --git a/src/main/java/com/ifish/entity/LiveMessage.java b/src/main/java/com/ifish/entity/LiveMessage.java new file mode 100644 index 0000000..7a56dd0 --- /dev/null +++ b/src/main/java/com/ifish/entity/LiveMessage.java @@ -0,0 +1,130 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Transient; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.ifish.serializer.CustomDateSerializer; + +/** + * @ClassName: tbl_live_message + * @date 2015年7月2日 下午16:40:00 * + */ +@Entity +@Table(name="tbl_live_message") +public class LiveMessage implements Serializable{ + + private static final long serialVersionUID = -1369523508980093389L; + /** + * ID + */ + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + @Column(name="message_id") + private Integer messageId; + /** + * 直播间ID + */ + @Column(name="room_id",nullable=true) + private Integer roomId; + /** + * 用户ID + */ + @Column(name="user_id",nullable=true) + private Integer userId; + /** + * @用户ID + */ + @Column(name="as_user_id") + private Integer asUserId; + /** + * @用户名称 + */ + @Transient + private String asUserName; + /** + * 头像 + */ + @Transient + private String userImg; + /** + * 用户 + */ + @Transient + private String userName; + /** + * 内容 + */ + @Column(name="message_content",nullable=true,length=200) + private String messageContent; + /** + * 创建时间 + */ + @JsonSerialize(using = CustomDateSerializer.class) + @Column(name="create_time",columnDefinition="timestamp",updatable=false,length=1) + private Date createTime; + + public Integer getMessageId() { + return messageId; + } + public void setMessageId(Integer messageId) { + this.messageId = messageId; + } + public Integer getRoomId() { + return roomId; + } + public void setRoomId(Integer roomId) { + this.roomId = roomId; + } + public Integer getUserId() { + return userId; + } + public void setUserId(Integer userId) { + this.userId = userId; + } + public String getMessageContent() { + return messageContent; + } + public void setMessageContent(String messageContent) { + this.messageContent = messageContent; + } + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + public Integer getAsUserId() { + return asUserId; + } + public void setAsUserId(Integer asUserId) { + this.asUserId = asUserId; + } + public String getAsUserName() { + return asUserName; + } + public void setAsUserName(String asUserName) { + this.asUserName = asUserName; + } + public String getUserImg() { + return userImg; + } + public void setUserImg(String userImg) { + this.userImg = userImg; + } + public String getUserName() { + return userName; + } + public void setUserName(String userName) { + this.userName = userName; + } + +} diff --git a/src/main/java/com/ifish/entity/LiveRoom.java b/src/main/java/com/ifish/entity/LiveRoom.java new file mode 100644 index 0000000..aa99647 --- /dev/null +++ b/src/main/java/com/ifish/entity/LiveRoom.java @@ -0,0 +1,118 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +/** + * @ClassName: tbl_live_room + * @date 2015年7月2日 下午16:40:00 + * + */ +@Entity +@Table(name="tbl_live_room") +public class LiveRoom implements Serializable{ + + private static final long serialVersionUID = -5155435715428041950L; + /** + * ID + */ + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + @Column(name="room_id") + private Integer roomId; + /** + * 用户ID + */ + @Column(name="user_id",nullable=false) + private Integer userId; + /** + * 直播间名称 + */ + @Column(name="room_name",nullable=false) + private String roomName; + /** + * 直播间描述 + */ + @Column(name="room_desc") + private String roomDesc; + /** + * 直播间状态 + */ + @Column(name="room_status",nullable=false) + private String roomStatus; + /** + * 人气值 + */ + @Column(name="popularity_value") + private Integer popularityValue; + /** + * 首次分享 + */ + @Column(name="first_share") + private String firstShare; + /** + * 创建时间 + */ + @Column(name="create_time") + @Temporal(TemporalType.TIMESTAMP) + private Date createTime; + + public Integer getRoomId() { + return roomId; + } + public void setRoomId(Integer roomId) { + this.roomId = roomId; + } + public Integer getUserId() { + return userId; + } + public void setUserId(Integer userId) { + this.userId = userId; + } + public String getRoomName() { + return roomName; + } + public void setRoomName(String roomName) { + this.roomName = roomName; + } + public String getRoomDesc() { + return roomDesc; + } + public void setRoomDesc(String roomDesc) { + this.roomDesc = roomDesc; + } + public String getRoomStatus() { + return roomStatus; + } + public void setRoomStatus(String roomStatus) { + this.roomStatus = roomStatus; + } + public Integer getPopularityValue() { + return popularityValue; + } + public void setPopularityValue(Integer popularityValue) { + this.popularityValue = popularityValue; + } + public String getFirstShare() { + return firstShare; + } + public void setFirstShare(String firstShare) { + this.firstShare = firstShare; + } + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + +} diff --git a/src/main/java/com/ifish/entity/LiveRoomZan.java b/src/main/java/com/ifish/entity/LiveRoomZan.java new file mode 100644 index 0000000..8064f2a --- /dev/null +++ b/src/main/java/com/ifish/entity/LiveRoomZan.java @@ -0,0 +1,36 @@ +package com.ifish.entity; + +import java.io.Serializable; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +/** + * 直播间点赞 + * @author Administrator + * + */ +@Entity +@Table(name="tbl_live_room_zan") +public class LiveRoomZan implements Serializable{ + + private static final long serialVersionUID = 336837412612295706L; + /** + * id + */ + @Id + LiveRoomZanId id; + + public LiveRoomZan() {} + public LiveRoomZan(LiveRoomZanId id) { + this.id = id; + } + public LiveRoomZanId getId() { + return id; + } + public void setId(LiveRoomZanId id) { + this.id = id; + } + +} diff --git a/src/main/java/com/ifish/entity/LiveRoomZanId.java b/src/main/java/com/ifish/entity/LiveRoomZanId.java new file mode 100644 index 0000000..f03b708 --- /dev/null +++ b/src/main/java/com/ifish/entity/LiveRoomZanId.java @@ -0,0 +1,47 @@ +package com.ifish.entity; + +import java.io.Serializable; + +import javax.persistence.Column; +import javax.persistence.Embeddable; + +/** + * 直播间点赞 + * @author Administrator + * + */ +@Embeddable +public class LiveRoomZanId implements Serializable{ + + private static final long serialVersionUID = -275072147659071118L; + /** + * 直播间ID + */ + @Column(name="room_id",nullable=false) + private Integer roomId; + /** + * 用户ID + */ + @Column(name="user_id",nullable=false) + private Integer userId; + + public LiveRoomZanId() {} + public LiveRoomZanId(Integer roomId, Integer userId) { + super(); + this.roomId = roomId; + this.userId = userId; + } + public Integer getRoomId() { + return roomId; + } + public void setRoomId(Integer roomId) { + this.roomId = roomId; + } + public Integer getUserId() { + return userId; + } + public void setUserId(Integer userId) { + this.userId = userId; + } + +} diff --git a/src/main/java/com/ifish/entity/LookReport.java b/src/main/java/com/ifish/entity/LookReport.java new file mode 100644 index 0000000..770653c --- /dev/null +++ b/src/main/java/com/ifish/entity/LookReport.java @@ -0,0 +1,153 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.util.Date; + +/** + * @ClassName: tbl_look_report + * @date 2015年7月2日 下午16:40:00 + * + */ +public class LookReport implements Serializable{ + + private static final long serialVersionUID = -3068461096525224795L; + //ID + private Integer reportId; + //分享图片 + private String shareImg; + //看护时间 + private Date timestamp; + //水质观察 + private String index1; + //喂食提醒 + private String index2; + //健康状况 + private String index3; + //喂养建议 + private String suggestion; + //得分 + private String totalIndex; + //百分比 + private String baifenbi; + //商家头像 + private String userImg; + //店铺名称 + private String shopsName; + //个性签名 + private String signature; + //创建时间 + private Date createTime; + //html文件名字 + private String htmlName; + //水质观察 + private String index1Text; + //喂食提醒 + private String index2Text; + //健康状况 + private String index3Text; + + + public String getShopsName() { + return shopsName; + } + public void setShopsName(String shopsName) { + this.shopsName = shopsName; + } + public Integer getReportId() { + return reportId; + } + public void setReportId(Integer reportId) { + this.reportId = reportId; + } + public String getShareImg() { + return shareImg; + } + public void setShareImg(String shareImg) { + this.shareImg = shareImg; + } + public Date getTimestamp() { + return timestamp; + } + public void setTimestamp(Date timestamp) { + this.timestamp = timestamp; + } + public String getIndex1() { + return index1; + } + public void setIndex1(String index1) { + this.index1 = index1; + } + public String getIndex2() { + return index2; + } + public void setIndex2(String index2) { + this.index2 = index2; + } + public String getIndex3() { + return index3; + } + public void setIndex3(String index3) { + this.index3 = index3; + } + public String getSuggestion() { + return suggestion; + } + public void setSuggestion(String suggestion) { + this.suggestion = suggestion; + } + public String getTotalIndex() { + return totalIndex; + } + public void setTotalIndex(String totalIndex) { + this.totalIndex = totalIndex; + } + public String getBaifenbi() { + return baifenbi; + } + public void setBaifenbi(String baifenbi) { + this.baifenbi = baifenbi; + } + public String getUserImg() { + return userImg; + } + public void setUserImg(String userImg) { + this.userImg = userImg; + } + public String getSignature() { + return signature; + } + public void setSignature(String signature) { + this.signature = signature; + } + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + public String getHtmlName() { + return htmlName; + } + public void setHtmlName(String htmlName) { + this.htmlName = htmlName; + } + public String getIndex1Text() { + return index1Text; + } + public void setIndex1Text(String index1Text) { + this.index1Text = index1Text; + } + public String getIndex2Text() { + return index2Text; + } + public void setIndex2Text(String index2Text) { + this.index2Text = index2Text; + } + public String getIndex3Text() { + return index3Text; + } + public void setIndex3Text(String index3Text) { + this.index3Text = index3Text; + } + +} diff --git a/src/main/java/com/ifish/entity/PushList.java b/src/main/java/com/ifish/entity/PushList.java new file mode 100644 index 0000000..1d15a71 --- /dev/null +++ b/src/main/java/com/ifish/entity/PushList.java @@ -0,0 +1,137 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.util.Date; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.ifish.serializer.CustomDateSerializer; + +/** + * @ClassName: tbl_push_list + * @date 2015年7月2日 下午16:40:00 + * + */ +public class PushList implements Serializable{ + + private static final long serialVersionUID = -6718129027121198763L; + //ID + private Integer pushId; + //用户ID + private Integer userId; + //设备ID + private Integer deviceId; + //看护报告ID + private Integer reportId; + //推送手机类型 + private String phoneType; + //显示名称 + private String showName; + //推送消息类型 + private String pushType; + //推送标题 + private String pushTitle; + //推送内容 + private String pushContext; + //链接 + private String pushLink; + //极光推送状态 + private String jpushStatus; + //云信推送状态 + private String neteaseStatus; + //创建时间 + private Date createTime; + + public PushList() {} + + public PushList(Integer userId, Integer deviceId, String showName,String pushType,String neteaseStatus,String pushTitle,String pushContext) { + this.userId = userId; + this.deviceId = deviceId; + this.showName = showName; + this.pushType = pushType; + this.neteaseStatus = neteaseStatus; + this.pushTitle = pushTitle; + this.pushContext = pushContext; + this.createTime = new Date(); + } + + public Integer getPushId() { + return pushId; + } + public void setPushId(Integer pushId) { + this.pushId = pushId; + } + public Integer getUserId() { + return userId; + } + public void setUserId(Integer userId) { + this.userId = userId; + } + public Integer getDeviceId() { + return deviceId; + } + public void setDeviceId(Integer deviceId) { + this.deviceId = deviceId; + } + public String getShowName() { + return showName; + } + public void setShowName(String showName) { + this.showName = showName; + } + public String getPushType() { + return pushType; + } + public void setPushType(String pushType) { + this.pushType = pushType; + } + public String getPushTitle() { + return pushTitle; + } + public void setPushTitle(String pushTitle) { + this.pushTitle = pushTitle; + } + public String getPushContext() { + return pushContext; + } + public void setPushContext(String pushContext) { + this.pushContext = pushContext; + } + @JsonSerialize(using = CustomDateSerializer.class) + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + public String getPhoneType() { + return phoneType; + } + public void setPhoneType(String phoneType) { + this.phoneType = phoneType; + } + public String getPushLink() { + return pushLink; + } + public void setPushLink(String pushLink) { + this.pushLink = pushLink; + } + public Integer getReportId() { + return reportId; + } + public void setReportId(Integer reportId) { + this.reportId = reportId; + } + public String getJpushStatus() { + return jpushStatus; + } + public void setJpushStatus(String jpushStatus) { + this.jpushStatus = jpushStatus; + } + public String getNeteaseStatus() { + return neteaseStatus; + } + public void setNeteaseStatus(String neteaseStatus) { + this.neteaseStatus = neteaseStatus; + } + +} diff --git a/src/main/java/com/ifish/entity/QuestionsFeedback.java b/src/main/java/com/ifish/entity/QuestionsFeedback.java new file mode 100644 index 0000000..93abf09 --- /dev/null +++ b/src/main/java/com/ifish/entity/QuestionsFeedback.java @@ -0,0 +1,64 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.util.Date; + +/** + * @ClassName: tbl_questions_feedback + * @date 2015年7月2日 下午16:40:00 + * + */ +public class QuestionsFeedback implements Serializable{ + + private static final long serialVersionUID = -2969437537060946970L; + //ID + private Integer questionId; + //用户ID + private Integer userId; + //问题内容 + private String questionContent; + //回复内容 + private String questionReply; + //回复时间 + private Date replyTime; + //创建时间 + private Date createTime; + + public Integer getQuestionId() { + return questionId; + } + public void setQuestionId(Integer questionId) { + this.questionId = questionId; + } + public Integer getUserId() { + return userId; + } + public void setUserId(Integer userId) { + this.userId = userId; + } + public String getQuestionContent() { + return questionContent; + } + public void setQuestionContent(String questionContent) { + this.questionContent = questionContent; + } + public String getQuestionReply() { + return questionReply; + } + public void setQuestionReply(String questionReply) { + this.questionReply = questionReply; + } + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + public Date getReplyTime() { + return replyTime; + } + public void setReplyTime(Date replyTime) { + this.replyTime = replyTime; + } + +} diff --git a/src/main/java/com/ifish/entity/ShopsInfo.java b/src/main/java/com/ifish/entity/ShopsInfo.java new file mode 100644 index 0000000..4965ae0 --- /dev/null +++ b/src/main/java/com/ifish/entity/ShopsInfo.java @@ -0,0 +1,192 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.util.Date; + +/** + * @ClassName: shops_info + * @date 2015年7月2日 下午16:40:00 + * + */ +public class ShopsInfo implements Serializable{ + + private static final long serialVersionUID = 5256045896328402625L; + //ID + private Integer shopsId; + //用户ID + private Integer userId; + //店家姓名 + private String userName; + //店铺名称 + private String shopsName; + //店家电话 + private String shopsPhone; + //省 + private String shopsProvince; + //市 + private String shopsCity; + //区 + private String shopsArea; + //店家地址 + private String shopsAddress; + //身份证正面 + private String picture1; + //身份证背面 + private String picture2; + //营业执照 + private String picture3; + //店铺招牌 + private String picture4; + //审核状态 + private String status; + //app显示 + private String appShow; + //不通过原因 + private String reason; + //修改时间 + private Date updateTime; + //创建时间 + private Date createTime; + //会员类型 + private String typeKey; + //备注 + private String remark; + //微信号 + private String weixinCode; + //网店地址 + private String shopLink; + + public Integer getShopsId() { + return shopsId; + } + public void setShopsId(Integer shopsId) { + this.shopsId = shopsId; + } + public String getUserName() { + return userName; + } + public void setUserName(String userName) { + this.userName = userName; + } + public String getShopsName() { + return shopsName; + } + public void setShopsName(String shopsName) { + this.shopsName = shopsName; + } + public String getShopsPhone() { + return shopsPhone; + } + public void setShopsPhone(String shopsPhone) { + this.shopsPhone = shopsPhone; + } + public String getShopsAddress() { + return shopsAddress; + } + public void setShopsAddress(String shopsAddress) { + this.shopsAddress = shopsAddress; + } + public String getPicture1() { + return picture1; + } + public void setPicture1(String picture1) { + this.picture1 = picture1; + } + public String getPicture2() { + return picture2; + } + public void setPicture2(String picture2) { + this.picture2 = picture2; + } + public String getPicture3() { + return picture3; + } + public void setPicture3(String picture3) { + this.picture3 = picture3; + } + public String getStatus() { + return status; + } + public void setStatus(String status) { + this.status = status; + } + public Date getUpdateTime() { + return updateTime; + } + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + public String getShopsProvince() { + return shopsProvince; + } + public void setShopsProvince(String shopsProvince) { + this.shopsProvince = shopsProvince; + } + public String getShopsCity() { + return shopsCity; + } + public void setShopsCity(String shopsCity) { + this.shopsCity = shopsCity; + } + public String getShopsArea() { + return shopsArea; + } + public void setShopsArea(String shopsArea) { + this.shopsArea = shopsArea; + } + public String getReason() { + return reason; + } + public void setReason(String reason) { + this.reason = reason; + } + public Integer getUserId() { + return userId; + } + public void setUserId(Integer userId) { + this.userId = userId; + } + public String getPicture4() { + return picture4; + } + public void setPicture4(String picture4) { + this.picture4 = picture4; + } + public String getTypeKey() { + return typeKey; + } + public void setTypeKey(String typeKey) { + this.typeKey = typeKey; + } + public String getRemark() { + return remark; + } + public void setRemark(String remark) { + this.remark = remark; + } + public String getAppShow() { + return appShow; + } + public void setAppShow(String appShow) { + this.appShow = appShow; + } + public String getWeixinCode() { + return weixinCode; + } + public void setWeixinCode(String weixinCode) { + this.weixinCode = weixinCode; + } + public String getShopLink() { + return shopLink; + } + public void setShopLink(String shopLink) { + this.shopLink = shopLink; + } + +} diff --git a/src/main/java/com/ifish/entity/ShopsUserInfo.java b/src/main/java/com/ifish/entity/ShopsUserInfo.java new file mode 100644 index 0000000..0b3e4c6 --- /dev/null +++ b/src/main/java/com/ifish/entity/ShopsUserInfo.java @@ -0,0 +1,164 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +/** + * 商家会员信息 + * @author Administrator + * + */ +@Entity +@Table(name="tbl_shops_user_info") +public class ShopsUserInfo implements Serializable { + + private static final long serialVersionUID = -1540472446611945759L; + /** + * ID + */ + @Id + private ShopsUserInfoId id; + /** + * 会员等级 + */ + @Column(name="member_level",nullable=false) + private int memberLevel; + /** + * 用户名称 + */ + @Column(name="user_name",nullable=false,length=10) + private String userName; + /** + * 手机号码 + */ + @Column(name="phone_number",nullable=false,length=11) + private String phoneNumber; + /** + * 省 + */ + @Column(name="province",nullable=false,length=30) + private String province; + /** + * 市 + */ + @Column(name="city",nullable=false,length=30) + private String city; + /** + * 区 + */ + @Column(name="area",nullable=false,length=30) + private String area; + /** + * 地址 + */ + @Column(name="address",nullable=false,length=100) + private String address; + /** + * 备注 + */ + @Column(name="remark",nullable=false,length=50) + private String remark; + /** + * 修改时间 + */ + @Column(name="update_time") + @Temporal(TemporalType.TIMESTAMP) + private Date updateTime; + + /** + * 创建时间 + */ + @Column(name="create_time") + @Temporal(TemporalType.TIMESTAMP) + private Date createTime; + + public ShopsUserInfo() {} + + public ShopsUserInfo(ShopsUserInfoId id, int memberLevel) { + this.id = id; + this.memberLevel = memberLevel; + } + + public ShopsUserInfoId getId() { + return id; + } + public void setId(ShopsUserInfoId id) { + this.id = id; + } + public int getMemberLevel() { + return memberLevel; + } + public void setMemberLevel(int memberLevel) { + this.memberLevel = memberLevel; + } + public String getAddress() { + return address; + } + public void setAddress(String address) { + this.address = address; + } + public String getRemark() { + return remark; + } + public void setRemark(String remark) { + this.remark = remark; + } + public Date getUpdateTime() { + return updateTime; + } + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + public String getPhoneNumber() { + return phoneNumber; + } + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + } + public String getUserName() { + return userName; + } + public void setUserName(String userName) { + this.userName = userName; + } + + public String getProvince() { + return province; + } + + public void setProvince(String province) { + this.province = province; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public String getArea() { + return area; + } + + public void setArea(String area) { + this.area = area; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + +} diff --git a/src/main/java/com/ifish/entity/ShopsUserInfoId.java b/src/main/java/com/ifish/entity/ShopsUserInfoId.java new file mode 100644 index 0000000..d177c65 --- /dev/null +++ b/src/main/java/com/ifish/entity/ShopsUserInfoId.java @@ -0,0 +1,47 @@ +package com.ifish.entity; + +import java.io.Serializable; + +import javax.persistence.Column; +import javax.persistence.Embeddable; + +/** + * 商家用户信息ID + * @author Administrator + * + */ +@Embeddable +public class ShopsUserInfoId implements Serializable{ + + private static final long serialVersionUID = -6202050811830542892L; + /** + * 商家ID + */ + @Column(name="shops_id",nullable=false) + private Integer shopsId; + /** + * 用户ID + */ + @Column(name="user_id",nullable=false) + private Integer userId; + + public ShopsUserInfoId() {} + + public ShopsUserInfoId(Integer shopsId, Integer userId) { + this.shopsId = shopsId; + this.userId = userId; + } + public Integer getShopsId() { + return shopsId; + } + public void setShopsId(Integer shopsId) { + this.shopsId = shopsId; + } + public Integer getUserId() { + return userId; + } + public void setUserId(Integer userId) { + this.userId = userId; + } + +} diff --git a/src/main/java/com/ifish/entity/Ueditor.java b/src/main/java/com/ifish/entity/Ueditor.java new file mode 100644 index 0000000..3d8cffe --- /dev/null +++ b/src/main/java/com/ifish/entity/Ueditor.java @@ -0,0 +1,85 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.ifish.serializer.CustomDateSerializer; + +/** + * @ClassName: tbl_ueditor + * @date 2015年7月2日 下午16:40:00 * + */ +@Entity +@Table(name="tbl_ueditor") +public class Ueditor implements Serializable{ + + private static final long serialVersionUID = -6939110411331900619L; + /** + * ID + */ + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + @Column(name="ueditor_id") + private Integer ueditorId; + /** + * 标题 + */ + @Column(name="ueditor_title",nullable=true,length=50) + private String ueditorTitle; + /** + * html名称 + */ + @Column(name="html_name",length=100) + private String htmlName; + /** + * 信息类型 + */ + @Column(name="ueditor_type",nullable=true,length=1) + private String ueditorType; + /** + * 创建时间 + */ + @Column(name="create_time",columnDefinition="timestamp",updatable=false,length=1) + private Date createTime; + + public Integer getUeditorId() { + return ueditorId; + } + public void setUeditorId(Integer ueditorId) { + this.ueditorId = ueditorId; + } + public String getUeditorTitle() { + return ueditorTitle; + } + public void setUeditorTitle(String ueditorTitle) { + this.ueditorTitle = ueditorTitle; + } + @JsonSerialize(using = CustomDateSerializer.class) + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + public String getHtmlName() { + return htmlName; + } + public void setHtmlName(String htmlName) { + this.htmlName = htmlName; + } + public String getUeditorType() { + return ueditorType; + } + public void setUeditorType(String ueditorType) { + this.ueditorType = ueditorType; + } + +} diff --git a/src/main/java/com/ifish/entity/User.java b/src/main/java/com/ifish/entity/User.java new file mode 100644 index 0000000..7715048 --- /dev/null +++ b/src/main/java/com/ifish/entity/User.java @@ -0,0 +1,293 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.ifish.serializer.CustomDateSerializer; + +/** + * 用户信息 + * @date 2015年7月2日 下午16:40:00 + * + */ +@Entity +@Table(name="tbl_user") +public class User implements Serializable{ + + private static final long serialVersionUID = 9090213827766125261L; + /** + * 用户ID + */ + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + @Column(name="user_id") + private Integer userId; + /** + * 用户昵称 + */ + @Column(name="nick_name",nullable=false,length=20) + private String nickName; + /** + * 用户密码 + */ + @Column(name="user_password",nullable=false,length=32) + private String userPassword; + /** + * 手机号码 + */ + @Column(name="phone_number",unique=true,nullable=false,length=11) + private String phoneNumber; + /** + * 用户头像 + */ + @Column(name="user_img",length=100) + private String userImg; + /** + * 性别 + */ + @Column(name="user_sex",length=1) + private String userSex; + /** + * 个性签名 + */ + @Column(name="signature",length=30) + private String signature; + /** + * 注册手机类型 + */ + @Column(name="phone_type",updatable=false,length=10) + private String phoneType; + /** + * 登陆手机类型 + */ + @Column(name="login_type",updatable=false,length=10) + private String loginType; + /** + * 最后一次登陆 + */ + @Column(name="login_time") + @Temporal(TemporalType.TIMESTAMP) + private Date loginTime; + /** + * 地址 + */ + @Column(name="address",length=200) + private String address; + /** + * 是否注册技威 + */ + @Column(name="is_register_gwell",length=1) + private String isRegisterGwell; + /** + * code1 + */ + @Column(name="P2PVerify_code1",length=50) + private String p2PVerifyCode1; + /** + * code2 + */ + @Column(name="P2PVerify_code2",length=50) + private String p2PVerifyCode2; + /** + * UserID + */ + @Column(name="gwell_userID",length=50) + private String gwellUserID; + /** + * 是否注册云信 + */ + @Column(name="is_register_netease",length=1) + private String isRegisterNetease; + /** + * 云信token + */ + @Column(name="netease_token",length=50) + private String neteaseToken; + /** + * 用户类型(0:普通用户,1:商家用户) + */ + @Column(name="user_type",length=10) + private String userType; + /** + * 商家ID + */ + @Column(name="shops_user_id") + private Integer shopsUserId; + /** + * 经度 + */ + @Column(name="longitude") + private Double longitude; + /** + * 纬度 + */ + @Column(name="latitude") + private Double latitude; + /** + * 修改时间 + */ + @JsonSerialize(using = CustomDateSerializer.class) + @Column(name="update_time") + @Temporal(TemporalType.TIMESTAMP) + private Date updateTime; + /** + * 创建时间 + */ + @JsonSerialize(using = CustomDateSerializer.class) + @Column(name="create_time",updatable=false) + @Temporal(TemporalType.TIMESTAMP) + private Date createTime; + + public Integer getUserId() { + return userId; + } + public void setUserId(Integer userId) { + this.userId = userId; + } + public String getNickName() { + return nickName; + } + public void setNickName(String nickName) { + this.nickName = nickName; + } + + public String getUserPassword() { + return userPassword; + } + public void setUserPassword(String userPassword) { + this.userPassword = userPassword; + } + public String getPhoneNumber() { + return phoneNumber; + } + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + } + public String getUserImg() { + return userImg; + } + public void setUserImg(String userImg) { + this.userImg = userImg; + } + public String getUserSex() { + return userSex; + } + public void setUserSex(String userSex) { + this.userSex = userSex; + } + public String getSignature() { + return signature; + } + public void setSignature(String signature) { + this.signature = signature; + } + public Date getUpdateTime() { + return updateTime; + } + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + public String getPhoneType() { + return phoneType; + } + public void setPhoneType(String phoneType) { + this.phoneType = phoneType; + } + + public String getLoginType() { + return loginType; + } + + public void setLoginType(String loginType) { + this.loginType = loginType; + } + public String getAddress() { + return address; + } + public void setAddress(String address) { + this.address = address; + } + public String getIsRegisterGwell() { + return isRegisterGwell; + } + public void setIsRegisterGwell(String isRegisterGwell) { + this.isRegisterGwell = isRegisterGwell; + } + public String getGwellUserID() { + return gwellUserID; + } + public void setGwellUserID(String gwellUserID) { + this.gwellUserID = gwellUserID; + } + public String getP2PVerifyCode1() { + return p2PVerifyCode1; + } + public void setP2PVerifyCode1(String p2pVerifyCode1) { + p2PVerifyCode1 = p2pVerifyCode1; + } + public String getP2PVerifyCode2() { + return p2PVerifyCode2; + } + public void setP2PVerifyCode2(String p2pVerifyCode2) { + p2PVerifyCode2 = p2pVerifyCode2; + } + public String getUserType() { + return userType; + } + public void setUserType(String userType) { + this.userType = userType; + } + public Integer getShopsUserId() { + return shopsUserId; + } + public void setShopsUserId(Integer shopsUserId) { + this.shopsUserId = shopsUserId; + } + public String getIsRegisterNetease() { + return isRegisterNetease; + } + public void setIsRegisterNetease(String isRegisterNetease) { + this.isRegisterNetease = isRegisterNetease; + } + public String getNeteaseToken() { + return neteaseToken; + } + public void setNeteaseToken(String neteaseToken) { + this.neteaseToken = neteaseToken; + } + public Double getLongitude() { + return longitude; + } + public void setLongitude(Double longitude) { + this.longitude = longitude; + } + public Double getLatitude() { + return latitude; + } + public void setLatitude(Double latitude) { + this.latitude = latitude; + } + public Date getLoginTime() { + return loginTime; + } + public void setLoginTime(Date loginTime) { + this.loginTime = loginTime; + } + +} diff --git a/src/main/java/com/ifish/entity/UserActivity.java b/src/main/java/com/ifish/entity/UserActivity.java new file mode 100644 index 0000000..4156b83 --- /dev/null +++ b/src/main/java/com/ifish/entity/UserActivity.java @@ -0,0 +1,74 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +/** + * 用户动态 + * @author Administrator + * + */ +@Entity +@Table(name="tbl_user_activity") +public class UserActivity implements Serializable{ + + private static final long serialVersionUID = 1646629105686460668L; + /** + * 动态ID + */ + @Id + @Column(name="activity_id") + @GeneratedValue(strategy=GenerationType.IDENTITY) + private Integer activityId; + /** + * 用户ID + */ + @Column(name="user_id",nullable=false) + private Integer userId; + /** + * 动态类型 + */ + @Column(name="activity_type",length=20,nullable=false) + private String activityType; + /** + * 创建时间 + */ + @Column(name="create_time") + @Temporal(TemporalType.TIMESTAMP) + private Date createTime; + + public Integer getActivityId() { + return activityId; + } + public void setActivityId(Integer activityId) { + this.activityId = activityId; + } + public Integer getUserId() { + return userId; + } + public void setUserId(Integer userId) { + this.userId = userId; + } + public String getActivityType() { + return activityType; + } + public void setActivityType(String activityType) { + this.activityType = activityType; + } + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + +} diff --git a/src/main/java/com/ifish/entity/UserAsset.java b/src/main/java/com/ifish/entity/UserAsset.java new file mode 100644 index 0000000..1bd45e7 --- /dev/null +++ b/src/main/java/com/ifish/entity/UserAsset.java @@ -0,0 +1,108 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.math.BigDecimal; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +/** + * 用户资产表(金币,经验值等) + * @author Administrator + */ +@Entity +@Table(name="tbl_user_asset") +public class UserAsset implements Serializable{ + + private static final long serialVersionUID = 5604899088149487004L; + /** + * 用户ID + */ + @Id + @Column(name="user_id",nullable=false) + private Integer userId; + /** + * 经验值 + */ + @Column(name="grade_value",nullable=false) + private Integer gradeValue; + /** + * 金币 + */ + @Column(name="gold_value",nullable=false,precision=9,scale=2) + private BigDecimal goldValue; + /** + * 最后一次签到日期 + */ + @Column(name="last_signin_date",nullable=false) + private String lastSigninDate; + /** + * 连续签到天数 + */ + @Column(name="keep_signin_num",nullable=false) + private Integer keepSigninNum; + /** + * 最后一次登陆日期 + */ + @Column(name="last_login_date",nullable=false) + private String lastLoginDate; + + public UserAsset() {} + + public UserAsset(Integer userId) { + this.userId = userId; + this.gradeValue = 0; + this.goldValue = new BigDecimal(0); + this.lastSigninDate = ""; + this.keepSigninNum = 0; + this.lastLoginDate = ""; + } + + public UserAsset(Integer userId,BigDecimal goldValue) { + this.userId = userId; + this.gradeValue = 0; + this.goldValue = goldValue; + this.lastSigninDate = ""; + this.keepSigninNum = 0; + this.lastLoginDate = ""; + } + public Integer getUserId() { + return userId; + } + public void setUserId(Integer userId) { + this.userId = userId; + } + public Integer getGradeValue() { + return gradeValue; + } + public void setGradeValue(Integer gradeValue) { + this.gradeValue = gradeValue; + } + public BigDecimal getGoldValue() { + return goldValue; + } + public void setGoldValue(BigDecimal goldValue) { + this.goldValue = goldValue; + } + public String getLastSigninDate() { + return lastSigninDate; + } + public void setLastSigninDate(String lastSigninDate) { + this.lastSigninDate = lastSigninDate; + } + public Integer getKeepSigninNum() { + return keepSigninNum; + } + public void setKeepSigninNum(Integer keepSigninNum) { + this.keepSigninNum = keepSigninNum; + } + public String getLastLoginDate() { + return lastLoginDate; + } + public void setLastLoginDate(String lastLoginDate) { + this.lastLoginDate = lastLoginDate; + } + +} diff --git a/src/main/java/com/ifish/entity/VenderList.java b/src/main/java/com/ifish/entity/VenderList.java new file mode 100644 index 0000000..64743df --- /dev/null +++ b/src/main/java/com/ifish/entity/VenderList.java @@ -0,0 +1,67 @@ +package com.ifish.entity; + +import java.io.Serializable; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +/** + * @ClassName: tbl_vender_list + * @date 2015年7月2日 下午16:40:00 + * + */ +@Entity +@Table(name="tbl_vender_list") +public class VenderList implements Serializable{ + + private static final long serialVersionUID = 1989223583119300872L; + /** + * 厂家编号 + */ + @Id + @Column(name="brand_code",nullable=true,length=20) + private String brandCode; + /** + * 厂家名称 + */ + @Column(name="brand_name",nullable=true,length=20) + private String brandName; + /** + * 品牌介绍 + */ + @Column(name="brand_introduce",length=100) + private String brandIntroduce; + /** + * logo + */ + @Column(name="brand_logo",length=100) + private String logo; + + public String getBrandName() { + return brandName; + } + public void setBrandName(String brandName) { + this.brandName = brandName; + } + public String getBrandIntroduce() { + return brandIntroduce; + } + public void setBrandIntroduce(String brandIntroduce) { + this.brandIntroduce = brandIntroduce; + } + public String getLogo() { + return logo; + } + public void setLogo(String logo) { + this.logo = logo; + } + public String getBrandCode() { + return brandCode; + } + public void setBrandCode(String brandCode) { + this.brandCode = brandCode; + } + +} diff --git a/src/main/java/com/ifish/entity/Version.java b/src/main/java/com/ifish/entity/Version.java new file mode 100644 index 0000000..39696e8 --- /dev/null +++ b/src/main/java/com/ifish/entity/Version.java @@ -0,0 +1,73 @@ +package com.ifish.entity; + +import java.io.Serializable; +import java.util.Date; + +/** + * @ClassName: tbl_version + * @date 2015年7月2日 下午16:40:00 + * + */ +public class Version implements Serializable{ + + private static final long serialVersionUID = -6718129027121198763L; + //版本ID + private Integer versionId; + //版本号 + private String versionCode; + //手机类型 + private String phoneType; + //更新类型,1强制升级,0,不强制 + private String isMustUpdate; + //更新内容 + private String uploadContent; + //下载地址 + private String appAddress; + //创建时间 + private Date createTime; + + public Integer getVersionId() { + return versionId; + } + public void setVersionId(Integer versionId) { + this.versionId = versionId; + } + public String getVersionCode() { + return versionCode; + } + public void setVersionCode(String versionCode) { + this.versionCode = versionCode; + } + public String getUploadContent() { + return uploadContent; + } + public void setUploadContent(String uploadContent) { + this.uploadContent = uploadContent; + } + public String getAppAddress() { + return appAddress; + } + public void setAppAddress(String appAddress) { + this.appAddress = appAddress; + } + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + public String getIsMustUpdate() { + return isMustUpdate; + } + public void setIsMustUpdate(String isMustUpdate) { + this.isMustUpdate = isMustUpdate; + } + public String getPhoneType() { + return phoneType; + } + public void setPhoneType(String phoneType) { + this.phoneType = phoneType; + } + + +} diff --git a/src/main/java/com/ifish/entity/hbm/BrowseRoom.hbm.xml b/src/main/java/com/ifish/entity/hbm/BrowseRoom.hbm.xml new file mode 100644 index 0000000..9489f1d --- /dev/null +++ b/src/main/java/com/ifish/entity/hbm/BrowseRoom.hbm.xml @@ -0,0 +1,13 @@ + + + + + false + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/ifish/entity/hbm/Camera.hbm.xml b/src/main/java/com/ifish/entity/hbm/Camera.hbm.xml new file mode 100644 index 0000000..a9d3274 --- /dev/null +++ b/src/main/java/com/ifish/entity/hbm/Camera.hbm.xml @@ -0,0 +1,14 @@ + + + + + false + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/ifish/entity/hbm/CameraActive.hbm.xml b/src/main/java/com/ifish/entity/hbm/CameraActive.hbm.xml new file mode 100644 index 0000000..67c18d5 --- /dev/null +++ b/src/main/java/com/ifish/entity/hbm/CameraActive.hbm.xml @@ -0,0 +1,13 @@ + + + + + false + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/ifish/entity/hbm/CameraUser.hbm.xml b/src/main/java/com/ifish/entity/hbm/CameraUser.hbm.xml new file mode 100644 index 0000000..3067bb2 --- /dev/null +++ b/src/main/java/com/ifish/entity/hbm/CameraUser.hbm.xml @@ -0,0 +1,17 @@ + + + + + false + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/ifish/entity/hbm/Device.hbm.xml b/src/main/java/com/ifish/entity/hbm/Device.hbm.xml new file mode 100644 index 0000000..79e90f1 --- /dev/null +++ b/src/main/java/com/ifish/entity/hbm/Device.hbm.xml @@ -0,0 +1,26 @@ + + + + + false + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/ifish/entity/hbm/DeviceCamera.hbm.xml b/src/main/java/com/ifish/entity/hbm/DeviceCamera.hbm.xml new file mode 100644 index 0000000..d6bb31e --- /dev/null +++ b/src/main/java/com/ifish/entity/hbm/DeviceCamera.hbm.xml @@ -0,0 +1,11 @@ + + + + + false + + + + + + \ No newline at end of file diff --git a/src/main/java/com/ifish/entity/hbm/DeviceUser.hbm.xml b/src/main/java/com/ifish/entity/hbm/DeviceUser.hbm.xml new file mode 100644 index 0000000..28bb4f1 --- /dev/null +++ b/src/main/java/com/ifish/entity/hbm/DeviceUser.hbm.xml @@ -0,0 +1,17 @@ + + + + + false + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/ifish/entity/hbm/HardwareType.hbm.xml b/src/main/java/com/ifish/entity/hbm/HardwareType.hbm.xml new file mode 100644 index 0000000..d621b1e --- /dev/null +++ b/src/main/java/com/ifish/entity/hbm/HardwareType.hbm.xml @@ -0,0 +1,25 @@ + + + + + false + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/ifish/entity/hbm/LiveBanner.hbm.xml b/src/main/java/com/ifish/entity/hbm/LiveBanner.hbm.xml new file mode 100644 index 0000000..077adc7 --- /dev/null +++ b/src/main/java/com/ifish/entity/hbm/LiveBanner.hbm.xml @@ -0,0 +1,14 @@ + + + + + false + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/ifish/entity/hbm/LookReport.hbm.xml b/src/main/java/com/ifish/entity/hbm/LookReport.hbm.xml new file mode 100644 index 0000000..2d1b70f --- /dev/null +++ b/src/main/java/com/ifish/entity/hbm/LookReport.hbm.xml @@ -0,0 +1,22 @@ + + + + + false + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/ifish/entity/hbm/PushList.hbm.xml b/src/main/java/com/ifish/entity/hbm/PushList.hbm.xml new file mode 100644 index 0000000..5cc5d0a --- /dev/null +++ b/src/main/java/com/ifish/entity/hbm/PushList.hbm.xml @@ -0,0 +1,22 @@ + + + + + false + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/ifish/entity/hbm/QuestionsFeedback.hbm.xml b/src/main/java/com/ifish/entity/hbm/QuestionsFeedback.hbm.xml new file mode 100644 index 0000000..b6e507c --- /dev/null +++ b/src/main/java/com/ifish/entity/hbm/QuestionsFeedback.hbm.xml @@ -0,0 +1,15 @@ + + + + + false + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/ifish/entity/hbm/ShopsInfo.hbm.xml b/src/main/java/com/ifish/entity/hbm/ShopsInfo.hbm.xml new file mode 100644 index 0000000..66fe446 --- /dev/null +++ b/src/main/java/com/ifish/entity/hbm/ShopsInfo.hbm.xml @@ -0,0 +1,31 @@ + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/ifish/entity/hbm/Version.hbm.xml b/src/main/java/com/ifish/entity/hbm/Version.hbm.xml new file mode 100644 index 0000000..a75dee8 --- /dev/null +++ b/src/main/java/com/ifish/entity/hbm/Version.hbm.xml @@ -0,0 +1,16 @@ + + + + + false + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/ifish/enums/ActivityTypeEnum.java b/src/main/java/com/ifish/enums/ActivityTypeEnum.java new file mode 100644 index 0000000..8c45add --- /dev/null +++ b/src/main/java/com/ifish/enums/ActivityTypeEnum.java @@ -0,0 +1,62 @@ +package com.ifish.enums; + +/** + * 动态类型 + * + * @author Administrator + * + */ +public enum ActivityTypeEnum { + everyDaySignin("everyDaySignin", "每天签到"), + readInformation("readInformation", "阅读资讯"), + openGoodsLink("openGoodsLink", "查看商品"), + roomLeaveMsg("roomLeaveMsg", "爱鱼看看留言"), + ifishCommunity("ifishCommunity", "爱鱼圈"), + shareIfishApp("shareIfishApp", "分享爱鱼奇"), + shareCameraPicture("shareCameraPicture", "图片分享"), + shareLookReport("shareLookReport", "看护报告"), + rename("rename", "更换姓名"), + uploadHeadImg("uploadHeadImg", "上传头像"), + openShareCamera("openShareCamera", "开启分享"), + choiceLookShops("choiceLookShops", "优选商家"), + ifishDoctor("ifishDoctor", "鱼医生"), + everyDayLogin("everyDayLogin", "每天登陆"), + registerGive("registerGive", "注册赠送"), + //升级 + upgrade("upgrade", "等级提升"), + bindDevice("bindDevice", "绑定水族箱"), + bindCamera("bindCamera", "绑定摄像头"), + //温度预警 + warningByTemperature("warningByTemperature", "温度预警"), + //换水提醒 + reminderByChangeWater("reminderByChangeWater", "换水提醒"), + //商家入驻 + merchantsSettled("merchantsSettled", "商家入驻"); + + private ActivityTypeEnum(String key, String value) { + this.key = key; + this.value = value; + } + + public static boolean getValueByKey(String key) { + for (ActivityTypeEnum actype : ActivityTypeEnum.values()) { + if (actype.getKey().equals(key)) { + return true; + } + } + return false; + } + + private String key; + + private String value; + + public String getKey() { + return key; + } + + public String getValue() { + return value; + } + +} diff --git a/src/main/java/com/ifish/enums/AdTypeEnum.java b/src/main/java/com/ifish/enums/AdTypeEnum.java new file mode 100644 index 0000000..3992c81 --- /dev/null +++ b/src/main/java/com/ifish/enums/AdTypeEnum.java @@ -0,0 +1,43 @@ +package com.ifish.enums; + +public enum AdTypeEnum { + one(1,"首页广告位"), + two(2,"资讯广告位"), + three(3,"优选商家广告位"), + four(4,"签到广告位"), + five(5,"爱鱼看看广告位"), + six(6,"鱼医生广告位"), + seven(7,"loading页广告位"); + + private AdTypeEnum(Integer key,String value){ + this.key = key; + this.value = value; + } + + //普通方法 + public static AdTypeEnum getAdTypeEnum(Integer key) { + for (AdTypeEnum c : AdTypeEnum.values()) { + if (c.getKey().equals(key)) { + return c; + } + } + return null; + } + + private Integer key; + private String value; + + public Integer getKey() { + return key; + } + public void setKey(Integer key) { + this.key = key; + } + public String getValue() { + return value; + } + public void setValue(String value) { + this.value = value; + } + +} diff --git a/src/main/java/com/ifish/enums/AddTypeEnum.java b/src/main/java/com/ifish/enums/AddTypeEnum.java new file mode 100644 index 0000000..84988fe --- /dev/null +++ b/src/main/java/com/ifish/enums/AddTypeEnum.java @@ -0,0 +1,53 @@ +package com.ifish.enums; + +import com.alibaba.fastjson.JSONObject; + + +public enum AddTypeEnum { + once("once","一次"), + everyDay("everyDay","每天"), + everyTime("everyTime","每次"), + keepSignIn("keepSignIn","连续签到"), + addUpSignIn("addUpSignIn","累计签到"); + + private AddTypeEnum(String key,String value){ + this.key = key; + this.value = value; + } + + //普通方法 + public static String getValue(String key) { + for (AddTypeEnum c : AddTypeEnum.values()) { + if (c.getKey().equals(key)) { + return c.getValue(); + } + } + return null; + } + + //普通方法 + public static JSONObject getJson() { + JSONObject json = new JSONObject(); + for (AddTypeEnum addTypeEnum : AddTypeEnum.values()) { + json.put(addTypeEnum.getKey(), addTypeEnum.getValue()); + } + return json; + } + + private String key; + private String value; + + public String getKey() { + return key; + } + public void setKey(String key) { + this.key = key; + } + public String getValue() { + return value; + } + public void setValue(String value) { + this.value = value; + } + +} diff --git a/src/main/java/com/ifish/enums/BooleanEnum.java b/src/main/java/com/ifish/enums/BooleanEnum.java new file mode 100644 index 0000000..d2e1851 --- /dev/null +++ b/src/main/java/com/ifish/enums/BooleanEnum.java @@ -0,0 +1,29 @@ +package com.ifish.enums; + +public enum BooleanEnum { + NO("0","否"), + YES("1","是"); + + private BooleanEnum(String key,String value){ + this.key = key; + this.value = value; + } + + private String key; + private String value; + + + public String getKey() { + return key; + } + public void setKey(String key) { + this.key = key; + } + public String getValue() { + return value; + } + public void setValue(String value) { + this.value = value; + } + +} diff --git a/src/main/java/com/ifish/enums/GoldExpendTypeEnum.java b/src/main/java/com/ifish/enums/GoldExpendTypeEnum.java new file mode 100644 index 0000000..f72519f --- /dev/null +++ b/src/main/java/com/ifish/enums/GoldExpendTypeEnum.java @@ -0,0 +1,56 @@ +package com.ifish.enums; + +import com.alibaba.fastjson.JSONObject; + +/** + * 金币消耗方式 + * @author Administrator + * + */ +public enum GoldExpendTypeEnum { + + questionPayTour("questionPayTour","鱼医生打赏"), + liveRoomPayTour("liveRoomPayTour","爱鱼看看打赏"), + exchangeCoupon("exchangeCoupon","兑换优惠券"); + + private GoldExpendTypeEnum(String key,String value){ + this.key = key; + this.value = value; + } + + //普通方法 + public static String getValue(String key) { + for (GoldExpendTypeEnum c : GoldExpendTypeEnum.values()) { + if (c.getKey().equals(key)) { + return c.getValue(); + } + } + return null; + } + + //普通方法 + public static JSONObject getJson() { + JSONObject json = new JSONObject(); + for (GoldExpendTypeEnum ruleEnum : GoldExpendTypeEnum.values()) { + json.put(ruleEnum.getKey(), ruleEnum.getValue()); + } + return json; + } + + private String key; + private String value; + + public String getKey() { + return key; + } + public void setKey(String key) { + this.key = key; + } + public String getValue() { + return value; + } + public void setValue(String value) { + this.value = value; + } + +} diff --git a/src/main/java/com/ifish/enums/GoldGetTypeEnum.java b/src/main/java/com/ifish/enums/GoldGetTypeEnum.java new file mode 100644 index 0000000..8377ce7 --- /dev/null +++ b/src/main/java/com/ifish/enums/GoldGetTypeEnum.java @@ -0,0 +1,73 @@ +package com.ifish.enums; + +import com.alibaba.fastjson.JSONObject; + +/** + * 金币获取方式 + * @author Administrator + * + */ +public enum GoldGetTypeEnum { + //每天加成 + everyDaySignin("everyDaySignin","每天签到"), + readInformation("readInformation","阅读资讯"), + openGoodsLink("openGoodsLink","查看商品"), + roomLeaveMsg("roomLeaveMsg","爱鱼看看留言"), + ifishCommunity("ifishCommunity","爱鱼圈"), + shareCameraPicture("shareCameraPicture","图片分享"), + shareLookReport("shareLookReport","看护报告"), + hitGoldenEgg("hitGoldenEgg","砸金蛋"), + shareIfishApp("shareIfishApp","分享爱鱼奇"), + //一次加成 + rename("rename","更换姓名"), + uploadHeadImg("uploadHeadImg","上传头像"), + openShareCamera("openShareCamera","开启分享"), + choiceLookShops("choiceLookShops","优选商家"), + ifishDoctor("ifishDoctor","鱼医生"), + //每次加成 + questionPayTour("questionPayTour","问题打赏"), + liveRoomPayTour("liveRoomPayTour","爱鱼看看打赏"), + //系统赠送 + registerGive("registerGive","注册赠送"); + + private GoldGetTypeEnum(String key,String value){ + this.key = key; + this.value = value; + } + + //普通方法 + public static String getValue(String key) { + for (GoldGetTypeEnum c : GoldGetTypeEnum.values()) { + if (c.getKey().equals(key)) { + return c.getValue(); + } + } + return null; + } + + //普通方法 + public static JSONObject getJson() { + JSONObject json = new JSONObject(); + for (GoldGetTypeEnum ruleEnum : GoldGetTypeEnum.values()) { + json.put(ruleEnum.getKey(), ruleEnum.getValue()); + } + return json; + } + + private String key; + private String value; + + public String getKey() { + return key; + } + public void setKey(String key) { + this.key = key; + } + public String getValue() { + return value; + } + public void setValue(String value) { + this.value = value; + } + +} diff --git a/src/main/java/com/ifish/enums/GradeGetTypeEnum.java b/src/main/java/com/ifish/enums/GradeGetTypeEnum.java new file mode 100644 index 0000000..938a52a --- /dev/null +++ b/src/main/java/com/ifish/enums/GradeGetTypeEnum.java @@ -0,0 +1,39 @@ +package com.ifish.enums; + +/** + * 经验获取方式 + * @author Administrator + */ +public enum GradeGetTypeEnum { + //一次加成 + bindDevice("bindDevice","绑定水族箱"), + bindCamera("bindCamera","绑定摄像头"), + //每天加成 + everyDayLogin("everyDayLogin","每天登陆"); + + private String key; + private String value; + + private GradeGetTypeEnum(String key,String value){ + this.key = key; + this.value = value; + } + + public String getKey(String key){ + for (GradeGetTypeEnum em : GradeGetTypeEnum.values()) { + if(em.getKey().equals(key)){ + return em.getValue(); + } + } + return null; + } + + public String getKey() { + return key; + } + + public String getValue() { + return value; + } + +} diff --git a/src/main/java/com/ifish/enums/GwellEnum.java b/src/main/java/com/ifish/enums/GwellEnum.java new file mode 100644 index 0000000..042dbe0 --- /dev/null +++ b/src/main/java/com/ifish/enums/GwellEnum.java @@ -0,0 +1,29 @@ +package com.ifish.enums; + +public enum GwellEnum { + success("0","注册成功"),//注册成功 + fail("1","注册失败"),//注册失败 + repeat("7","邮箱已被注册");//邮箱已被注册 + + private GwellEnum(String key,String value){ + this.key = key; + this.value = value; + } + + private String key; + private String value; + + + public String getKey() { + return key; + } + public void setKey(String key) { + this.key = key; + } + public String getValue() { + return value; + } + public void setValue(String value) { + this.value = value; + } +} diff --git a/src/main/java/com/ifish/enums/IfishShopPlaceEnum.java b/src/main/java/com/ifish/enums/IfishShopPlaceEnum.java new file mode 100644 index 0000000..3546878 --- /dev/null +++ b/src/main/java/com/ifish/enums/IfishShopPlaceEnum.java @@ -0,0 +1,55 @@ +package com.ifish.enums; + +import com.alibaba.fastjson.JSONObject; + +/** + * 商品位置 + * @author Administrator + * + */ +public enum IfishShopPlaceEnum { + one(1,"首页"), + two(2,"鱼医生"), + three(3,"探索-爱鱼严选"), + fore(4,"商家-进货管理"); + + private IfishShopPlaceEnum(Integer key,String value){ + this.key = key; + this.value = value; + } + + //普通方法 + public static IfishShopPlaceEnum getAdTypeEnum(Integer key) { + for (IfishShopPlaceEnum c : IfishShopPlaceEnum.values()) { + if (c.getKey().equals(key)) { + return c; + } + } + return null; + } + + public static JSONObject getJson() { + JSONObject json = new JSONObject(); + for (IfishShopPlaceEnum adTypeEnum : IfishShopPlaceEnum.values()) { + json.put(adTypeEnum.getKey().toString(), adTypeEnum.getValue()); + } + return json; + } + + private Integer key; + private String value; + + public Integer getKey() { + return key; + } + public void setKey(Integer key) { + this.key = key; + } + public String getValue() { + return value; + } + public void setValue(String value) { + this.value = value; + } + +} diff --git a/src/main/java/com/ifish/enums/Index1Enum.java b/src/main/java/com/ifish/enums/Index1Enum.java new file mode 100644 index 0000000..b27a453 --- /dev/null +++ b/src/main/java/com/ifish/enums/Index1Enum.java @@ -0,0 +1,40 @@ +package com.ifish.enums; + +public enum Index1Enum { + number0("0","简直是鱼儿的地狱啊"), + number10("10","鱼儿能继续活下去也是个奇迹"), + number20("20","还凑合~"), + number30("30","良好,棒棒哒"); + + private Index1Enum(String key,String value){ + this.key = key; + this.value = value; + } + + private String key; + private String value; + + //普通方法 + public static String getValue(String key) { + for (Index1Enum c : Index1Enum.values()) { + if (c.getKey().equals(key)) { + return c.getValue(); + } + } + return null; + } + + public String getKey() { + return key; + } + public void setKey(String key) { + this.key = key; + } + public String getValue() { + return value; + } + public void setValue(String value) { + this.value = value; + } + +} diff --git a/src/main/java/com/ifish/enums/Index2Enum.java b/src/main/java/com/ifish/enums/Index2Enum.java new file mode 100644 index 0000000..bf1bed5 --- /dev/null +++ b/src/main/java/com/ifish/enums/Index2Enum.java @@ -0,0 +1,40 @@ +package com.ifish.enums; + +public enum Index2Enum { + number0("0","这是有多久没喂了"), + number10("10","喂太少了,鱼儿快饿死啦"), + number20("20","喂太多了,以后少喂点"), + number30("30","饱食度刚好,赞一个"); + + private Index2Enum(String key,String value){ + this.key = key; + this.value = value; + } + + private String key; + private String value; + + //普通方法 + public static String getValue(String key) { + for (Index2Enum c : Index2Enum.values()) { + if (c.getKey().equals(key)) { + return c.getValue(); + } + } + return null; + } + + public String getKey() { + return key; + } + public void setKey(String key) { + this.key = key; + } + public String getValue() { + return value; + } + public void setValue(String value) { + this.value = value; + } + +} diff --git a/src/main/java/com/ifish/enums/Index3Enum.java b/src/main/java/com/ifish/enums/Index3Enum.java new file mode 100644 index 0000000..98b6b71 --- /dev/null +++ b/src/main/java/com/ifish/enums/Index3Enum.java @@ -0,0 +1,40 @@ +package com.ifish.enums; + +public enum Index3Enum { + number0("0","病怏怏的,快不行了"), + number15("15","需要赶紧上药了哦"), + number25("25","还好,多观察几天"), + number40("40","活蹦乱跳,好着呢"); + + private Index3Enum(String key,String value){ + this.key = key; + this.value = value; + } + + private String key; + private String value; + + //普通方法 + public static String getValue(String key) { + for (Index3Enum c : Index3Enum.values()) { + if (c.getKey().equals(key)) { + return c.getValue(); + } + } + return null; + } + + public String getKey() { + return key; + } + public void setKey(String key) { + this.key = key; + } + public String getValue() { + return value; + } + public void setValue(String value) { + this.value = value; + } + +} diff --git a/src/main/java/com/ifish/enums/LiveRoomOrderTypeEnum.java b/src/main/java/com/ifish/enums/LiveRoomOrderTypeEnum.java new file mode 100644 index 0000000..b0fe3a2 --- /dev/null +++ b/src/main/java/com/ifish/enums/LiveRoomOrderTypeEnum.java @@ -0,0 +1,45 @@ +package com.ifish.enums; + + +/** + * 直播间排序 + * @author Administrator + * + */ +public enum LiveRoomOrderTypeEnum { + one(1,"时间倒序"), + two(2,"人气值倒序"), + three(3,"后台推荐顺序"); + + private LiveRoomOrderTypeEnum(Integer key,String value){ + this.key = key; + this.value = value; + } + + //普通方法 + public static LiveRoomOrderTypeEnum getAdTypeEnum(Integer key) { + for (LiveRoomOrderTypeEnum c : LiveRoomOrderTypeEnum.values()) { + if (c.getKey().equals(key)) { + return c; + } + } + return null; + } + + private Integer key; + private String value; + + public Integer getKey() { + return key; + } + public void setKey(Integer key) { + this.key = key; + } + public String getValue() { + return value; + } + public void setValue(String value) { + this.value = value; + } + +} diff --git a/src/main/java/com/ifish/enums/MemberLevelEnum.java b/src/main/java/com/ifish/enums/MemberLevelEnum.java new file mode 100644 index 0000000..045fe19 --- /dev/null +++ b/src/main/java/com/ifish/enums/MemberLevelEnum.java @@ -0,0 +1,28 @@ +package com.ifish.enums; + +/** + * 商家会员等级 + * @author Administrator + * + */ +public enum MemberLevelEnum { + level_1(1,"等级1"), + level_2(2,"等级2"), + level_3(3,"等级3"); + + private MemberLevelEnum(int key,String value){ + this.key = key; + this.value = value; + } + + private int key; + private String value; + + + public int getKey() { + return key; + } + public String getValue() { + return value; + } +} diff --git a/src/main/java/com/ifish/enums/NeteaseEnum.java b/src/main/java/com/ifish/enums/NeteaseEnum.java new file mode 100644 index 0000000..b0e5062 --- /dev/null +++ b/src/main/java/com/ifish/enums/NeteaseEnum.java @@ -0,0 +1,28 @@ +package com.ifish.enums; + +public enum NeteaseEnum { + status200("200","操作成功"), + status414("414","参数错误"); + + private NeteaseEnum(String key,String value){ + this.key = key; + this.value = value; + } + + private String key; + private String value; + + + public String getKey() { + return key; + } + public void setKey(String key) { + this.key = key; + } + public String getValue() { + return value; + } + public void setValue(String value) { + this.value = value; + } +} diff --git a/src/main/java/com/ifish/enums/PayTourTypeEnum.java b/src/main/java/com/ifish/enums/PayTourTypeEnum.java new file mode 100644 index 0000000..e786fda --- /dev/null +++ b/src/main/java/com/ifish/enums/PayTourTypeEnum.java @@ -0,0 +1,53 @@ +package com.ifish.enums; + +import java.math.BigDecimal; + +import com.alibaba.fastjson.JSONObject; + + +public enum PayTourTypeEnum { + gold10("0",new BigDecimal(10)), + gold20("1",new BigDecimal(20)), + gold50("2",new BigDecimal(50)); + + private PayTourTypeEnum(String key,BigDecimal value){ + this.key = key; + this.value = value; + } + + //普通方法 + public static BigDecimal getValue(String key) { + for (PayTourTypeEnum c : PayTourTypeEnum.values()) { + if (c.getKey().equals(key)) { + return c.getValue(); + } + } + return null; + } + + //普通方法 + public static JSONObject getJson() { + JSONObject json = new JSONObject(); + for (PayTourTypeEnum addTypeEnum : PayTourTypeEnum.values()) { + json.put(addTypeEnum.getKey(), addTypeEnum.getValue()); + } + return json; + } + + private String key; + private BigDecimal value; + + public String getKey() { + return key; + } + public void setKey(String key) { + this.key = key; + } + public BigDecimal getValue() { + return value; + } + public void setValue(BigDecimal value) { + this.value = value; + } + +} diff --git a/src/main/java/com/ifish/enums/PhoneTypeEnum.java b/src/main/java/com/ifish/enums/PhoneTypeEnum.java new file mode 100644 index 0000000..e5d16a0 --- /dev/null +++ b/src/main/java/com/ifish/enums/PhoneTypeEnum.java @@ -0,0 +1,29 @@ +package com.ifish.enums; + +public enum PhoneTypeEnum { + ios("ios","ios"), + android("android","安卓"); + + private PhoneTypeEnum(String key,String value){ + this.key = key; + this.value = value; + } + + private String key; + private String value; + + + public String getKey() { + return key; + } + public void setKey(String key) { + this.key = key; + } + public String getValue() { + return value; + } + public void setValue(String value) { + this.value = value; + } + +} diff --git a/src/main/java/com/ifish/enums/PushTypeEnum.java b/src/main/java/com/ifish/enums/PushTypeEnum.java new file mode 100644 index 0000000..d2a30b9 --- /dev/null +++ b/src/main/java/com/ifish/enums/PushTypeEnum.java @@ -0,0 +1,45 @@ +package com.ifish.enums; + +public enum PushTypeEnum { + remove_device("remove_device","解绑通知"), + wendu_warn("wendu_warn","温度预警"), + qu_reply("qu_reply","问题反馈"), + app_update("app_update","IOS更新推送"), + remind_water("remind_water","换水提醒"), + offline_push("offline_push","离线通知"), + send_report("send_report","看护报告"), + shops_push("shops_push","看护通知"), + all_push("all_push","所有用户推送"); + + private PushTypeEnum(String key,String value){ + this.key = key; + this.value = value; + } + + private String key; + private String value; + + //普通方法 + public static String getValue(String key) { + for (PushTypeEnum c : PushTypeEnum.values()) { + if (c.getKey().equals(key)) { + return c.getValue(); + } + } + return null; + } + + public String getKey() { + return key; + } + public void setKey(String key) { + this.key = key; + } + public String getValue() { + return value; + } + public void setValue(String value) { + this.value = value; + } + +} diff --git a/src/main/java/com/ifish/enums/ResultEnum.java b/src/main/java/com/ifish/enums/ResultEnum.java new file mode 100644 index 0000000..b2693a4 --- /dev/null +++ b/src/main/java/com/ifish/enums/ResultEnum.java @@ -0,0 +1,63 @@ +package com.ifish.enums; + +/** + * 请求结果状态码 + * + * @author ggw + * + */ +public enum ResultEnum { + success("100", "成功"), + fail101("101", "失败"), + warn201("201", "手机已经注册过"), + warn202("202", "手机未注册"), + warn203("203", "未知操作"),//获取验证码时 + warn204("204", "密码不正确"), + warn205("205", "图片格式不正确"), + warn206("206", "上传图片太大"), + warn207("207", "设备不存在"), + warn208("208", "激活码已被使用"), + warn209("209", "无效的激活码"), + warn210("210", "摄像头不存在"), + warn211("211", "用户ID不存在"), + warn212("212", "请填写正确的商家手机号"), + warn213("213", "包含敏感词"), + warn214("214", "直播间已存在"), + warn215("215", "金币不足"), + warn216("216", "金币规则不存在"), + warn217("217", "打赏金额错误"), + warn218("218", "没有商家"), + warn219("219", "优惠券已停止兑换"), + warn220("220", "用户能兑换数量达到上限"), + warn221("221", "优惠券已全部兑换完"), + warn222("222", "请上传正确的商品介绍图"), + warn223("223", "请上传正确的商品介绍视频"), + error400("400", "安全校验失败"), + error401("401", "参数校验失败"), + error402("402", "参数不存在"); + + private ResultEnum(String key, String value) { + this.key = key; + this.value = value; + } + + private String key; + private String value; + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + +} diff --git a/src/main/java/com/ifish/enums/RoomStatusEnum.java b/src/main/java/com/ifish/enums/RoomStatusEnum.java new file mode 100644 index 0000000..7daae3a --- /dev/null +++ b/src/main/java/com/ifish/enums/RoomStatusEnum.java @@ -0,0 +1,30 @@ +package com.ifish.enums; + +public enum RoomStatusEnum { + status0("0","未开播"), + status1("1","直播中"), + status2("2","被禁播"); + + private RoomStatusEnum(String key,String value){ + this.key = key; + this.value = value; + } + + private String key; + private String value; + + + public String getKey() { + return key; + } + public void setKey(String key) { + this.key = key; + } + public String getValue() { + return value; + } + public void setValue(String value) { + this.value = value; + } + +} diff --git a/src/main/java/com/ifish/enums/SendTypeEnum.java b/src/main/java/com/ifish/enums/SendTypeEnum.java new file mode 100644 index 0000000..88d8c85 --- /dev/null +++ b/src/main/java/com/ifish/enums/SendTypeEnum.java @@ -0,0 +1,34 @@ +package com.ifish.enums; + +/** + * 获取验证码操作类型 + * @author ggw + * + */ +public enum SendTypeEnum { + register("1","注册操作"), + findpwd("2","找回密码操作"); + + private SendTypeEnum(String key,String value){ + this.key = key; + this.value = value; + } + + private String key; + private String value; + + + public String getKey() { + return key; + } + public void setKey(String key) { + this.key = key; + } + public String getValue() { + return value; + } + public void setValue(String value) { + this.value = value; + } + +} diff --git a/src/main/java/com/ifish/enums/ShopsStatusEnum.java b/src/main/java/com/ifish/enums/ShopsStatusEnum.java new file mode 100644 index 0000000..a206d3a --- /dev/null +++ b/src/main/java/com/ifish/enums/ShopsStatusEnum.java @@ -0,0 +1,31 @@ +package com.ifish.enums; + +public enum ShopsStatusEnum { + status0("0","审核失败"), + status1("1","审核通过"), + status2("2","待审核"), + status3("3","禁用"); + + private ShopsStatusEnum(String key,String value){ + this.key = key; + this.value = value; + } + + private String key; + private String value; + + + public String getKey() { + return key; + } + public void setKey(String key) { + this.key = key; + } + public String getValue() { + return value; + } + public void setValue(String value) { + this.value = value; + } + +} diff --git a/src/main/java/com/ifish/enums/SmsSignEnum.java b/src/main/java/com/ifish/enums/SmsSignEnum.java new file mode 100644 index 0000000..55eb9d7 --- /dev/null +++ b/src/main/java/com/ifish/enums/SmsSignEnum.java @@ -0,0 +1,32 @@ +package com.ifish.enums; + +public enum SmsSignEnum { + sign1("sign1","活动验证"), + sign2("sign2","变更验证"), + sign3("sign3","登录验证"), + sign4("sign4","注册验证"), + sign5("sign5","身份验证"); + + private SmsSignEnum(String key,String value){ + this.key = key; + this.value = value; + } + + private String key; + private String value; + + + public String getKey() { + return key; + } + public void setKey(String key) { + this.key = key; + } + public String getValue() { + return value; + } + public void setValue(String value) { + this.value = value; + } + +} diff --git a/src/main/java/com/ifish/enums/SmsTemplateEnum.java b/src/main/java/com/ifish/enums/SmsTemplateEnum.java new file mode 100644 index 0000000..9038d30 --- /dev/null +++ b/src/main/java/com/ifish/enums/SmsTemplateEnum.java @@ -0,0 +1,34 @@ +package com.ifish.enums; + +public enum SmsTemplateEnum { + SMS_720021("SMS_720021","身份验证验证码"), + SMS_720020("SMS_720020","登陆确认验证码"), + SMS_720019("SMS_720019","登陆异常验证码"), + SMS_720018("SMS_720018","用户注册验证码"), + SMS_720017("SMS_720017","活动确认验证码"), + SMS_720016("SMS_720016","修改密码验证码"), + SMS_720015("SMS_720015","信息变更验证码"); + + private SmsTemplateEnum(String key,String value){ + this.key = key; + this.value = value; + } + + private String key; + private String value; + + + public String getKey() { + return key; + } + public void setKey(String key) { + this.key = key; + } + public String getValue() { + return value; + } + public void setValue(String value) { + this.value = value; + } + +} diff --git a/src/main/java/com/ifish/enums/SubDirectoryEnum.java b/src/main/java/com/ifish/enums/SubDirectoryEnum.java new file mode 100644 index 0000000..c8f93a8 --- /dev/null +++ b/src/main/java/com/ifish/enums/SubDirectoryEnum.java @@ -0,0 +1,40 @@ +package com.ifish.enums; + + +/** + * 子目录 + * @author Administrator + * + */ +public enum SubDirectoryEnum { + headImage("app/","头像"), + banner("banner/","banner图"), + look("look/","看护报告"), + ueditorHtml("ueditorHtml/","后台生成的网页"), + adInfo("Img/adInfo/","广告图片"), + information("Img/information/","资讯图片"), + ifishGoods("Img/goods/","商品图片"), + ifishCommodity("Img/commodity/","商家商品介绍图"); + + private SubDirectoryEnum(String key,String value){ + this.key = key; + this.value = value; + } + + private String key; + private String value; + + public String getKey() { + return key; + } + public void setKey(String key) { + this.key = key; + } + public String getValue() { + return value; + } + public void setValue(String value) { + this.value = value; + } + +} diff --git a/src/main/java/com/ifish/enums/UeditorTypeEnum.java b/src/main/java/com/ifish/enums/UeditorTypeEnum.java new file mode 100644 index 0000000..1db448a --- /dev/null +++ b/src/main/java/com/ifish/enums/UeditorTypeEnum.java @@ -0,0 +1,39 @@ +package com.ifish.enums; + +import com.alibaba.fastjson.JSONObject; + +public enum UeditorTypeEnum { + yespinglun("1","可评论"), + nopinglun("0","不可评论"); + + private UeditorTypeEnum(String key,String value){ + this.key = key; + this.value = value; + } + + private String key; + private String value; + + //普通方法 + public static JSONObject getJson() { + JSONObject json = new JSONObject(); + for (UeditorTypeEnum ueditorTypeEnumEnum : UeditorTypeEnum.values()) { + json.put(ueditorTypeEnumEnum.getKey(), ueditorTypeEnumEnum.getValue()); + } + return json; + } + + public String getKey() { + return key; + } + public void setKey(String key) { + this.key = key; + } + public String getValue() { + return value; + } + public void setValue(String value) { + this.value = value; + } + +} diff --git a/src/main/java/com/ifish/enums/UserTypeEnum.java b/src/main/java/com/ifish/enums/UserTypeEnum.java new file mode 100644 index 0000000..8b6e318 --- /dev/null +++ b/src/main/java/com/ifish/enums/UserTypeEnum.java @@ -0,0 +1,29 @@ +package com.ifish.enums; + +public enum UserTypeEnum { + userType0("0","普通用户"), + userType1("1","商家用户"); + + private UserTypeEnum(String key,String value){ + this.key = key; + this.value = value; + } + + private String key; + private String value; + + + public String getKey() { + return key; + } + public void setKey(String key) { + this.key = key; + } + public String getValue() { + return value; + } + public void setValue(String value) { + this.value = value; + } + +} diff --git a/src/main/java/com/ifish/exception/ExceptionHandle.java b/src/main/java/com/ifish/exception/ExceptionHandle.java new file mode 100644 index 0000000..ee2cc47 --- /dev/null +++ b/src/main/java/com/ifish/exception/ExceptionHandle.java @@ -0,0 +1,37 @@ +package com.ifish.exception; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +import com.ifish.dto.JsonResult; +import com.ifish.enums.ResultEnum; +import com.ifish.util.ResultUtil; + +/** + * 异常处理 + * @author Administrator + */ +@ControllerAdvice +public class ExceptionHandle{ + + private static Logger log = LoggerFactory.getLogger(ExceptionHandle.class); + + @ExceptionHandler(value=Exception.class) + @ResponseBody + public JsonResult Handle(Exception e) { + log.error("Exception:"+e.toString()); + e.printStackTrace(); + //自定义异常 + if(e instanceof IfishException){ + IfishException ifishException = (IfishException) e; + return ResultUtil.error(ifishException.getResult()); + } + else{ + return ResultUtil.error(ResultEnum.fail101.getKey()); + } + } + +} diff --git a/src/main/java/com/ifish/exception/IfishException.java b/src/main/java/com/ifish/exception/IfishException.java new file mode 100644 index 0000000..0e7847b --- /dev/null +++ b/src/main/java/com/ifish/exception/IfishException.java @@ -0,0 +1,26 @@ +package com.ifish.exception; + +import com.ifish.enums.ResultEnum; + +/** + * 自定义异常 + * + * @author Administrator + * + */ +public class IfishException extends RuntimeException { + + private static final long serialVersionUID = 4182058914725642218L; + + private String result; + + public IfishException(ResultEnum resultEnum) { + super(resultEnum.getValue()); + this.result = resultEnum.getKey(); + } + + public String getResult() { + return result; + } + +} diff --git a/src/main/java/com/ifish/gwell/GwellApi.java b/src/main/java/com/ifish/gwell/GwellApi.java new file mode 100644 index 0000000..740c151 --- /dev/null +++ b/src/main/java/com/ifish/gwell/GwellApi.java @@ -0,0 +1,224 @@ +package com.ifish.gwell; + +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.HashMap; +import java.util.Map; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.ifish.enums.GwellEnum; +import com.ifish.mail.Mail; +import com.ifish.netease.CheckSumBuilder; + +public class GwellApi { + + private static Logger log = LoggerFactory.getLogger(GwellApi.class); + + /** + * 注册 + * @param phoneNumber + * @return + */ + public static Map Register(String phoneNumber){ + String email = getEmail(phoneNumber); + String pwd = getPwd(phoneNumber); + Map map = new HashMap(); + URL url = null; + HttpURLConnection httpurlconnection = null; + try{ + if(url==null){ + url = new URL("http://api1.cloudlinks.cn/Users/RegisterCheck.ashx"); + } + if(httpurlconnection==null){ + //以post方式请求 + httpurlconnection = (HttpURLConnection)url.openConnection(); + httpurlconnection.setReadTimeout(30000); + httpurlconnection.setConnectTimeout(30000); + //是否输入参数 + httpurlconnection.setDoOutput(true); + //提交模式 + httpurlconnection.setRequestMethod("POST"); + } + StringBuffer params = new StringBuffer(); + params.append("Email="+email+"&"); + params.append("Pwd="+pwd+"&"); + params.append("RePwd="+pwd+"&"); + params.append("VersionFlag=1&"); + params.append("CountryCode=&"); + params.append("IgnoreSafeWarning=1"); + OutputStream out = httpurlconnection.getOutputStream(); + out.write(params.toString().getBytes()); + out.flush(); + out.close(); + //获取响应代码 + int code = httpurlconnection.getResponseCode(); + if(code==200){ + //获取页面内容 + InputStream in= httpurlconnection .getInputStream(); + BufferedReader breader = new BufferedReader(new InputStreamReader(in,"utf-8")); + String jsonStr=""; + String str = breader.readLine(); + while(str != null){ + jsonStr+=str; + str = breader.readLine(); + } + breader.close(); + in.close(); + //System.out.println(jsonStr); + JSONObject json = JSON.parseObject(jsonStr); + String error_code = json.getString("error_code"); + //注册成功 + if(error_code.equals("0")){ + String P2PVerifyCode1 = json.getString("P2PVerifyCode1"); + String P2PVerifyCode2 = json.getString("P2PVerifyCode2"); + String UserID = json.getString("UserID"); + map.put("result", GwellEnum.success.getKey()); + map.put("P2PVerifyCode1", P2PVerifyCode1); + map.put("P2PVerifyCode2", P2PVerifyCode2); + map.put("UserID", UserID); + return map; + } + //邮箱已被注册 + else if(error_code.equals("7")){ + String error = json.getString("error"); + map.put("result", GwellEnum.repeat.getKey()); + map.put("error", error); + } + //失败 + else if(error_code.equals("1")){ + //发送邮件 + Mail.send(phoneNumber+"注册技威失败了", "注册技威失败!错误信息:"+jsonStr); + String error = json.getString("error"); + map.put("result", GwellEnum.fail.getKey()); + map.put("error", error); + return map; + } + } + } + catch(Exception e){ + e.printStackTrace(); + log.error(e.toString()); + } + finally{ + if(httpurlconnection!=null){ + httpurlconnection.disconnect(); + } + } + return map; + } + + + /** + * 登陆 + * @param phoneNumber + * @return + */ + public static Map Login(String phoneNumber){ + String email = getEmail(phoneNumber); + String pwd = getPwd(phoneNumber); + Map map = new HashMap(); + URL url = null; + HttpURLConnection httpurlconnection = null; + try{ + if(url==null){ + url = new URL("http://api1.cloudlinks.cn/Users/LoginCheck.ashx"); + } + if(httpurlconnection==null){ + //以post方式请求 + httpurlconnection = (HttpURLConnection)url.openConnection(); + httpurlconnection.setReadTimeout(30000); + httpurlconnection.setConnectTimeout(30000); + //是否输入参数 + httpurlconnection.setDoOutput(true); + //提交模式 + httpurlconnection.setRequestMethod("POST"); + } + StringBuffer params = new StringBuffer(); + params.append("User="+email+"&"); + params.append("Pwd="+pwd+"&"); + params.append("VersionFlag=1&"); + params.append("AppVersion=3014666&"); + params.append("AppOS=3"); + OutputStream out = httpurlconnection.getOutputStream(); + out.write(params.toString().getBytes()); + out.flush(); + out.close(); + //获取响应代码 + int code = httpurlconnection.getResponseCode(); + if(code==200){ + //获取页面内容 + InputStream in= httpurlconnection .getInputStream(); + BufferedReader breader = new BufferedReader(new InputStreamReader(in,"utf-8")); + String jsonStr=""; + String str = breader.readLine(); + while(str != null){ + jsonStr+=str; + str = breader.readLine(); + } + breader.close(); + in.close(); + //System.out.println(jsonStr); + JSONObject json = JSON.parseObject(jsonStr); + String error_code = json.getString("error_code"); + if(error_code.equals("0")){ + String P2PVerifyCode1 = json.getString("P2PVerifyCode1"); + String P2PVerifyCode2 = json.getString("P2PVerifyCode2"); + String UserID = json.getString("UserID"); + map.put("result", GwellEnum.success.getKey()); + map.put("P2PVerifyCode1", P2PVerifyCode1); + map.put("P2PVerifyCode2", P2PVerifyCode2); + map.put("UserID", UserID); + return map; + } + else{ + String error = json.getString("error"); + map.put("result", GwellEnum.fail.getKey()); + map.put("error", error); + return map; + } + } + } + catch(Exception e){ + log.error(e.toString()); + } + finally{ + if(httpurlconnection!=null){ + httpurlconnection.disconnect(); + } + } + return map; + } + + /** + * 获取用户名 + * @param phoneNumber + * @return + */ + public static String getEmail(String phoneNumber){ + String email = "ifish7"+phoneNumber+"@ifish7.com"; + return email; + } + /** + * 获取密码 + * @param phoneNumber + * @return + */ + public static String getPwd(String phoneNumber){ + String pwd = CheckSumBuilder.getMD5("ifish"+phoneNumber); + return pwd; + } + + + public static void main(String[] args) { + Register("15216102193"); + } + +} diff --git a/src/main/java/com/ifish/helper/CameraUserHelper.java b/src/main/java/com/ifish/helper/CameraUserHelper.java new file mode 100644 index 0000000..c94b0fe --- /dev/null +++ b/src/main/java/com/ifish/helper/CameraUserHelper.java @@ -0,0 +1,79 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.helper; + +import com.ifish.entity.Camera; +import com.ifish.entity.CameraUser; +import com.ifish.mapper.Tbl_Camera_Mapper; +import com.ifish.mapper.Tbl_Camera_User_Mapper; +import com.ifish.util.RedisKey; +import com.ifish.util.StringUtil; +import java.util.List; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * + * @author Administrator + */ +@Component +public class CameraUserHelper implements CameraUserHelperI { + + @Autowired + private Tbl_Camera_User_Mapper tbl_Camera_User_Mapper; + + @Autowired + private Tbl_Camera_Mapper tbl_Camera_Mapper; + + @Autowired + private RedisHelperI redisHelperI; + + /** + * 根据用户Id获取用户绑定的摄像头 + * + * @param userId + * @return + */ + public List getCameraUserListByUserId(Integer userId) throws Exception { + + List cameraUserList = null; + String key = RedisKey.CameraUser_key + userId; + String redisString = redisHelperI.getRedis(key); + if (StringUtils.isNotBlank(redisString)) { + cameraUserList = (List) StringUtil.JsonToList(redisString, CameraUser.class); + } else { + cameraUserList = tbl_Camera_User_Mapper.getCameraUserListByUserId(userId); + if (cameraUserList != null && cameraUserList.size() > 0) { + redisHelperI.setRedis(key, StringUtil.ObjectToJson(cameraUserList)); + } + } + return cameraUserList; + } + + /** + * 根据摄像头Id获取摄像头信息 + * + * @param cameraId + * @return + * @throws Exception + */ + public Camera getCameraById(String cameraId) throws Exception { + Camera camera = null; + String key = RedisKey.CameraUser_key + cameraId; + String redisString = redisHelperI.getRedis(key); + if (StringUtils.isNotBlank(redisString)) { + camera = (Camera) StringUtil.JsonToBean(redisString, Camera.class); + } else { + camera = tbl_Camera_Mapper.getCameraById(cameraId); + if (camera != null && StringUtils.isNotBlank(camera.getCameraId())) { + redisHelperI.setRedis(key, StringUtil.ObjectToJson(camera)); + } + } + return camera; + } + +} diff --git a/src/main/java/com/ifish/helper/CameraUserHelperI.java b/src/main/java/com/ifish/helper/CameraUserHelperI.java new file mode 100644 index 0000000..f99429e --- /dev/null +++ b/src/main/java/com/ifish/helper/CameraUserHelperI.java @@ -0,0 +1,35 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.helper; + +import com.ifish.entity.Camera; +import com.ifish.entity.CameraUser; +import java.util.List; + +/** + * + * @author Administrator + */ +public interface CameraUserHelperI { + + /** + * 根据用户Id获取用户绑定的摄像头 + * + * @param userId + * @return + */ + List getCameraUserListByUserId(Integer userId) throws Exception; + + /** + * 根据摄像头Id获取摄像头信息 + * + * @param cameraId + * @return + * @throws Exception + */ + Camera getCameraById(String cameraId) throws Exception; + +} diff --git a/src/main/java/com/ifish/helper/CommodityInfoHelper.java b/src/main/java/com/ifish/helper/CommodityInfoHelper.java new file mode 100644 index 0000000..7b00cd5 --- /dev/null +++ b/src/main/java/com/ifish/helper/CommodityInfoHelper.java @@ -0,0 +1,161 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.helper; + +import com.ifish.bean.CommodityInfoBean; +import com.ifish.dto.JsonResult; +import com.ifish.dto.PageingDto; +import com.ifish.enums.ResultEnum; +import com.ifish.exception.IfishException; +import com.ifish.mapper.Tbl_Commodity_Info_Mapper; +import com.ifish.util.IfishFilePath; +import java.io.File; +import java.util.List; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; +import com.ifish.util.IfishUtil; + +/** + * 商品管理所有接口方法 + * + * @author Administrator + */ +@Component +public class CommodityInfoHelper implements CommodityInfoHelperI { + + @Autowired + private Tbl_Commodity_Info_Mapper tbl_Commodity_Info_Mapper; + + @Autowired + private FastDFSClientI fastDFSClientI; + + @Override + public JsonResult createCommodityInfo(CommodityInfoBean commodityInfoBean, MultipartFile img, MultipartFile vedio) { + try { + //保存图片 + if (img != null) { + if (!img.getOriginalFilename().equals("")) { + String filename = String.valueOf(System.currentTimeMillis()) + ".png"; + File picFile = new File(IfishFilePath.path_commodity + "/" + commodityInfoBean.getUserId(), filename); + //不存在则创建 + if (!picFile.exists()) { + picFile.mkdirs(); + } + //保存 + img.transferTo(picFile); + commodityInfoBean.setCommodityImg(filename); + } else { + return new JsonResult(ResultEnum.warn222.getKey(), ""); + } + } else { + return new JsonResult(ResultEnum.warn223.getKey(), ""); + } + //保存视频 + if (vedio != null) { + String url = fastDFSClientI.uploadFileToFastDFS(vedio); + if (StringUtils.isNotBlank(url)) { + commodityInfoBean.setCommodityVideo(url); + } else { + return new JsonResult(ResultEnum.warn223.getKey(), ""); + } + } else { + return new JsonResult(ResultEnum.warn223.getKey(), ""); + } + + int i = tbl_Commodity_Info_Mapper.createCommodityInfo(commodityInfoBean); + if (i > 0) { + int id = commodityInfoBean.getCommodityId(); + commodityInfoBean = tbl_Commodity_Info_Mapper.getCommodityInfoByID(id); + return new JsonResult(ResultEnum.success.getKey(), commodityInfoBean); + } else { + return new JsonResult(ResultEnum.fail101.getKey(), ""); + } + } catch (Exception e) { + return new JsonResult(ResultEnum.error401.getKey(), ""); + } + } + + @Override + public JsonResult updateCommodityInfo(CommodityInfoBean commodityInfoBean) { + if (commodityInfoBean.getCommodityId() <= 0) { + //ID不能为空 + return new JsonResult(ResultEnum.error401.getKey(), ""); + } + try { + String str = commodityInfoBean.getCommodityName(); + if (StringUtils.isNotBlank(str)) { + commodityInfoBean.setCommodityName(str.substring(str.indexOf(',') + 1, str.length())); + } + int i = tbl_Commodity_Info_Mapper.updateCommodityInfo(commodityInfoBean); + if (i > 0) { + int id = commodityInfoBean.getCommodityId(); + commodityInfoBean = tbl_Commodity_Info_Mapper.getCommodityInfoByID(id); + return new JsonResult(ResultEnum.success.getKey(), commodityInfoBean); + } else { + //修改失败 + return new JsonResult(ResultEnum.fail101.getKey(), ""); + } + } catch (Exception e) { + //修改出错 + return new JsonResult(ResultEnum.error401.getKey(), ""); + } + } + + @Override + public JsonResult getCommodityInfo(Integer commodityId) { + if (commodityId <= 0) { + return new JsonResult(ResultEnum.error401.getKey(), ""); + } + try { + CommodityInfoBean commodityInfoBean = tbl_Commodity_Info_Mapper.getCommodityInfoByID(commodityId); + if (commodityInfoBean != null && commodityInfoBean.getCommodityId() >= 0) { + return new JsonResult(ResultEnum.success.getKey(), commodityInfoBean); + } else { + return new JsonResult(ResultEnum.fail101.getKey(), ""); + } + } catch (Exception e) { + return new JsonResult(ResultEnum.error401.getKey(), ""); + } + } + + @Override + public PageingDto getCommodityInfoByPage(Integer pageSize, Integer firstResult, Integer shopId, Integer commodityState, String orderBy) { + try { + if (StringUtils.isBlank(orderBy)) { + orderBy = "create_time"; + } + PageingDto page = new PageingDto<>(); + List list = tbl_Commodity_Info_Mapper.getCommodityInfoByPage(shopId, firstResult, pageSize, commodityState, orderBy); + int count = tbl_Commodity_Info_Mapper.getCommodityInfoCountByPage(shopId, commodityState); + page.setTotal(count); + page.setFirstResult(firstResult); + page.setData(list); + page.setResult("100"); + return page; + } catch (Exception e) { + throw new IfishException(ResultEnum.fail101); + } + } + + @Override + public JsonResult deleteCommodityInfo(Integer commodityId) { + if (commodityId <= 0) { + return new JsonResult(ResultEnum.error401.getKey(), ""); + } + try { + int i = tbl_Commodity_Info_Mapper.deleteCommodityInfoById(commodityId); + if (i > 0) { + return new JsonResult(ResultEnum.success.getKey(), ""); + } else { + return new JsonResult(ResultEnum.fail101.getKey(), ""); + } + } catch (Exception e) { + return new JsonResult(ResultEnum.error401.getKey(), ""); + } + } +} diff --git a/src/main/java/com/ifish/helper/CommodityInfoHelperI.java b/src/main/java/com/ifish/helper/CommodityInfoHelperI.java new file mode 100644 index 0000000..d1fc296 --- /dev/null +++ b/src/main/java/com/ifish/helper/CommodityInfoHelperI.java @@ -0,0 +1,62 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.helper; + +import com.ifish.bean.CommodityInfoBean; +import com.ifish.dto.JsonResult; +import com.ifish.dto.PageingDto; +import org.springframework.web.multipart.MultipartFile; + +/** + * 商品管理所有接口方法 + * + * @author Administrator + */ +public interface CommodityInfoHelperI { + + /** + * 创建商品 + * + * @param commodityInfoBean + * @return + */ + public JsonResult createCommodityInfo(CommodityInfoBean commodityInfoBean, MultipartFile img, MultipartFile vedio); + + /** + * 修改商品 + * + * @param commodityInfoBean + * @return + */ + public JsonResult updateCommodityInfo(CommodityInfoBean commodityInfoBean); + + /** + * 根据商品ID查询商品详情 + * + * @param commodityId + * @return + */ + public JsonResult getCommodityInfo(Integer commodityId); + + /** + * 根据店铺ID分页获取商品列表 + * + * @param pageSize + * @param firstResult + * @param shopId + * @param commodityState + * @return + */ + public PageingDto getCommodityInfoByPage(Integer pageSize, Integer firstResult, Integer shopId, Integer commodityState, String orderBy); + + /** + * 删除商品 + * + * @param commodityId + * @return + */ + public JsonResult deleteCommodityInfo(Integer commodityId); +} diff --git a/src/main/java/com/ifish/helper/DeviceUserHelper.java b/src/main/java/com/ifish/helper/DeviceUserHelper.java new file mode 100644 index 0000000..0b0064f --- /dev/null +++ b/src/main/java/com/ifish/helper/DeviceUserHelper.java @@ -0,0 +1,92 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.helper; + +import com.ifish.bean.DeviceUserBean; +import com.ifish.entity.Device; +import com.ifish.entity.DeviceCamera; +import com.ifish.mapper.Tbl_Device_Mapper; +import com.ifish.mapper.Tbl_Device_User_Mapper; +import com.ifish.util.RedisKey; +import com.ifish.util.StringUtil; +import java.util.List; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * + * @author Administrator + */ +@Component +public class DeviceUserHelper implements DeviceUserHelperI { + + /** + * 所有tbl_device_user表的操作方法接口 + */ + @Autowired + private Tbl_Device_User_Mapper tbl_Device_User_Mapper; + + /** + * redis缓存服务器方法接口 + */ + @Autowired + private RedisHelperI redisHelperI; + + /** + * 所有tbl_device表的操作方法接口 + */ + @Autowired + private Tbl_Device_Mapper tbl_Device_Mapper; + + @Override + public List getDeviceUsersByUserId(Integer userId) throws Exception { + List deviceUserList = null; + String key = RedisKey.DeviceUser_Key + userId; + String redisString = redisHelperI.getRedis(key); + if (StringUtils.isNotBlank(redisString)) { + deviceUserList = (List) StringUtil.JsonToList(redisString, DeviceUserBean.class); + } else { + deviceUserList = tbl_Device_User_Mapper.getDeviceUsersByUserId(userId); + if (deviceUserList != null && deviceUserList.size() > 0) { + redisHelperI.setRedis(key, StringUtil.ObjectToJson(deviceUserList)); + } + } + return deviceUserList; + } + + @Override + public List getDeviceCameraListByDeviceId(Integer deviceId) throws Exception { + List deviceCameraList = null; + String key = RedisKey.DeviceCamera_key + deviceId; + String redisString = redisHelperI.getRedis(key); + if (StringUtils.isNotBlank(redisString)) { + deviceCameraList = (List) StringUtil.JsonToList(redisString, DeviceCamera.class); + } else { + deviceCameraList = tbl_Device_User_Mapper.getDeviceCameraListByDeviceId(deviceId); + if (deviceCameraList != null && deviceCameraList.size() > 0) { + redisHelperI.setRedis(key, StringUtil.ObjectToJson(deviceCameraList)); + } + } + return deviceCameraList; + } + + @Override + public Device getDeviceById(Integer deviceId) throws Exception { + Device device = null; + String key = RedisKey.Device_key + deviceId; + String redisString = redisHelperI.getRedis(key); + if (StringUtils.isNotBlank(redisString)) { + device = (Device) StringUtil.JsonToBean(redisString, Device.class); + } else { + device = tbl_Device_Mapper.getDeviceById(deviceId); + if (device != null && device.getDeviceId() > 0) { + redisHelperI.setRedis(key, StringUtil.ObjectToJson(device)); + } + } + return device; + } +} diff --git a/src/main/java/com/ifish/helper/DeviceUserHelperI.java b/src/main/java/com/ifish/helper/DeviceUserHelperI.java new file mode 100644 index 0000000..deb7634 --- /dev/null +++ b/src/main/java/com/ifish/helper/DeviceUserHelperI.java @@ -0,0 +1,44 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.helper; + +import com.ifish.bean.DeviceUserBean; +import com.ifish.entity.Device; +import com.ifish.entity.DeviceCamera; +import java.util.List; + +/** + * + * @author Administrator + */ +public interface DeviceUserHelperI { + + /** + * 根据用户Id获取绑定设备集合 + * + * @param userId + * @return + */ + List getDeviceUsersByUserId(Integer userId) throws Exception; + + /** + * 根据设备Id获取绑定的摄像头信息 + * + * @param deviceId + * @return + * @throws Exception + */ + List getDeviceCameraListByDeviceId(Integer deviceId) throws Exception; + + /** + * 根据设备Id获取设备详情 + * + * @param deviceId + * @return + * @throws Exception + */ + Device getDeviceById(Integer deviceId) throws Exception; +} diff --git a/src/main/java/com/ifish/helper/FastDFSClient.java b/src/main/java/com/ifish/helper/FastDFSClient.java new file mode 100644 index 0000000..7c29b61 --- /dev/null +++ b/src/main/java/com/ifish/helper/FastDFSClient.java @@ -0,0 +1,169 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.helper; + +import com.ifish.dto.JsonResult; +import com.ifish.enums.ResultEnum; +import com.ifish.util.IfishFilePath; +import com.ifish.validator.ValidateUtil; +import org.codehaus.plexus.util.StringUtils; +import org.csource.fastdfs.ClientGlobal; +import org.csource.fastdfs.StorageClient1; +import org.csource.fastdfs.StorageServer; +import org.csource.fastdfs.TrackerClient; +import org.csource.fastdfs.TrackerServer; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +/** + * FastDFS分布式文件管理系统接口方法 + * + * @author Administrator + */ +@Component +public class FastDFSClient implements FastDFSClientI { + + private TrackerClient trackerClient = null; + private TrackerServer trackerServer = null; + private StorageServer storageServer = null; + //使用StorageClient1进行上传 + private StorageClient1 storageClient1 = null; + + public FastDFSClient() throws Exception { + //获取classpath路径下配置文件"fdfs_client.conf"的路径 + //conf直接写相对于classpath的位置,不需要写classpath: + String conf = ""; + if (IfishFilePath.link_img_head.contains("ifish7")) { + conf = "fdfs_client_ifish7.conf"; + } else { + conf = "fdfs_client_zhangxinyanv5.conf"; + } + + String configPath = this.getClass().getClassLoader().getResource(conf).getFile(); + System.out.println(configPath); + ClientGlobal.init(configPath); + + trackerClient = new TrackerClient(); + trackerServer = trackerClient.getConnection(); + storageServer = trackerClient.getStoreStorage(trackerServer); + storageClient1 = new StorageClient1(trackerServer, storageServer); + } + + /** + * 上传一个字节型文件 + * + * @param file_buff 字节数组 + * @param file_ext_name 文件后缀 + * @return + * @throws Exception + */ + @Override + public String uploadFile(byte[] file_buff, String file_ext_name) throws Exception { + + String result = ""; + + try { + result = storageClient1.upload_file1(file_buff, file_ext_name, null); + } catch (Exception e) { + try { + result = storageClient1.upload_file1(file_buff, file_ext_name, null); + } catch (Exception a) { + return ""; + } + } + + return result; + } + + /** + * 上传一个本地文件 + * + * @param local_filename 本地文件名(路径+文件名+后缀) + * @param file_ext_name 文件后缀 + * @return + * @throws Exception + */ + @Override + public String uploadFile(String local_filename, String file_ext_name) throws Exception { + + String result = storageClient1.upload_file1(local_filename, file_ext_name, null); + + return result; + } + + /** + * 上传一个文件 + * + * @param group_name 指定位置 + * @param local_filename 本地文件名(路径+文件名+后缀) + * @param file_ext_name 文件后缀 + * @return + * @throws Exception + */ + @Override + public String uploadFile(String group_name, String local_filename, String file_ext_name) throws Exception { + + String result = storageClient1.upload_file1(group_name, local_filename, file_ext_name, null); + + return result; + } + + @Override + public JsonResult uploadFile(MultipartFile file) { + try { + String type = getFileType(file); + if (StringUtils.isBlank(type)) { + return null; + } + byte[] bt = file.getBytes(); + String url = uploadFile(bt, type); + JsonResult js = new JsonResult(ResultEnum.success.getKey(), "http://139.196.24.156:8017/" + url); + return js; + } catch (Exception e) { + JsonResult js = new JsonResult(ResultEnum.fail101.getKey()); + return js; + } + } + + public String getFileType(MultipartFile file) { + String[] allowTypes = new String[]{".mp4", ".png", ".jpg", ".bmp"}; + String filename = file.getOriginalFilename(); + if (StringUtils.isNotBlank(filename)) { + for (String allowType : allowTypes) { + if (filename.contains(allowType)) { + return allowType.replace(".", ""); + } + } + } + return ""; + } + + @Override + public String uploadFileToFastDFS(MultipartFile file) { + try { + String type = getFileType(file); + if (StringUtils.isBlank(type)) { + return null; + } + byte[] bt = file.getBytes(); + String url = uploadFile(bt, type); + if (url.contains("group1/M00/")) { + url = url.replace("group1/M00/", ""); + } else { + return ""; + } + //本地返回测试环境fastfds,线上返回正式服务器部署的fastfds + if (ValidateUtil.IsWinOrUnix()) { + return IfishFilePath.fastDFS_url_app + url; + } else { + return IfishFilePath.link_img_head + url; + } + + } catch (Exception e) { + return ""; + } + } +} diff --git a/src/main/java/com/ifish/helper/FastDFSClientI.java b/src/main/java/com/ifish/helper/FastDFSClientI.java new file mode 100644 index 0000000..9276908 --- /dev/null +++ b/src/main/java/com/ifish/helper/FastDFSClientI.java @@ -0,0 +1,64 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.helper; + +import com.ifish.dto.JsonResult; +import org.springframework.web.multipart.MultipartFile; + +/** + * FastDFS分布式文件管理系统接口方法 + * + * @author Administrator + */ +public interface FastDFSClientI { + + /** + * 上传一个字节型文件 + * + * @param file_buff 字节数组 + * @param file_ext_name 文件后缀 + * @return + * @throws Exception + */ + String uploadFile(byte[] file_buff, String file_ext_name) throws Exception; + + /** + * 上传一个本地文件 + * + * @param local_filename 本地文件名(路径+文件名+后缀) + * @param file_ext_name 文件后缀 + * @return + * @throws Exception + */ + String uploadFile(String local_filename, String file_ext_name) throws Exception; + + /** + * 上传一个文件 + * + * @param group_name 指定位置 + * @param local_filename 本地文件名(路径+文件名+后缀) + * @param file_ext_name 文件后缀 + * @return + * @throws Exception + */ + String uploadFile(String group_name, String local_filename, String file_ext_name) throws Exception; + + /** + * 上传一个MultipartFile类型文件,返回成功后结果,适用于保存不完整路径方法 + * + * @param file + * @return + */ + JsonResult uploadFile(MultipartFile file); + + /** + * 上传一个MultipartFile类型文件,返回成功后文件路径,适用于保存完整路径方法 + * + * @param file + * @return + */ + String uploadFileToFastDFS(MultipartFile file); +} diff --git a/src/main/java/com/ifish/helper/HardWareVenderHelper.java b/src/main/java/com/ifish/helper/HardWareVenderHelper.java new file mode 100644 index 0000000..09035d1 --- /dev/null +++ b/src/main/java/com/ifish/helper/HardWareVenderHelper.java @@ -0,0 +1,78 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.helper; + +import com.ifish.bean.VenderListBean; +import com.ifish.entity.HardwareType; +import com.ifish.entity.VenderList; +import com.ifish.mapper.Tbl_Hardware_Type_Mapper; +import com.ifish.mapper.Tbl_Vender_list_Mapper; +import com.ifish.util.RedisKey; +import com.ifish.util.StringUtil; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * + * @author Administrator + */ +@Component +public class HardWareVenderHelper implements HardWareVenderHelperI { + + /** + * 所有tbl_Hardware_Type表的操作方法接口 + */ + @Autowired + private Tbl_Hardware_Type_Mapper tbl_Hardware_Type_Mapper; + + /** + * redis缓存服务器方法接口 + */ + @Autowired + private RedisHelperI redisHelperI; + + @Autowired + private Tbl_Vender_list_Mapper tbl_Vender_list_Mapper; + + @Override + public HardwareType getHardwareTypeByTypeCode(String code) throws Exception { + HardwareType hardwareType = null; + String key = RedisKey.HardWareType_key + code; + String redisString = redisHelperI.getRedis(key); + if (StringUtils.isNotBlank(redisString)) { + hardwareType = (HardwareType) StringUtil.JsonToBean(redisString, HardwareType.class); + } else { + hardwareType = tbl_Hardware_Type_Mapper.getHardwareTypeByTypeCode(code); + if (hardwareType != null && StringUtils.isNotBlank(hardwareType.getHardwareType())) { + redisHelperI.setRedis(key, StringUtil.ObjectToJson(hardwareType)); + } + } + return hardwareType; + } + + @Override + public VenderList getVenderListByBrandCode(String code) throws Exception { + VenderList venderList = new VenderList(); + VenderListBean venderListBean = null; + String key = RedisKey.VenderList_key + code; + String redisString = redisHelperI.getRedis(key); + if (StringUtils.isNotBlank(redisString)) { + venderList = (VenderList) StringUtil.JsonToBean(redisString, VenderList.class); + } else { + venderListBean = tbl_Vender_list_Mapper.getVenderListByBrandCode(code); + if (venderListBean != null && StringUtils.isNotBlank(venderListBean.getBrandCode())) { + venderList.setBrandCode(venderListBean.getBrandCode()); + venderList.setBrandIntroduce(venderListBean.getBrandIntroduce()); + venderList.setBrandName(venderListBean.getBrandName()); + venderList.setLogo(venderListBean.getBrandLogo()); + redisHelperI.setRedis(key, StringUtil.ObjectToJson(venderList)); + } + } + return venderList; + } + +} diff --git a/src/main/java/com/ifish/helper/HardWareVenderHelperI.java b/src/main/java/com/ifish/helper/HardWareVenderHelperI.java new file mode 100644 index 0000000..6850d25 --- /dev/null +++ b/src/main/java/com/ifish/helper/HardWareVenderHelperI.java @@ -0,0 +1,34 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.helper; + +import com.ifish.entity.HardwareType; +import com.ifish.entity.VenderList; + +/** + * + * @author Administrator + */ +public interface HardWareVenderHelperI { + + /** + * 根据设备型号获取设备类型参数 + * + * @param code + * @return + */ + HardwareType getHardwareTypeByTypeCode(String code) throws Exception; + + /** + * 根据厂家code获取厂家信息 + * + * @param code + * @return + * @throws Exception + */ + VenderList getVenderListByBrandCode(String code) throws Exception; + +} diff --git a/src/main/java/com/ifish/helper/RedisHelper.java b/src/main/java/com/ifish/helper/RedisHelper.java new file mode 100644 index 0000000..8efec46 --- /dev/null +++ b/src/main/java/com/ifish/helper/RedisHelper.java @@ -0,0 +1,140 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.helper; + +import com.ifish.util.IfishUtil; +import java.util.Iterator; +import java.util.Set; +import java.util.concurrent.TimeUnit; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Component; + +/** + * redis缓存服务器所有接口方法 + * + * @author Administrator + */ +@Component +public class RedisHelper implements RedisHelperI { + + @Autowired + private StringRedisTemplate redis; + + /* + *获取缓存值 + */ + @Override + public String getRedis(String key) { + return redis.opsForValue().get(key.toLowerCase()); + } + + /* + *设置缓存(默认时间为1天) + */ + @Override + public void setRedis(String key, String value) { + if (value == null) { + return; + } + redis.opsForValue().set(key.toLowerCase(), value, IfishUtil.CacheTime_DAYS, TimeUnit.DAYS); + } + + /*设置自定义时效缓存 + *key 缓存名称,value缓存值(string),time(保存时间),unit(时间类型) + */ + @Override + public void setRedis(String key, String value, int time, TimeUnit unit) { + if (value == null) { + return; + } + redis.opsForValue().set(key.toLowerCase(), value, time, unit); + } + + /* + *设置按天时效缓存 + */ + @Override + public void setRedisToDAYS(String key, String value) { + if (value == null) { + return; + } + redis.opsForValue().set(key.toLowerCase(), value, IfishUtil.CacheTime_DAYS, TimeUnit.DAYS); + } + + /* + *设置按时时效缓存 + */ + @Override + public void setRedisToHOURS(String key, String value) { + if (value == null) { + return; + } + redis.opsForValue().set(key.toLowerCase(), value, IfishUtil.CacheTime_HOURS, TimeUnit.HOURS); + } + + /* + *设置按分时效缓存 + */ + @Override + public void setRedisToMINUTES(String key, String value) { + if (value == null) { + return; + } + redis.opsForValue().set(key.toLowerCase(), value, IfishUtil.CacheTime_MINUTES, TimeUnit.MINUTES); + } + + /* + *设置按秒时效缓存 + */ + @Override + public void setRedisToSECONDS(String key, String value) { + if (value == null) { + return; + } + redis.opsForValue().set(key.toLowerCase(), value, IfishUtil.CacheTime_SECONDS, TimeUnit.SECONDS); + } + + /* + *删除缓存值 + */ + @Override + public void deleteRedis(String key) { + redis.delete(key.toLowerCase()); + } + + /* + *删除带前缀的批量缓存 + *tagkey 缓存前缀 + *如省份缓存 province:10,前缀为province + */ + @Override + public void delRedisByTagKey(String tagkey) { + Set set = redis.keys(tagkey.toLowerCase() + "*"); + Iterator it = set.iterator(); + while (it.hasNext()) { + String keyStr = it.next(); + redis.delete(keyStr); + } + } + + /* + * 删除当前缓存数据库所有的key + * 排除系数设置缓存 + */ + @Override + public void deleteDBRedis() { + Set set = redis.keys("*"); + Iterator it = set.iterator(); + while (it.hasNext()) { + String keyStr = it.next(); + //排除系数设置缓存 + if (!keyStr.contains("recommendsetting:")) { + redis.delete(keyStr); + } + } + } +} diff --git a/src/main/java/com/ifish/helper/RedisHelperI.java b/src/main/java/com/ifish/helper/RedisHelperI.java new file mode 100644 index 0000000..7a59d0e --- /dev/null +++ b/src/main/java/com/ifish/helper/RedisHelperI.java @@ -0,0 +1,68 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.helper; + +import java.util.concurrent.TimeUnit; + +/** + * redis缓存服务器所有接口方法 + * + * @author Administrator + */ +public interface RedisHelperI { + + /* + *删除带前缀的批量缓存 + *tagkey 缓存前缀 + *如省份缓存 province:10,前缀为province + */ + void delRedisByTagKey(String tagkey); + + /* + *删除缓存值 + */ + void deleteRedis(String key); + + /* + *删除当前缓存数据库所有的key + */ + void deleteDBRedis(); + + /* + *获取缓存值 + */ + String getRedis(String key); + + /* + *设置缓存(有效时间默认为1天) + */ + void setRedis(String key, String value); + + /*设置自定义时效缓存 + *key 缓存名称,value缓存值(string),time(保存时间),unit(时间类型) + */ + void setRedis(String key, String value, int time, TimeUnit unit); + + /* + *设置按天时效缓存 + */ + void setRedisToDAYS(String key, String value); + + /* + *设置按时时效缓存 + */ + void setRedisToHOURS(String key, String value); + + /* + *设置按分时效缓存 + */ + void setRedisToMINUTES(String key, String value); + + /* + *设置按秒时效缓存 + */ + void setRedisToSECONDS(String key, String value); +} diff --git a/src/main/java/com/ifish/helper/ShopsInfoHelper.java b/src/main/java/com/ifish/helper/ShopsInfoHelper.java new file mode 100644 index 0000000..2b2b416 --- /dev/null +++ b/src/main/java/com/ifish/helper/ShopsInfoHelper.java @@ -0,0 +1,49 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.helper; + +import com.ifish.entity.ShopsInfo; +import com.ifish.mapper.Tbl_Shops_Info_Mapper; +import com.ifish.util.RedisKey; +import com.ifish.util.StringUtil; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * + * @author Administrator + */ +@Component +public class ShopsInfoHelper implements ShopsInfoHelperI { + + /** + * tbl_shops_info表操作方法接口 + */ + @Autowired + private Tbl_Shops_Info_Mapper tbl_Shops_Info_Mapper; + + /** + * redis缓存服务器方法接口 + */ + @Autowired + private RedisHelperI redisHelperI; + + @Override + public ShopsInfo getShopsInfoByUserId(Integer userId) throws Exception { + ShopsInfo shopsInfo = null; + String key = RedisKey.ShopsInfo_Key + userId; + String shopString = redisHelperI.getRedis(key); + if (StringUtils.isNotBlank(shopString)) { + shopsInfo = (ShopsInfo) StringUtil.JsonToBean(shopString, ShopsInfo.class); + } else { + shopsInfo = tbl_Shops_Info_Mapper.getShopsInfoByUserId(userId); + redisHelperI.setRedis(key, StringUtil.ObjectToJson(shopsInfo)); + } + return shopsInfo; + } + +} diff --git a/src/main/java/com/ifish/helper/ShopsInfoHelperI.java b/src/main/java/com/ifish/helper/ShopsInfoHelperI.java new file mode 100644 index 0000000..8871b8d --- /dev/null +++ b/src/main/java/com/ifish/helper/ShopsInfoHelperI.java @@ -0,0 +1,24 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.helper; + +import com.ifish.entity.ShopsInfo; + +/** + * + * @author Administrator + */ +public interface ShopsInfoHelperI { + + /** + * 根据用户Id获取商家信息 + * + * @param userId + * @return + */ + public ShopsInfo getShopsInfoByUserId(Integer userId) throws Exception; + +} diff --git a/src/main/java/com/ifish/helper/UserActivityHelper.java b/src/main/java/com/ifish/helper/UserActivityHelper.java new file mode 100644 index 0000000..4933c8b --- /dev/null +++ b/src/main/java/com/ifish/helper/UserActivityHelper.java @@ -0,0 +1,66 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.helper; + +import com.ifish.dto.JsonResult; +import com.ifish.dto.PageingDto; +import com.ifish.entity.Grade; +import com.ifish.mapper.Tbl_User_Activity_Mapper; +import com.ifish.service.CacheService; +import com.ifish.util.IfishUtil; +import com.ifish.util.ResultUtil; +import java.util.List; +import java.util.Map; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * 用户动态所有接口方法 + * + * @author Administrator + */ +@Component +public class UserActivityHelper implements UserActivityHelperI { + + @Autowired + private Tbl_User_Activity_Mapper tbl_User_Activity_Mapper; + + @Autowired + private CacheService cacheService; + + @Override + public PageingDto getUserActivityByPage(Integer pageSize, Integer firstResult) { + //分页获取数据 + List list = tbl_User_Activity_Mapper.getUserActivityByPage(firstResult, pageSize); + firstResult += list.size(); + try { + for (Map map : list) { + Integer gradeValue = (Integer) map.get("grade_value"); + for (Grade grade : cacheService.getGradeList()) { + if (gradeValue >= grade.getMinValue() && gradeValue < grade.getMaxValue()) { + map.remove("grade_value"); + map.put("gradeNum", grade.getGradeNum()); + break; + } + } + } + } catch (Exception e) { + } + + //分页数据封装 + return ResultUtil.success(firstResult, tbl_User_Activity_Mapper.getUserActivityCount(), list); + } + + @Override + public JsonResult getUserActivityMaxCount() { + try { + int count = tbl_User_Activity_Mapper.getUserActivityCount(); + return new JsonResult<>("100", count); + } catch (Exception e) { + return new JsonResult<>("101", ""); + } + } +} diff --git a/src/main/java/com/ifish/helper/UserActivityHelperI.java b/src/main/java/com/ifish/helper/UserActivityHelperI.java new file mode 100644 index 0000000..1db38ea --- /dev/null +++ b/src/main/java/com/ifish/helper/UserActivityHelperI.java @@ -0,0 +1,34 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.helper; + +import com.ifish.dto.JsonResult; +import com.ifish.dto.PageingDto; +import org.springframework.stereotype.Component; + +/** + * 用户动态所有接口方法 + * + * @author Administrator + */ +public interface UserActivityHelperI { + + /** + * 分页获取动态 + * + * @param pageSize + * @param firstResult + * @return + */ + public PageingDto getUserActivityByPage(Integer pageSize, Integer firstResult); + + /** + * 获取用户动态最大值 + * + * @return + */ + public JsonResult getUserActivityMaxCount(); +} diff --git a/src/main/java/com/ifish/helper/UserHelper.java b/src/main/java/com/ifish/helper/UserHelper.java new file mode 100644 index 0000000..a6ae308 --- /dev/null +++ b/src/main/java/com/ifish/helper/UserHelper.java @@ -0,0 +1,549 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.helper; + +import com.ifish.bean.DeviceUserBean; +import com.ifish.entity.Camera; +import com.ifish.entity.CameraUser; +import com.ifish.entity.Device; +import com.ifish.entity.DeviceCamera; +import com.ifish.entity.HardwareType; +import com.ifish.entity.ShopsInfo; +import com.ifish.entity.User; +import com.ifish.entity.VenderList; +import com.ifish.enums.BooleanEnum; +import com.ifish.enums.GwellEnum; +import com.ifish.enums.NeteaseEnum; +import com.ifish.enums.ResultEnum; +import com.ifish.enums.SubDirectoryEnum; +import com.ifish.gwell.GwellApi; +import com.ifish.mapper.Tbl_User_Mapper; +import com.ifish.netease.NeteaseIM; +import com.ifish.util.IfishFilePath; +import com.ifish.util.IfishUtil; +import com.ifish.util.RedisKey; +import com.ifish.util.StringUtil; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * 用户管理所有接口方法 + * + * @author Administrator + */ +@Component +public class UserHelper implements UserHelperI { + + /** + * redis缓存服务器方法接口 + */ + @Autowired + private RedisHelperI redisHelperI; + + /** + * 所有tbl_user表的操作方法接口 + */ + @Autowired + private Tbl_User_Mapper tbl_User_Mapper; + + /** + * 注册云信 + */ + @Autowired + private NeteaseIM neteaseIM; + + @Autowired + private DeviceUserHelperI deviceUserHelperI; + + @Autowired + private ShopsInfoHelperI shopsInfoHelperI; + + @Autowired + private HardWareVenderHelperI hardWareVenderHelperI; + + @Autowired + private CameraUserHelperI cameraUserHelperI; + + /** + * 登陆接口 + * + * @param user + * @return + */ + @Override + public Object login(User user) { + try { + User tmpUser = tmpUser = tbl_User_Mapper.getUserByPhoneNumber(user.getPhoneNumber()); + //2.如果都为空,则没有此用户,返回未注册信息 + if (tmpUser == null) { + //用户不存在 + return IfishUtil.returnJson(ResultEnum.warn202.getKey(), ""); + } + + //3.验证密码是否正确 + if (tmpUser.getUserPassword().equals(user.getUserPassword())) { + //4.如果密码正确,确认是否更新用户信息 + + //是否更新 + boolean isUpdate = false; + + //4.1未注册技威,则注册获取code1,code2 + Map gwellMap = registUserGWell(tmpUser, isUpdate); + tmpUser = (User) gwellMap.get("user"); + isUpdate = (boolean) gwellMap.get("isUpdate"); + + //4.2未注册云信,则注册云信,获取云信token + Map imMap = registUserNetease(tmpUser, isUpdate); + tmpUser = (User) imMap.get("user"); + isUpdate = (boolean) imMap.get("isUpdate"); + + //4.3登陆次数修改 + Integer logincount = tbl_User_Mapper.executeLoginUpdate(tmpUser.getUserId(), user.getLoginType()); + //修改失败,返回错误信息 + if (logincount <= 0) { + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + //4.4验证是否需要修改技威,云信等信息,如果需要则进行修改 + if (isUpdate) { + Integer updateInteger = tbl_User_Mapper.updateUser(tmpUser); + //如果修改失败,返回错误信息 + if (updateInteger <= 0) { + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + saveUserToRedis(tmpUser); + } + + //4.5 获取用户数据 + Map userMap = getUserMap(tmpUser); + //4.6自己的商家对象 + Map shopsInfoMap = getShopInfoMap(tmpUser); + //4.7选择的看护商家对象 + Map kanhuShopsInfoMap = getKanhuShopInfoMap(tmpUser); + //4.8获取用户绑定设备信息,设备和摄像头信息 + Map deviceMap = getDeviceList(tmpUser); + //4.9获取用户绑定摄像头信息 + List list2 = getCameraList(tmpUser); + Map dataMap = new HashMap(); + dataMap.put("user", userMap); + dataMap.put("shopsInfo", shopsInfoMap); + dataMap.put("shopsInfo2", kanhuShopsInfoMap); + dataMap.put("device", deviceMap.get("list")); + dataMap.put("camera", list2); + dataMap.put("deviceCamera", deviceMap.get("list3")); + return IfishUtil.returnJson(ResultEnum.success.getKey(), dataMap); + } else { + //密码不正确 + return IfishUtil.returnJson(ResultEnum.warn204.getKey(), ""); + } + } catch (Exception e) { + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + } + + /** + * 根据用户ID从缓存中获取用户对象 + * + * @param userId + * @return + * @throws Exception + */ + @Override + public User getUserById(Integer userId) throws Exception { + User tmpUser = null; + String userKey = RedisKey.User_Key + userId; + String userString = redisHelperI.getRedis(userKey); + //1.从数据库或缓存中读取用户对象 + if (StringUtils.isNotBlank(userString)) { + tmpUser = (User) StringUtil.JsonToBean(userString, User.class); + } else { + tmpUser = tbl_User_Mapper.getUserByUserId(userId + ""); + saveUserToRedis(tmpUser); + } + return tmpUser; + } + + /** + * 未注册技威,则注册获取code1,code2 + * + * @param tmpUser + * @param isUpdate + * @return + */ + private Map registUserGWell(User tmpUser, boolean isUpdate) { + //4.1未注册技威,则注册获取code1,code2 + if (tmpUser.getIsRegisterGwell().equals(BooleanEnum.NO.getKey())) { + //注册技威 + Map map = GwellApi.Register(tmpUser.getPhoneNumber()); + String result = map.get("result"); + if (result != null) { + //注册成功 + if (result.equals(GwellEnum.success.getKey())) { + String P2PVerifyCode1 = map.get("P2PVerifyCode1"); + String P2PVerifyCode2 = map.get("P2PVerifyCode2"); + String gwellUserID = map.get("UserID"); + tmpUser.setIsRegisterGwell(BooleanEnum.YES.getKey()); + tmpUser.setP2PVerifyCode1(P2PVerifyCode1); + tmpUser.setP2PVerifyCode2(P2PVerifyCode2); + tmpUser.setGwellUserID(gwellUserID); + isUpdate = true; + } //已经注册过 + else if (GwellEnum.repeat.getKey().equals(result)) { + tmpUser.setIsRegisterGwell(BooleanEnum.YES.getKey()); + isUpdate = true; + } + } + }//已经注册过技威 + else if (tmpUser.getIsRegisterGwell().equals(BooleanEnum.YES.getKey())) { + //code1和code2为空则重新登陆获取 + String P2PVerifyCode1 = tmpUser.getP2PVerifyCode1(); + String P2PVerifyCode2 = tmpUser.getP2PVerifyCode2(); + String gwellUserID = tmpUser.getGwellUserID(); + if (P2PVerifyCode1.equals("") || P2PVerifyCode2.equals("") || gwellUserID.equals("")) { + Map map = GwellApi.Login(tmpUser.getPhoneNumber()); + String result = map.get("result"); + //登陆成功 + if (result != null && result.equals(GwellEnum.success.getKey())) { + P2PVerifyCode1 = map.get("P2PVerifyCode1"); + P2PVerifyCode2 = map.get("P2PVerifyCode2"); + gwellUserID = map.get("UserID"); + tmpUser.setP2PVerifyCode1(P2PVerifyCode1); + tmpUser.setP2PVerifyCode2(P2PVerifyCode2); + tmpUser.setGwellUserID(gwellUserID); + isUpdate = true; + } + } + } + Map resultMap = new HashMap(); + resultMap.put("user", tmpUser); + resultMap.put("isUpdate", isUpdate); + return resultMap; + } + + /** + * 未注册云信,则注册云信,获取云信token + * + * @param tmpUser + * @param isUpdate + * @return + */ + private Map registUserNetease(User tmpUser, boolean isUpdate) throws Exception { + if (tmpUser.getIsRegisterNetease().equals(BooleanEnum.NO.getKey())) { + //注册云信 + Map map = neteaseIM.createAccid(tmpUser.getUserId().toString(), tmpUser.getNickName(), IfishFilePath.getPath(SubDirectoryEnum.headImage, tmpUser.getUserImg()), ""); + if (map != null) { + String code = map.get("code"); + if (code.equals(NeteaseEnum.status200.getKey())) { + tmpUser.setIsRegisterNetease(BooleanEnum.YES.getKey()); + tmpUser.setNeteaseToken(map.get("token")); + isUpdate = true; + //发送云信消息 + User imUser = getNeteaseIMUser(); + if (imUser != null) { + neteaseIM.sendMsg(imUser.getUserId().toString(), tmpUser.getUserId().toString(), "感谢您使用爱鱼奇,连接智能设备请查看下方说明书,内含操作视频:http://u.eqxiu.com/s/KmmVl87l \n摄像头售后:021-54131006\n睿芯插排售后:15757401229\n绚多插排售后:18857689069\n松诺插排售后:13392205468", ""); + } + } else if (code.equals(NeteaseEnum.status414.getKey())) { + tmpUser.setIsRegisterNetease(BooleanEnum.YES.getKey()); + isUpdate = true; + } + } + } //已注册云信 + else if (tmpUser.getIsRegisterNetease().equals(BooleanEnum.YES.getKey())) { + //token为空 + if (tmpUser.getNeteaseToken().equals("")) { + //获取云信token + Map map = neteaseIM.refreshToken(tmpUser.getUserId().toString()); + if (map != null) { + String code = map.get("code"); + if (code.equals(NeteaseEnum.status200.getKey())) { + tmpUser.setNeteaseToken(map.get("token")); + isUpdate = true; + } + } + } + } + Map resultMap = new HashMap(); + resultMap.put("user", tmpUser); + resultMap.put("isUpdate", isUpdate); + return resultMap; + } + + /** + * 登录成功,返回给App数据 + * + * @param tmpUser + * @return + */ + private Map getUserMap(User tmpUser) { + //登录成功,返回给App数据 + Map userMap = new HashMap(); + userMap.put("userId", tmpUser.getUserId().toString()); + userMap.put("phoneNumber", tmpUser.getPhoneNumber()); + userMap.put("nickName", tmpUser.getNickName()); + userMap.put("userSex", tmpUser.getUserSex()); + userMap.put("signature", tmpUser.getSignature()); + userMap.put("userImg", tmpUser.getUserImg()); + userMap.put("P2PVerifyCode1", tmpUser.getP2PVerifyCode1()); + userMap.put("P2PVerifyCode2", tmpUser.getP2PVerifyCode2()); + userMap.put("gwellUserID", tmpUser.getGwellUserID()); + userMap.put("neteaseToken", tmpUser.getNeteaseToken()); + userMap.put("userType", tmpUser.getUserType()); + userMap.put("shopsUserId", tmpUser.getShopsUserId()); + if (tmpUser.getUpdateTime() != null) { + userMap.put("updateTime", IfishUtil.format(tmpUser.getUpdateTime())); + } + + return userMap; + } + + /** + * 自己的商家对象 + * + * @param tmpUser + * @return + */ + private Map getShopInfoMap(User tmpUser) throws Exception { + Map shopsInfoMap = new HashMap(); + if (tmpUser.getUserId() != null) { + ShopsInfo shopsInfo = shopsInfoHelperI.getShopsInfoByUserId(tmpUser.getUserId()); + if (shopsInfo != null) { + shopsInfoMap.put("shopsId", shopsInfo.getShopsId()); + shopsInfoMap.put("userId", shopsInfo.getUserId()); + shopsInfoMap.put("userImg", tmpUser.getUserImg()); + shopsInfoMap.put("userName", shopsInfo.getUserName()); + shopsInfoMap.put("shopsName", shopsInfo.getShopsName()); + shopsInfoMap.put("shopsPhone", shopsInfo.getShopsPhone()); + shopsInfoMap.put("shopsProvince", shopsInfo.getShopsProvince()); + shopsInfoMap.put("shopsCity", shopsInfo.getShopsCity()); + shopsInfoMap.put("shopsArea", shopsInfo.getShopsArea()); + shopsInfoMap.put("shopsAddress", shopsInfo.getShopsAddress()); + shopsInfoMap.put("picture1", shopsInfo.getPicture1()); + shopsInfoMap.put("picture2", shopsInfo.getPicture2()); + shopsInfoMap.put("picture3", shopsInfo.getPicture3()); + shopsInfoMap.put("picture4", shopsInfo.getPicture4()); + shopsInfoMap.put("status", shopsInfo.getStatus()); + shopsInfoMap.put("reason", shopsInfo.getReason()); + } + } + return shopsInfoMap; + } + + /** + * 选择的看护商家对象 + * + * @param tmpUser + * @return + */ + private Map getKanhuShopInfoMap(User tmpUser) throws Exception { + //选择的看护商家对象 + Map shopsInfo2Map = new HashMap(); + if (tmpUser.getShopsUserId() != null && tmpUser.getShopsUserId() > 0) { + ShopsInfo shopsInfo = shopsInfoHelperI.getShopsInfoByUserId(tmpUser.getShopsUserId()); + if (shopsInfo != null) { + User tmp2User = getUserById(tmpUser.getShopsUserId()); + shopsInfo2Map.put("shopsId", shopsInfo.getShopsId()); + shopsInfo2Map.put("userId", shopsInfo.getUserId()); + shopsInfo2Map.put("userImg", tmp2User.getUserImg()); + shopsInfo2Map.put("userName", shopsInfo.getUserName()); + shopsInfo2Map.put("shopsName", shopsInfo.getShopsName()); + shopsInfo2Map.put("shopsPhone", shopsInfo.getShopsPhone()); + shopsInfo2Map.put("shopsProvince", shopsInfo.getShopsProvince()); + shopsInfo2Map.put("shopsCity", shopsInfo.getShopsCity()); + shopsInfo2Map.put("shopsArea", shopsInfo.getShopsArea()); + shopsInfo2Map.put("shopsAddress", shopsInfo.getShopsAddress()); + shopsInfo2Map.put("picture1", shopsInfo.getPicture1()); + shopsInfo2Map.put("picture2", shopsInfo.getPicture2()); + shopsInfo2Map.put("picture3", shopsInfo.getPicture3()); + shopsInfo2Map.put("picture4", shopsInfo.getPicture4()); + shopsInfo2Map.put("status", shopsInfo.getStatus()); + shopsInfo2Map.put("reason", shopsInfo.getReason()); + } + } + return shopsInfo2Map; + } + + /** + * 获取用户绑定设备信息 + * + * @param tmpUser + * @return + */ + private Map getDeviceList(User tmpUser) throws Exception { + //设备信息 + List list = new ArrayList(); + //获取用户拥有设备 + List deviceUserList = deviceUserHelperI.getDeviceUsersByUserId(tmpUser.getUserId()); + List deviceIds = new ArrayList(); + for (DeviceUserBean deviceUser : deviceUserList) { + Device device = deviceUserHelperI.getDeviceById(deviceUser.getDeviceId()); + deviceIds.add(device.getDeviceId()); + //封装设备返回信息 + list.add(getDeviceInfo(device, deviceUser)); + } + + //设备-摄像头 + List list3 = new ArrayList(); + //设备已关联摄像头 + if (deviceIds.size() > 0) { + for (Integer deviceId : deviceIds) { + List deviceCameraList = deviceUserHelperI.getDeviceCameraListByDeviceId(deviceId); + for (DeviceCamera deviceCamera : deviceCameraList) { + Map deviceCameraMap = new HashMap(); + deviceCameraMap.put("cameraId", deviceCamera.getDeviceCameraId().getCameraId()); + deviceCameraMap.put("deviceId", deviceCamera.getDeviceCameraId().getDeviceId()); + list3.add(deviceCameraMap); + } + } + } + Map map = new HashMap(); + map.put("list", list); + map.put("list3", list3); + return map; + } + + /** + * 封装设备返回信息 + * + * @param device + * @param deviceUser + * @return + */ + public Map getDeviceInfo(Device device, DeviceUserBean deviceUser) throws Exception { + Map deviceMap = new HashMap(); + deviceMap.put("userId", deviceUser.getUserId()); + deviceMap.put("deviceId", deviceUser.getDeviceId()); + deviceMap.put("isMaster", deviceUser.getIsMaster()); + deviceMap.put("showName", deviceUser.getShowName()); + deviceMap.put("macAddress", device.getMacAddress()); + deviceMap.put("isBlacklist", device.getIsBlacklist()); + deviceMap.put("customIconName", deviceUser.getCustomIconName()); + deviceMap.put("customShowName", deviceUser.getCustomShowName()); + deviceMap.put("deviceIp", device.getDeviceIP()); + deviceMap.put("loginTime", device.getLoginTime()); + if (device.getBrandCode() != null && device.getBrandCode().equals("YUEM") && device.getCreateTime().before(IfishUtil.StrToDate("2016-04-26"))) { + //是否显示预警推送 + deviceMap.put("isPushWendu", BooleanEnum.NO.getKey()); + } else { + //是否显示预警推送 + deviceMap.put("isPushWendu", BooleanEnum.YES.getKey()); + } + //控制方案 + String type = device.getHardwareType(); + if (type != null) { + HardwareType hardwareType = hardWareVenderHelperI.getHardwareTypeByTypeCode(type); + if (hardwareType != null) { + //设备类型 + deviceMap.put("type", type); + //有无工作模式 + deviceMap.put("isWorkModel", hardwareType.getIsWorkModel()); + //控制信息 + deviceMap.put("controlAmount", hardwareType.getControlAmount()); + deviceMap.put("timerAmount", hardwareType.getTimerAmount()); + //背光/柜灯 + deviceMap.put("isLightness", hardwareType.getIsLightness()); + deviceMap.put("isSarkLamp", hardwareType.getIsSarkLamp()); + //自定义图标 + deviceMap.put("isCustomIcon", hardwareType.getIsCustomIcon()); + deviceMap.put("iconLink", hardwareType.getIconLink()); + deviceMap.put("allIconName", hardwareType.getAllIconName()); + deviceMap.put("allShowName", hardwareType.getAllShowName()); + deviceMap.put("defaultIconName", hardwareType.getDefaultIconName()); + deviceMap.put("defaultShowName", hardwareType.getDefaultShowName()); + deviceMap.put("updateTime", hardwareType.getUpdateTime()); + //换水提醒 + deviceMap.put("todayRemind", device.getTodayRemind()); + deviceMap.put("waterRemind", device.getWaterRemind()); + deviceMap.put("remindDate", device.getRemindDate() != null ? IfishUtil.format1(device.getRemindDate()) : ""); + deviceMap.put("remindCycle", device.getRemindCycle() != null ? device.getRemindCycle() : ""); + } + } + //厂家 + if (device.getBrandCode() != null) { + //厂家 + VenderList venderList = new VenderList(); + venderList = hardWareVenderHelperI.getVenderListByBrandCode(device.getBrandCode()); + deviceMap.put("venderList", venderList); + } else { + //默认爱鱼奇 + VenderList defaultVenderList = new VenderList(); + defaultVenderList = hardWareVenderHelperI.getVenderListByBrandCode("AYQ"); + deviceMap.put("venderList", defaultVenderList); + } + return deviceMap; + } + + /** + * 获取用户绑定摄像头信息 + * + * @param tmpUser + * @return + */ + public List getCameraList(User tmpUser) throws Exception { + //摄像头信息 + List list2 = new ArrayList(); + //获取用户拥有摄像头 + List cameraUserList = cameraUserHelperI.getCameraUserListByUserId(tmpUser.getUserId()); + for (CameraUser cameraUser : cameraUserList) { + Camera camera = cameraUserHelperI.getCameraById(cameraUser.getCameraUserId().getCameraId()); + //封装摄像头返回信息 + list2.add(getCameraInfo(camera, cameraUser)); + } + return list2; + } + + /** + * 封装摄像头返回信息 + * + * @param device + * @param deviceUser + * @return + */ + public Map getCameraInfo(Camera camera, CameraUser cameraUser) { + Map cameraMap = new HashMap(); + cameraMap.put("cameraId", camera.getCameraId()); + cameraMap.put("isMaster", cameraUser.getIsMaster()); + cameraMap.put("isLook", cameraUser.getIsLook()); + cameraMap.put("isActive", camera.getActiveCode() != null && !camera.getActiveCode().equals("") ? "1" : "0"); + cameraMap.put("showName", cameraUser.getShowName()); + return cameraMap; + } + + /** + * 将用户对象保存至redis缓存中,有效期1天 + * + * @param user + */ + private void saveUserToRedis(User user) throws Exception { + String key = RedisKey.User_Key + user.getUserId(); + redisHelperI.setRedis(key, StringUtil.ObjectToJson(user)); + } + + /** + * 获取云信的用户信息 + * + * @return + * @throws Exception + */ + private User getNeteaseIMUser() throws Exception { + User user = null; + String key = RedisKey.User_Key + IfishFilePath.netease_phone; + String userString = redisHelperI.getRedis(key); + + //1.从数据库或缓存中读取用户对象 + if (StringUtils.isNotBlank(userString)) { + user = (User) StringUtil.JsonToBean(userString, User.class); + } else { + user = tbl_User_Mapper.getUserByPhoneNumber(IfishFilePath.netease_phone); + redisHelperI.setRedis(key, StringUtil.ObjectToJson(user), 30, TimeUnit.DAYS); + } + return user; + } +} diff --git a/src/main/java/com/ifish/helper/UserHelperI.java b/src/main/java/com/ifish/helper/UserHelperI.java new file mode 100644 index 0000000..c6d3e8c --- /dev/null +++ b/src/main/java/com/ifish/helper/UserHelperI.java @@ -0,0 +1,32 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.helper; + +import com.ifish.entity.User; + +/** + * 用户管理所有接口方法 + * + * @author Administrator + */ +public interface UserHelperI { + + /** + * 登陆接口 + * + * @param user + * @return + */ + public Object login(User user); + + /** + * 根据用户Id获取用户信息 + * + * @param userId + * @return + */ + public User getUserById(Integer userId) throws Exception; +} diff --git a/src/main/java/com/ifish/hibernate/HibernateBaseDao.java b/src/main/java/com/ifish/hibernate/HibernateBaseDao.java new file mode 100644 index 0000000..84aa477 --- /dev/null +++ b/src/main/java/com/ifish/hibernate/HibernateBaseDao.java @@ -0,0 +1,165 @@ +package com.ifish.hibernate; + +import java.io.Serializable; +import java.util.List; + +import org.hibernate.Criteria; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.criterion.Criterion; +import org.hibernate.criterion.Order; +import org.hibernate.criterion.Projections; +import org.springframework.beans.factory.annotation.Autowired; + + +/** + * hibernate DAO基类 + * @author ggw + * @param + * @param + */ +public abstract class HibernateBaseDao { + + @Autowired + protected SessionFactory sessionFactory; + + protected Session getSession() { + return sessionFactory.getCurrentSession(); + } + + /** + * 根据ID查找 + * @param id + * @return + */ + @SuppressWarnings("unchecked") + public T get(ID id) { + return (T) getSession().get(getEntityClass(), id); + } + + /** + * 保存 + * @param id + * @return + */ + public T save(T t) { + getSession().save(t); + return t; + } + + /** + * 更新 + * @param id + * @return + */ + public T update(T t) { + getSession().update(t); + return t; + } + + /** + * 保存或更新 + * @param id + * @return + */ + public T saveOrUpdate(T t) { + getSession().saveOrUpdate(t); + return t; + } + + /** + * 删除 + * @param id + * @return + */ + public void delete(T t) { + getSession().delete(t); + } + + /** + * 按属性查找对象列表 + * @param criterions + * @return + */ + @SuppressWarnings("unchecked") + public List findByProperty(Criterion... criterions) { + Criteria cri = createCriteria(null,criterions); + return cri.list(); + } + + /** + * 按属性查找对象列表 + * @param criterions + * @return + */ + @SuppressWarnings("unchecked") + public List findByProperty(Order order,Criterion... criterions) { + Criteria cri = createCriteria(order,criterions); + return cri.list(); + } + + /** + * 按属性查找唯一对象 + * @param criterions + * @return + */ + @SuppressWarnings("unchecked") + public T findUniqueByProperty(Criterion... criterions) { + Criteria cri = createCriteria(null,criterions); + return (T) cri.uniqueResult(); + } + + /** + * 按属性统计记录数 + * @param criterion + * @return + */ + public int countByProperty(Criterion... criterion) { + return ((Number) (this.createCriteria(null,criterion).setProjection(Projections.rowCount()).uniqueResult())).intValue(); + } + + /** + * 按Criterion查询分页列表数据. + * @param firstResult + * @param pageSize + * @param criterion + * @return + */ + @SuppressWarnings("unchecked") + public Pagination findByCriteria(Integer firstResult,Integer pageSize,Order order,Criterion... criterion) { + Criteria criteria = createCriteria(order,criterion); + if(firstResult!=null && pageSize!=null){ + criteria.setFirstResult(firstResult); + criteria.setMaxResults(pageSize); + } + Pagination page = new Pagination(); + page.setTotalCount(this.countByProperty(criterion)); + page.setList(criteria.list()); + return page; + } + + /** + * 根据Criterion条件创建Criteria,后续可进行更多处理,辅助函数. + * @param criterions + * @return + */ + protected Criteria createCriteria(Order order,Criterion... criterions) { + Criteria criteria = getSession().createCriteria(getEntityClass()); + //筛选条件 + for (Criterion c : criterions) { + criteria.add(c); + } + //排序 + if(order!=null){ + criteria.addOrder(order); + } + return criteria; + } + + /** + * 获得Dao对于的实体类 + * @return + */ + abstract protected Class getEntityClass(); + +} diff --git a/src/main/java/com/ifish/hibernate/Pagination.java b/src/main/java/com/ifish/hibernate/Pagination.java new file mode 100644 index 0000000..c85bbb0 --- /dev/null +++ b/src/main/java/com/ifish/hibernate/Pagination.java @@ -0,0 +1,82 @@ +package com.ifish.hibernate; + +import java.util.List; + +/** + * 列表分页。包含list属性。 + */ +public class Pagination implements java.io.Serializable { + + private static final long serialVersionUID = 1L; + private int totalCount = 0; + private int pageSize = 10; + private int pageNo = 1; + private int DEF_COUNT = 10; + private List list; + + public Pagination() { + + } + + public Pagination(int pageNo, int pageSize, int totalCount) { + setTotalCount(totalCount); + setPageSize(pageSize); + setPageNo(pageNo); + } + + public Pagination(int pageNo, int pageSize, int totalCount, List list) { + setTotalCount(totalCount); + setPageSize(pageSize); + setPageNo(pageNo); + this.list = list; + } + + public void setTotalCount(int totalCount) { + if (totalCount < 0) { + this.totalCount = 0; + } else { + this.totalCount = totalCount; + } + } + + public int getTotalCount() { + return totalCount; + } + + public void setPageSize(int pageSize) { + if (pageSize < 1) { + this.pageSize = DEF_COUNT; + } else { + this.pageSize = pageSize; + } + } + + public int getPageSize() { + return pageSize; + } + + public void setPageNo(int pageNo) { + if (pageNo < 1) { + this.pageNo = 1; + } else { + this.pageNo = pageNo; + } + } + + public int getPageNo() { + return pageNo; + } + + public int getFirstResult() { + return (pageNo - 1) * pageSize; + } + + public List getList() { + return list; + } + + public void setList(List list) { + this.list = list; + } + +} diff --git a/src/main/java/com/ifish/interceptor/SecurityValidateInterceptor.java b/src/main/java/com/ifish/interceptor/SecurityValidateInterceptor.java new file mode 100644 index 0000000..19ae5b5 --- /dev/null +++ b/src/main/java/com/ifish/interceptor/SecurityValidateInterceptor.java @@ -0,0 +1,69 @@ +package com.ifish.interceptor; + +import java.io.IOException; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.web.servlet.HandlerInterceptor; +import org.springframework.web.servlet.ModelAndView; + +import com.ifish.enums.ResultEnum; +import com.ifish.exception.IfishException; +import com.ifish.netease.CheckSumBuilder; + +/** + * 安全校验拦截器 + * + * @author guogw + * + */ +public class SecurityValidateInterceptor implements HandlerInterceptor { + + public SecurityValidateInterceptor(boolean devModel) { + this.devModel = devModel; + } + + //appKey(ifishAppKey1)MD5 + private String ifishAppKey = "5fc7bdada110e3a6eefd3065b8d8d995"; + //appSecret(ifishAppSecret1)MD5前12位 + private String ifishAppSecret = "9596b393ab0f"; + //开发模式 + private boolean devModel = false; + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException { + //开发模式 + if (!devModel) { + String nonce = request.getHeader("nonce"); + String appKey = request.getHeader("appKey"); + String curTime = request.getHeader("curTime"); + String checkSum = request.getHeader("checkSum"); + //校验参数完整性 + if (StringUtils.isNotBlank(checkSum) && StringUtils.isNotBlank(appKey) && StringUtils.isNotBlank(nonce) && StringUtils.isNotBlank(curTime)) { + //校验appKey + if (appKey.equals(ifishAppKey)) { + //计算md5 + String md5Sum = CheckSumBuilder.getMD5(ifishAppSecret + nonce + curTime); + if (md5Sum.equals(checkSum)) { + return true; + } + } + } + throw new IfishException(ResultEnum.error400); + } + return true; + } + + @Override + public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { + + } + + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { + + } + +} diff --git a/src/main/java/com/ifish/jpush/SmsNumSend.java b/src/main/java/com/ifish/jpush/SmsNumSend.java new file mode 100644 index 0000000..003ed50 --- /dev/null +++ b/src/main/java/com/ifish/jpush/SmsNumSend.java @@ -0,0 +1,55 @@ +package com.ifish.jpush; + +import com.taobao.api.ApiException; +import com.taobao.api.DefaultTaobaoClient; +import com.taobao.api.TaobaoClient; +import com.taobao.api.request.AlibabaAliqinFcSmsNumSendRequest; +import com.taobao.api.response.AlibabaAliqinFcSmsNumSendResponse; + +public class SmsNumSend { + //公共回传参数 + private String extend=""; + //短信类型 + private String sms_type = "normal"; + //签名模板,在阿里大鱼"管理中心-短信签名管理中"中的可用签名 + //private String sms_free_sign_name="注册验证"; + //短信模板变量 + private String sms_param="爱鱼奇"; + //短信模板ID,在阿里大鱼"管理中心-短信签名管理中"中的可用模板 + //private String sms_template_code; + //URL + private String url ="http://gw.api.taobao.com/router/rest"; + //在开发平台-应用管理-概览-App Key + private String appkey ="23252927"; + //在开发平台-应用管理-概览-App Secret + private String secret ="c904889cc31bf6ba04707d7e1039ed1e"; + /*当API的访问级别为‘公开’时,SessionKey不需要填写; + 当API的访问级别为‘须用户登录’时,SessionKey必须填写; + 当API的访问级别为‘隐私数据须用户登录’时,SessionKey可填可不填; + 如何获取SessionKey,请搜索‘用户授权介绍’或点击上面的‘Session获取工具*/ + //private String sessionKey; + + /** + * 发送短信 + * @param rec_num 手机号 + * @param code 验证码 + * @return + */ + public boolean sendSmsNum(String rec_num,String code,String sign_name,String template_code){ + TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret); + AlibabaAliqinFcSmsNumSendRequest req = new AlibabaAliqinFcSmsNumSendRequest(); + req.setExtend(extend); + req.setSmsType(sms_type); + req.setSmsFreeSignName(sign_name); + req.setSmsParam("{\"code\":\""+code+"\",\"product\":"+sms_param+"}"); + req.setRecNum(rec_num); + req.setSmsTemplateCode(template_code); + try { + AlibabaAliqinFcSmsNumSendResponse rsp = client.execute(req); + return rsp.getResult().getSuccess(); + } catch (ApiException e) { + e.getStackTrace(); + } + return false; + } +} diff --git a/src/main/java/com/ifish/mail/Mail.java b/src/main/java/com/ifish/mail/Mail.java new file mode 100644 index 0000000..ff13a75 --- /dev/null +++ b/src/main/java/com/ifish/mail/Mail.java @@ -0,0 +1,200 @@ +package com.ifish.mail; + +import java.util.Properties; + +import javax.mail.BodyPart; +import javax.mail.Message; +import javax.mail.Multipart; +import javax.mail.Session; +import javax.mail.Transport; +import javax.mail.internet.InternetAddress; +import javax.mail.internet.MimeBodyPart; +import javax.mail.internet.MimeMessage; +import javax.mail.internet.MimeMultipart; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class Mail { + + private MimeMessage mimeMsg; //MIME邮件对象 + private Session session; //邮件会话对象 + private Properties props; //系统属性 + private Multipart mp; //Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象 + private static boolean needAuth = true;//smtp是否需要认证 + private static boolean isDebug = false;//是否开启调试 + //smtp认证用户名和密码 + private static String smtp = "smtp.qq.com";//SMTP服务器 + private static String username = "service@ifish7.com"; + private static String password = "Ifish72015"; + private static String from = "service@ifish7.com"; + //private static String to = "fun@ifish7.com"; + private static String to = "help@ifish7.com"; + private static Logger log = LoggerFactory.getLogger(Mail.class); + + /** + * Constructor + * + * @param smtp 邮件发送服务器 + */ + public Mail(String smtp) { + setSmtpHost(smtp); + createMimeMessage(); + } + + /** + * 设置邮件发送服务器 + * + * @param hostName String + */ + public void setSmtpHost(String hostName) { + if (props == null) { + props = System.getProperties(); //获得系统属性对象 + } + //设置SMTP主机 + props.put("mail.smtp.host", hostName); + //设置SMTP是否需要验证 + props.put("mail.smtp.auth", needAuth); + props.put("mail.smtp.starttls.enable", needAuth); + } + + /** + * 创建MIME邮件对象 + * + * @return + */ + public boolean createMimeMessage() { + try { + session = Session.getDefaultInstance(props, null); //获得邮件会话对象 + } catch (Exception e) { + log.error("获取邮件会话对象时发生错误!" + e.toString()); + return false; + } + try { + mimeMsg = new MimeMessage(session); //创建MIME邮件对象 + mp = new MimeMultipart(); + return true; + } catch (Exception e) { + log.error("创建MIME邮件对象失败!" + e.toString()); + return false; + } + } + + /** + * 设置邮件主题 + * + * @param mailSubject + * @return + */ + public boolean setSubject(String mailSubject) { + try { + mimeMsg.setSubject(mailSubject); + return true; + } catch (Exception e) { + log.error("设置邮件主题失败" + e.toString()); + return false; + } + } + + /** + * 设置邮件正文 + * + * @param mailBody String + */ + public boolean setBody(String mailBody) { + try { + BodyPart bp = new MimeBodyPart(); + bp.setContent(mailBody, "text/html;charset=GBK"); + mp.addBodyPart(bp); + return true; + } catch (Exception e) { + log.error("设置邮件正文失败" + e.toString()); + return false; + } + } + + /** + * 设置发信人 + * + * @param from String + */ + public boolean setFrom(String from) { + try { + mimeMsg.setFrom(new InternetAddress(from)); //设置发信人 + return true; + } catch (Exception e) { + log.error("设置发信人失败" + e.toString()); + return false; + } + } + + /** + * 设置收信人 + * + * @param to String + */ + public boolean setTo(String to) { + try { + mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); + return true; + } catch (Exception e) { + log.error("设置收信人失败" + e.toString()); + return false; + } + } + + /** + * 发送邮件 + */ + public boolean sendOut() { + try { + mimeMsg.setContent(mp); + mimeMsg.saveChanges(); + Session mailSession = Session.getInstance(props, null); + mailSession.setDebug(isDebug); + Transport transport = mailSession.getTransport("smtp"); + transport.connect((String) props.get("mail.smtp.host"), username, password); + transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.TO)); + //transport.send(mimeMsg); + transport.close(); + return true; + } catch (Exception e) { + log.error("发送邮件失败" + e.toString()); + return false; + } + } + + /** + * 调用sendOut方法完成邮件发送 + * + * @param smtp + * @param from + * @param to + * @param subject + * @param content + * @param username + * @param password + * @return boolean + */ + public static boolean send(String subject, String content) { + Mail theMail = new Mail(smtp); + + if (!theMail.setSubject(subject)) { + return false; + } + if (!theMail.setFrom(from)) { + return false; + } + if (!theMail.setTo(to)) { + return false; + } + if (!theMail.setBody(content)) { + return false; + } + if (!theMail.sendOut()) { + return false; + } + return true; + } + +} diff --git a/src/main/java/com/ifish/mapper/Tbl_Ad_Info_Mapper.java b/src/main/java/com/ifish/mapper/Tbl_Ad_Info_Mapper.java new file mode 100644 index 0000000..603e7d4 --- /dev/null +++ b/src/main/java/com/ifish/mapper/Tbl_Ad_Info_Mapper.java @@ -0,0 +1,23 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.mapper; + +import org.apache.ibatis.annotations.Select; + +/** + * + * @author Administrator + */ +public interface Tbl_Ad_Info_Mapper { + + /** + * 获取广告信息表最大ID + * @return + */ + @Select("SELECT MAX(ad_id) FROM TBL_AD_INFO") + Integer getMaxInfo(); + +} diff --git a/src/main/java/com/ifish/mapper/Tbl_Camera_Mapper.java b/src/main/java/com/ifish/mapper/Tbl_Camera_Mapper.java new file mode 100644 index 0000000..540b28e --- /dev/null +++ b/src/main/java/com/ifish/mapper/Tbl_Camera_Mapper.java @@ -0,0 +1,28 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.mapper; + +import com.ifish.entity.Camera; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +/** + * 摄像头激活信息 + * + * @author Administrator + */ +public interface Tbl_Camera_Mapper { + + /** + * 根据摄像头ID获取绑定信息 + * + * @param cameraId + * @return + */ + @Select("select camera_id,active_code,active_time,create_time,update_time from tbl_camera where camera_id=#{id}") + Camera getCameraById(@Param("id") String cameraId); + +} diff --git a/src/main/java/com/ifish/mapper/Tbl_Camera_User_Mapper.java b/src/main/java/com/ifish/mapper/Tbl_Camera_User_Mapper.java new file mode 100644 index 0000000..3da9a8a --- /dev/null +++ b/src/main/java/com/ifish/mapper/Tbl_Camera_User_Mapper.java @@ -0,0 +1,28 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.mapper; + +import com.ifish.entity.CameraUser; +import java.util.List; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +/** + * + * @author Administrator + */ +public interface Tbl_Camera_User_Mapper { + + /** + * 根据用户信息获取绑定的摄像头列表 + * + * @param userid + * @return + */ + @Select("select user_id,camera_id,is_master,show_name,is_look,is_live,create_time,update_time from tbl_camera_user where user_id=#{userid}") + List getCameraUserListByUserId(@Param("userid") Integer userid); + +} diff --git a/src/main/java/com/ifish/mapper/Tbl_Commodity_Info_Mapper.java b/src/main/java/com/ifish/mapper/Tbl_Commodity_Info_Mapper.java new file mode 100644 index 0000000..da009a6 --- /dev/null +++ b/src/main/java/com/ifish/mapper/Tbl_Commodity_Info_Mapper.java @@ -0,0 +1,84 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.mapper; + +import com.ifish.bean.CommodityInfoBean; +import java.util.List; +import java.util.Map; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.InsertProvider; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.SelectKey; +import org.apache.ibatis.annotations.SelectProvider; +import org.apache.ibatis.annotations.UpdateProvider; + +/** + * + * @author Administrator + */ +public interface Tbl_Commodity_Info_Mapper { + + /** + * 创建商品详情 + * + * @param commodityInfoBean + * @return + */ + @InsertProvider(type = Tbl_Commodity_Info_MapperSql.class, method = "createCommodityInfo") + @SelectKey(statement = "select @@IDENTITY as commodity_id", keyProperty = "commodity.commodityId", keyColumn = "commodity_id", before = false, resultType = int.class) + Integer createCommodityInfo(@Param("commodity") CommodityInfoBean commodityInfoBean); + + /** + * 修改商品详情 + * + * @param commodityInfoBean + * @return + */ + @UpdateProvider(type = Tbl_Commodity_Info_MapperSql.class, method = "updateCommodityInfo") + Integer updateCommodityInfo(@Param("commodity") CommodityInfoBean commodityInfoBean); + + /** + * 根据商品ID查询单个商品信息 + * + * @param id + * @return + */ + @Select("SELECT commodity_id,shop_id,user_id,commodity_name,commodity_detail,commodity_img,commodity_video,commodity_status,create_time,click,backstage_status FROM tbl_commodity_info WHERE commodity_id = #{id}") + CommodityInfoBean getCommodityInfoByID(@Param("id") Integer id); + + /** + * 分页获取店铺所属商品列表 + * + * @param shopId + * @param firstResult + * @param pageSize + * @return + */ + @Select("SELECT commodity_id,shop_id,user_id,commodity_name,commodity_detail,commodity_img,commodity_video,commodity_status,create_time,click,backstage_status FROM tbl_commodity_info " + + "WHERE shop_id = #{id} and backstage_status = 0 and commodity_status = #{status} order by ${orderBy} desc LIMIT ${firsltResult},${pageSize}") + List getCommodityInfoByPage(@Param("id") Integer shopId, @Param("firsltResult") Integer firstResult, @Param("pageSize") Integer pageSize, @Param("status") Integer commodityState, @Param("orderBy") String orderBy); + + /** + * 分页获取店铺所属商品列表总数 + * + * @param shopId + * @param firstResult + * @param pageSize + * @return + */ + @Select("SELECT count(1) FROM tbl_commodity_info WHERE shop_id = #{id} and backstage_status = 0 and commodity_status = #{status}") + int getCommodityInfoCountByPage(@Param("id") Integer shopId, @Param("status") Integer commodityState); + + /** + * 根据ID删除商品 + * + * @param commodityId + * @return + */ + @Delete("DELETE FROM tbl_commodity_info WHERE commodity_id = #{id}") + int deleteCommodityInfoById(@Param("id") Integer commodityId); +} diff --git a/src/main/java/com/ifish/mapper/Tbl_Commodity_Info_MapperSql.java b/src/main/java/com/ifish/mapper/Tbl_Commodity_Info_MapperSql.java new file mode 100644 index 0000000..176679f --- /dev/null +++ b/src/main/java/com/ifish/mapper/Tbl_Commodity_Info_MapperSql.java @@ -0,0 +1,82 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.mapper; + +import com.ifish.bean.CommodityInfoBean; +import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.annotations.Param; + +/** + * + * @author Administrator + */ +public class Tbl_Commodity_Info_MapperSql { + + public String createCommodityInfo(@Param("commodity") CommodityInfoBean commodityInfoBean) { + StringBuilder sb = new StringBuilder(); + + sb.append("INSERT INTO tbl_commodity_info (shop_id,user_id,commodity_name,"); + if (StringUtils.isNotBlank(commodityInfoBean.getCommodityDetail())) { + sb.append("commodity_detail,"); + } + if (StringUtils.isNotBlank(commodityInfoBean.getCommodityImg())) { + sb.append("commodity_img,"); + } + if (StringUtils.isNotBlank(commodityInfoBean.getCommodityVideo())) { + sb.append("commodity_video,"); + } + sb.append("commodity_status,create_time,click,backstage_status) VALUES (#{commodity.shopId},#{commodity.userId},#{commodity.commodityName},"); + if (StringUtils.isNotBlank(commodityInfoBean.getCommodityDetail())) { + sb.append("#{commodity.commodityDetail},"); + } + if (StringUtils.isNotBlank(commodityInfoBean.getCommodityImg())) { + sb.append("#{commodity.commodityImg},"); + } + if (StringUtils.isNotBlank(commodityInfoBean.getCommodityVideo())) { + sb.append("#{commodity.commodityVideo},"); + } + sb.append("0,NOW(),0,0)"); + return sb.toString(); + } + + public String updateCommodityInfo(@Param("commodity") CommodityInfoBean commodityInfoBean) { + StringBuilder sb = new StringBuilder(); + + sb.append("UPDATE tbl_commodity_info SET "); + if (commodityInfoBean.getShopId() != null && commodityInfoBean.getShopId() >= 0) { + sb.append("shop_id = #{commodity.shopId},"); + } + if (commodityInfoBean.getUserId() != null && commodityInfoBean.getUserId() >= 0) { + sb.append("user_id = #{commodity.userId},"); + } + if (commodityInfoBean.getClick() != null && commodityInfoBean.getClick() > 0) { + sb.append("click = click+1 ,"); + } + if (commodityInfoBean.getBackstageStatus() != null && commodityInfoBean.getBackstageStatus() >= 0) { + sb.append("backstage_status = #{commodity.backstageStatus},"); + } + if (commodityInfoBean.getCommodityStatus() != null && commodityInfoBean.getCommodityStatus() >= 0) { + sb.append("commodity_status = #{commodity.commodityStatus},"); + } + if (StringUtils.isNotBlank(commodityInfoBean.getCommodityName())) { + sb.append("commodity_name = #{commodity.commodityName},"); + } + if (StringUtils.isNotBlank(commodityInfoBean.getCommodityImg())) { + sb.append("commodity_img = #{commodity.commodityImg},"); + } + if (StringUtils.isNotBlank(commodityInfoBean.getCommodityDetail())) { + sb.append("commodity_detail = #{commodity.commodityDetail},"); + } + if (StringUtils.isNotBlank(commodityInfoBean.getCommodityVideo())) { + sb.append("commodity_video = #{commodity.commodityVideo},"); + } + if (sb.lastIndexOf(",") == sb.length() - 1) { + sb.deleteCharAt(sb.length() - 1); + } + sb.append(" WHERE commodity_id = #{commodity.commodityId}"); + return sb.toString(); + } +} diff --git a/src/main/java/com/ifish/mapper/Tbl_Device_Mapper.java b/src/main/java/com/ifish/mapper/Tbl_Device_Mapper.java new file mode 100644 index 0000000..11899dc --- /dev/null +++ b/src/main/java/com/ifish/mapper/Tbl_Device_Mapper.java @@ -0,0 +1,28 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.mapper; + +import com.ifish.entity.Device; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +/** + * + * @author Administrator + */ +public interface Tbl_Device_Mapper { + + /** + * 根据设备ID获取设备详情 + * + * @param deviceid + * @return + */ + @Select("select device_id,server_ip,device_ip,mac_address,login_count,login_time,hardware_type,software_version,brand_code,is_blacklist,water_remind,remind_date,remind_cycle," + + "today_remind,first_activate,create_time,create_date from tbl_device where device_id= #{deviceid}") + Device getDeviceById(@Param("deviceid") Integer deviceid); + +} diff --git a/src/main/java/com/ifish/mapper/Tbl_Device_User_Mapper.java b/src/main/java/com/ifish/mapper/Tbl_Device_User_Mapper.java new file mode 100644 index 0000000..c170ff6 --- /dev/null +++ b/src/main/java/com/ifish/mapper/Tbl_Device_User_Mapper.java @@ -0,0 +1,38 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.mapper; + +import com.ifish.bean.DeviceUserBean; +import com.ifish.entity.DeviceCamera; +import com.ifish.entity.DeviceUser; +import java.util.List; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +/** + * + * @author Administrator + */ +public interface Tbl_Device_User_Mapper { + + /** + * 根据用户ID获取设备列表 + * + * @param userid + * @return + */ + @Select("select user_id,device_id,is_master,show_name,create_time,update_time,custom_icon_name,custom_show_name from tbl_device_user where user_id = #{userid}") + List getDeviceUsersByUserId(@Param("userid") Integer userid); + + /** + * 根据设备ID获取设备绑定摄像头集合 + * + * @param deviceId + * @return + */ + @Select("select camera_id,device_id from tbl_device_camera where device_id=#{deviceId}") + List getDeviceCameraListByDeviceId(@Param("deviceId") Integer deviceId); +} diff --git a/src/main/java/com/ifish/mapper/Tbl_Hardware_Type_Mapper.java b/src/main/java/com/ifish/mapper/Tbl_Hardware_Type_Mapper.java new file mode 100644 index 0000000..eb3463e --- /dev/null +++ b/src/main/java/com/ifish/mapper/Tbl_Hardware_Type_Mapper.java @@ -0,0 +1,28 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.mapper; + +import com.ifish.entity.HardwareType; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +/** + * + * @author Administrator + */ +public interface Tbl_Hardware_Type_Mapper { + + /** + * 根据设备类型Code获取厂家设备类型详情 + * + * @param type + * @return + */ + @Select("select hardware_type,hardware_name,control_amount,timer_amount,is_work_model,is_custom_icon,all_icon_name,all_show_name,default_icon_name,default_show_name," + + "icon_link,is_lightness,is_sark_lamp,hardware_desc,update_time,create_time from tbl_hardware_type where hardware_type=#{type}") + HardwareType getHardwareTypeByTypeCode(@Param("type") String type); + +} diff --git a/src/main/java/com/ifish/mapper/Tbl_Shops_Info_Mapper.java b/src/main/java/com/ifish/mapper/Tbl_Shops_Info_Mapper.java new file mode 100644 index 0000000..0e11632 --- /dev/null +++ b/src/main/java/com/ifish/mapper/Tbl_Shops_Info_Mapper.java @@ -0,0 +1,22 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.mapper; + +import com.ifish.entity.ShopsInfo; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +/** + * + * @author Administrator + */ +public interface Tbl_Shops_Info_Mapper { + + @Select("select shops_id,user_id,user_name,shops_name,shops_phone,shops_province,shops_city,shops_area,shops_address,picture1,picture2,picture3,picture4,`status`,reason," + + "update_time,create_time,review_time,type_key,remark,app_show,weixin_code,shop_link,is_ping_bi from tbl_shops_info WHERE user_id = #{userid}") + ShopsInfo getShopsInfoByUserId(@Param("userid") Integer userid); + +} diff --git a/src/main/java/com/ifish/mapper/Tbl_User_Activity_Mapper.java b/src/main/java/com/ifish/mapper/Tbl_User_Activity_Mapper.java new file mode 100644 index 0000000..05aa4e7 --- /dev/null +++ b/src/main/java/com/ifish/mapper/Tbl_User_Activity_Mapper.java @@ -0,0 +1,37 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.mapper; + +import java.util.List; +import java.util.Map; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +/** + * + * @author Administrator + */ +public interface Tbl_User_Activity_Mapper { + + /** + * 分页获取所有用户动态 + * + * @param pageNum + * @param pageSize + * @return + */ + @Select("select a.activity_id as activityId ,a.user_id as userId,tu.user_img as userImg,tu.nick_name as nickName,u.grade_value,a.activity_type as activityType,a.create_time from tbl_user_activity a LEFT JOIN tbl_user_asset u ON a.user_id=u.user_id LEFT JOIN tbl_user tu ON a.user_id=tu.user_id ORDER BY activity_id DESC LIMIT ${pageNum},${pageSize}") + List getUserActivityByPage(@Param("pageNum") Integer pageNum, @Param("pageSize") Integer pageSize); + + /** + * 获取用户动态最大ID + * + * @return + */ + @Select("select max(activity_id) from tbl_user_activity ") + Integer getUserActivityCount(); + +} diff --git a/src/main/java/com/ifish/mapper/Tbl_User_Mapper.java b/src/main/java/com/ifish/mapper/Tbl_User_Mapper.java new file mode 100644 index 0000000..015a469 --- /dev/null +++ b/src/main/java/com/ifish/mapper/Tbl_User_Mapper.java @@ -0,0 +1,57 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.mapper; + +import com.ifish.entity.User; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; +import org.apache.ibatis.annotations.UpdateProvider; + +/** + * + * @author Administrator + */ +public interface Tbl_User_Mapper { + + /** + * 根据手机号获取用户对象 + * + * @return + */ + @Select("SELECT user_id,nick_name,user_password,phone_number,user_img,user_sex,signature,login_count,phone_type,update_time,login_time,create_time,login_type,remarks," + + "address,P2PVerify_code1,P2PVerify_code2,gwell_userID,is_register_gwell,user_type,shops_user_id,netease_token,is_register_netease,latitude,longitude from tbl_user where phone_number=#{phoneNumber}") + User getUserByPhoneNumber(@Param("phoneNumber") String phoneNumber); + + /** + * 根据用户ID获取用户对象 + * + * @param userid + * @return + */ + @Select("SELECT user_id,nick_name,user_password,phone_number,user_img,user_sex,signature,login_count,phone_type,update_time,login_time,create_time,login_type,remarks," + + "address,P2PVerify_code1,P2PVerify_code2,gwell_userID,is_register_gwell,user_type,shops_user_id,netease_token,is_register_netease,latitude,longitude from tbl_user where user_id=#{userid}") + User getUserByUserId(@Param("userid") String userid); + + /** + * 每次登陆后修改登陆时间、次数和手机类型 + * + * @param userId + * @param loginType + * @return + */ + @Update("update tbl_user set login_count=if(login_count is null,1,login_count+1),login_type=#{logintype},login_time=current_timestamp() where user_id=#{userid}") + Integer executeLoginUpdate(@Param("userid") Integer userId, @Param("logintype") String loginType); + + /** + * 修改用户账号信息 + * + * @param user + * @return + */ + @UpdateProvider(type = Tbl_User_MapperSql.class, method = "updateUser") + Integer updateUser(@Param("user") User user); +} diff --git a/src/main/java/com/ifish/mapper/Tbl_User_MapperSql.java b/src/main/java/com/ifish/mapper/Tbl_User_MapperSql.java new file mode 100644 index 0000000..5855d31 --- /dev/null +++ b/src/main/java/com/ifish/mapper/Tbl_User_MapperSql.java @@ -0,0 +1,92 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.mapper; + +import com.ifish.entity.User; +import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.annotations.Param; + +/** + * + * @author Administrator + */ +public class Tbl_User_MapperSql { + + public String updateUser(@Param("user") User user) { + StringBuilder sb = new StringBuilder(); + + sb.append("Update tbl_User SET "); + if (user.getNickName() != null && StringUtils.isNotBlank(user.getNickName())) { + sb.append("nick_name = #{user.nickName}, "); + } + if (user.getUserPassword() != null && StringUtils.isNotBlank(user.getUserPassword())) { + sb.append("user_password = #{user.userPassword}, "); + } + if (user.getPhoneNumber() != null && StringUtils.isNotBlank(user.getPhoneNumber())) { + sb.append("phone_number = #{user.phoneNumber}, "); + } + if (user.getUserImg() != null && StringUtils.isNotBlank(user.getUserImg())) { + sb.append("user_img = #{user.userImg}, "); + } + if (user.getUserSex() != null && StringUtils.isNotBlank(user.getUserSex())) { + sb.append("user_sex = #{user.userSex}, "); + } + if (user.getSignature() != null && StringUtils.isNotBlank(user.getSignature())) { + sb.append("signature = #{user.signature}, "); + } + if (user.getPhoneType() != null && StringUtils.isNotBlank(user.getPhoneType())) { + sb.append("phone_type = #{user.phoneType}, "); + } + if (user.getUpdateTime() != null) { + sb.append("update_time = #{user.updateTime}, "); + } + if (user.getLoginTime() != null) { + sb.append("login_time = #{user.loginTime}, "); + } + if (user.getLoginType() != null && StringUtils.isNotBlank(user.getLoginType())) { + sb.append("login_type = #{user.loginType}, "); + } + if (user.getAddress() != null && StringUtils.isNotBlank(user.getAddress())) { + sb.append("address = #{user.address}, "); + } + if (user.getP2PVerifyCode1() != null && StringUtils.isNotBlank(user.getP2PVerifyCode1())) { + sb.append("P2PVerify_code1 = #{user.p2PVerifyCode1}, "); + } + if (user.getP2PVerifyCode2() != null && StringUtils.isNotBlank(user.getP2PVerifyCode2())) { + sb.append("P2PVerify_code2 = #{user.p2PVerifyCode2}, "); + } + if (user.getGwellUserID() != null && StringUtils.isNotBlank(user.getGwellUserID())) { + sb.append("gwell_userID = #{user.gwellUserID}, "); + } + if (user.getIsRegisterGwell() != null && StringUtils.isNotBlank(user.getIsRegisterGwell())) { + sb.append("is_register_gwell = #{user.isRegisterNetease}, "); + } + if (user.getUserType() != null && StringUtils.isNotBlank(user.getUserType())) { + sb.append("user_type = #{user.userType}, "); + } + if (user.getShopsUserId() != null && user.getShopsUserId() > 0) { + sb.append("shops_user_id = #{user.shopsUserId}, "); + } + if (user.getNeteaseToken() != null && StringUtils.isNotBlank(user.getNeteaseToken())) { + sb.append("netease_token = #{user.neteaseToken}, "); + } + if (user.getIsRegisterNetease() != null && StringUtils.isNotBlank(user.getIsRegisterNetease())) { + sb.append("is_register_netease = #{user.isRegisterNetease}, "); + } + if (user.getLatitude() != null && user.getLatitude() > 0) { + sb.append("latitude = #{user.latitude}, "); + } + if (user.getLongitude() != null && user.getLongitude() > 0) { + sb.append("latitude = #{iser.latitude}, "); + } + if (sb.lastIndexOf(",") == sb.length() - 1) { + sb.deleteCharAt(sb.length() - 1); + } + sb.append(" WHERE user_id = #{user.userId}"); + return sb.toString(); + } + +} diff --git a/src/main/java/com/ifish/mapper/Tbl_Vender_list_Mapper.java b/src/main/java/com/ifish/mapper/Tbl_Vender_list_Mapper.java new file mode 100644 index 0000000..9a58ab2 --- /dev/null +++ b/src/main/java/com/ifish/mapper/Tbl_Vender_list_Mapper.java @@ -0,0 +1,27 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.mapper; + +import com.ifish.bean.VenderListBean; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +/** + * + * @author Administrator + */ +public interface Tbl_Vender_list_Mapper { + + /** + * 根据code获取厂家信息 + * + * @param code + * @return + */ + @Select("select brand_code,brand_name,brand_introduce,brand_logo from tbl_vender_list where brand_code=#{code}") + VenderListBean getVenderListByBrandCode(@Param("code") String code); + +} diff --git a/src/main/java/com/ifish/netease/CheckSumBuilder.java b/src/main/java/com/ifish/netease/CheckSumBuilder.java new file mode 100644 index 0000000..3f3f12e --- /dev/null +++ b/src/main/java/com/ifish/netease/CheckSumBuilder.java @@ -0,0 +1,48 @@ +package com.ifish.netease; + +import java.security.MessageDigest; + +/** + * SHA1(AppSecret + Nonce + CurTime),三个参数拼接的字符串,进行SHA1哈希计算,转化成16进制字符(String,小写) + * @author Administrator + * + */ +public class CheckSumBuilder { + + // 计算并获取CheckSum + public static String getCheckSum(String appSecret, String nonce, String curTime) { + return encode("sha1", appSecret + nonce + curTime); + } + + // 计算并获取md5值 + public static String getMD5(String requestBody) { + return encode("md5", requestBody); + } + + private static String encode(String algorithm, String value) { + if (value == null) { + return null; + } + try { + MessageDigest messageDigest + = MessageDigest.getInstance(algorithm); + messageDigest.update(value.getBytes()); + return getFormattedText(messageDigest.digest()); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + private static String getFormattedText(byte[] bytes) { + int len = bytes.length; + StringBuilder buf = new StringBuilder(len * 2); + for (int j = 0; j < len; j++) { + buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]); + buf.append(HEX_DIGITS[bytes[j] & 0x0f]); + } + return buf.toString(); + } + + private static final char[] HEX_DIGITS = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; + +} \ No newline at end of file diff --git a/src/main/java/com/ifish/netease/NeteaseIM.java b/src/main/java/com/ifish/netease/NeteaseIM.java new file mode 100644 index 0000000..fe35d11 --- /dev/null +++ b/src/main/java/com/ifish/netease/NeteaseIM.java @@ -0,0 +1,343 @@ +package com.ifish.netease; + +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.http.HttpResponse; +import org.apache.http.NameValuePair; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.message.BasicNameValuePair; +import org.apache.http.util.EntityUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.ifish.enums.NeteaseEnum; +import com.ifish.util.IfishUtil; + +@SuppressWarnings("deprecation") +public class NeteaseIM { + + String appKey = "87b0e3315dfc2df08060bcb54246da68"; + String appSecret = "e62f6c247b46"; + + private static Logger log = LoggerFactory.getLogger(NeteaseIM.class); + + /** + * 创建云信ID + * @param accid 云信ID,最大长度32字符,必须保证一个APP内唯一 + * @param name 云信ID昵称,最大长度64字符,用来PUSH推送 时显示的昵称 + * @param icon 云信ID头像URL,第三方可选填,最大长度1024 + * @param props json属性,第三方可选填,最大长度1024字符 + * @return + * @throws Exception + */ + @SuppressWarnings({"resource"}) + public Map createAccid(String accid,String name,String icon,String props){ + try { + + DefaultHttpClient httpClient = new DefaultHttpClient(); + String url = "https://api.netease.im/nimserver/user/create.action"; + HttpPost httpPost = new HttpPost(url); + String nonce = IfishUtil.getCharAndNumr(10); + String curTime = String.valueOf((new Date()).getTime() / 1000L); + //计算CheckSum + String checkSum = CheckSumBuilder.getCheckSum(appSecret, nonce ,curTime); + //设置请求的header + httpPost.addHeader("AppKey", appKey); + httpPost.addHeader("Nonce", nonce); + httpPost.addHeader("CurTime", curTime); + httpPost.addHeader("CheckSum", checkSum); + httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); + //设置请求的参数 + List nvps = new ArrayList(); + nvps.add(new BasicNameValuePair("accid", accid)); + nvps.add(new BasicNameValuePair("name", name)); + nvps.add(new BasicNameValuePair("icon", icon)); + nvps.add(new BasicNameValuePair("props", props)); + httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8")); + //执行请求 + HttpResponse response = httpClient.execute(httpPost); + //执行结果 + String responseStr = EntityUtils.toString(response.getEntity(), "utf-8"); + JSONObject json = JSON.parseObject(responseStr); + String code = json.getString("code"); + Map map = new HashMap(); + map.put("code", code); + //200 + if(code.equals(NeteaseEnum.status200.getKey())){ + JSONObject infoJson = json.getJSONObject("info"); + String token = infoJson.getString("token"); + map.put("token", token); + } + else if(code.equals(NeteaseEnum.status414.getKey())){ + //String desc = json.getString("desc"); + } + return map; + } catch (Exception e) { + log.error("CreateAccid error message:{},{}",accid,e.toString()); + } + return null; + } + + /** + * 更新并获取新token + * @param accid + * @return + * @throws Exception + */ + @SuppressWarnings({"resource"}) + public Map refreshToken(String accid){ + try { + DefaultHttpClient httpClient = new DefaultHttpClient(); + String url = "https://api.netease.im/nimserver/user/refreshToken.action"; + HttpPost httpPost = new HttpPost(url); + String nonce = IfishUtil.getCharAndNumr(10); + String curTime = String.valueOf((new Date()).getTime() / 1000L); + //计算CheckSum + String checkSum = CheckSumBuilder.getCheckSum(appSecret, nonce ,curTime); + //设置请求的header + httpPost.addHeader("AppKey", appKey); + httpPost.addHeader("Nonce", nonce); + httpPost.addHeader("CurTime", curTime); + httpPost.addHeader("CheckSum", checkSum); + httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); + //设置请求的参数 + List nvps = new ArrayList(); + nvps.add(new BasicNameValuePair("accid", accid)); + httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8")); + //执行请求 + HttpResponse response = httpClient.execute(httpPost); + //执行结果 + String responseStr = EntityUtils.toString(response.getEntity(), "utf-8"); + JSONObject json = JSON.parseObject(responseStr); + String code = json.getString("code"); + Map map = new HashMap(); + map.put("code", code); + //200 + if(code.equals(NeteaseEnum.status200.getKey())){ + JSONObject infoJson = json.getJSONObject("info"); + String token = infoJson.getString("token"); + map.put("token", token); + } + else if(code.equals(NeteaseEnum.status414.getKey())){ + //String desc = json.getString("desc"); + } + return map; + } catch (Exception e) { + log.error("refreshToken error message:{},{}",accid,e.toString()); + } + return null; + } + + /** + * 更新用户信息 + * @param accid + * @return + * @throws Exception + */ + @SuppressWarnings({"resource"}) + public Map updateUinfo(String accid,String name,String icon,String ex){ + try { + DefaultHttpClient httpClient = new DefaultHttpClient(); + String url = "https://api.netease.im/nimserver/user/updateUinfo.action"; + HttpPost httpPost = new HttpPost(url); + String nonce = IfishUtil.getCharAndNumr(10); + String curTime = String.valueOf((new Date()).getTime() / 1000L); + //计算CheckSum + String checkSum = CheckSumBuilder.getCheckSum(appSecret, nonce ,curTime); + //设置请求的header + httpPost.addHeader("AppKey", appKey); + httpPost.addHeader("Nonce", nonce); + httpPost.addHeader("CurTime", curTime); + httpPost.addHeader("CheckSum", checkSum); + httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); + //设置请求的参数 + List nvps = new ArrayList(); + nvps.add(new BasicNameValuePair("accid", accid)); + nvps.add(new BasicNameValuePair("name", name)); + nvps.add(new BasicNameValuePair("icon", icon)); + nvps.add(new BasicNameValuePair("ex", ex)); + httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8")); + //执行请求 + HttpResponse response = httpClient.execute(httpPost); + //执行结果 + String responseStr = EntityUtils.toString(response.getEntity(), "utf-8"); + JSONObject json = JSON.parseObject(responseStr); + String code = json.getString("code"); + Map map = new HashMap(); + map.put("code", code); + //200 + if(code.equals(NeteaseEnum.status200.getKey())){ + + } + else if(code.equals(NeteaseEnum.status414.getKey())){ + //String desc = json.getString("desc"); + } + return map; + } catch (Exception e) { + log.error("updateUinfo error message:{},{}",accid,e.toString()); + } + return null; + } + + /** + * 获取用户信息 + * @param accid + * @return + * @throws Exception + */ + @SuppressWarnings({"resource"}) + public Map getUinfos(String accids){ + try { + DefaultHttpClient httpClient = new DefaultHttpClient(); + String url = "https://api.netease.im/nimserver/user/getUinfos.action"; + HttpPost httpPost = new HttpPost(url); + String nonce = IfishUtil.getCharAndNumr(10); + String curTime = String.valueOf((new Date()).getTime() / 1000L); + //计算CheckSum + String checkSum = CheckSumBuilder.getCheckSum(appSecret, nonce ,curTime); + //设置请求的header + httpPost.addHeader("AppKey", appKey); + httpPost.addHeader("Nonce", nonce); + httpPost.addHeader("CurTime", curTime); + httpPost.addHeader("CheckSum", checkSum); + httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); + //设置请求的参数 + List nvps = new ArrayList(); + nvps.add(new BasicNameValuePair("accids", accids)); + httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8")); + //执行请求 + HttpResponse response = httpClient.execute(httpPost); + //执行结果 + String responseStr = EntityUtils.toString(response.getEntity(), "utf-8"); + JSONObject json = JSON.parseObject(responseStr); + String code = json.getString("code"); + Map map = new HashMap(); + map.put("code", code); + //200 + if(code.equals(NeteaseEnum.status200.getKey())){ + + } + else if(code.equals(NeteaseEnum.status414.getKey())){ + //String desc = json.getString("desc"); + } + return map; + } catch (Exception e) { + log.error("getUinfos error message:{},{}",accids,e.toString()); + } + return null; + } + + /** + * 发送普通消息 + * @param from + * @param to + * @param msg + * @return + */ + @SuppressWarnings({"resource"}) + public Map sendMsg(String from,String to,String msg,String ext){ + try { + DefaultHttpClient httpClient = new DefaultHttpClient(); + String url = "https://api.netease.im/nimserver/msg/sendMsg.action"; + HttpPost httpPost = new HttpPost(url); + String nonce = IfishUtil.getCharAndNumr(10); + String curTime = String.valueOf((new Date()).getTime() / 1000L); + //计算CheckSum + String checkSum = CheckSumBuilder.getCheckSum(appSecret, nonce ,curTime); + //设置请求的header + httpPost.addHeader("AppKey", appKey); + httpPost.addHeader("Nonce", nonce); + httpPost.addHeader("CurTime", curTime); + httpPost.addHeader("CheckSum", checkSum); + httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); + //设置请求的参数 + List nvps = new ArrayList(); + nvps.add(new BasicNameValuePair("from", from)); + nvps.add(new BasicNameValuePair("to", to)); + nvps.add(new BasicNameValuePair("ope", "0")); + nvps.add(new BasicNameValuePair("type", "0")); + nvps.add(new BasicNameValuePair("body", "{\"msg\":\""+msg+"\"}")); + nvps.add(new BasicNameValuePair("ext", ext)); + httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8")); + //执行请求 + HttpResponse response = httpClient.execute(httpPost); + //执行结果 + String responseStr = EntityUtils.toString(response.getEntity(), "utf-8"); + JSONObject json = JSON.parseObject(responseStr); + String code = json.getString("code"); + Map map = new HashMap(); + map.put("code", code); + //200 + if(code.equals(NeteaseEnum.status200.getKey())){ + + } + else if(code.equals(NeteaseEnum.status414.getKey())){ + //String desc = json.getString("desc"); + } + return map; + } catch (Exception e) { + log.error("refreshToken error message:{}",e.toString()); + } + return null; + } + /** + * 批量发送点对点普通消息 + * @param fromAccid + * @param toAccids + * @param msg + * @return + */ + @SuppressWarnings({"resource"}) + public Map sendBatchMsg(String fromAccid,String toAccids,String msg){ + try { + DefaultHttpClient httpClient = new DefaultHttpClient(); + String url = "https://api.netease.im/nimserver/msg/sendBatchMsg.action"; + HttpPost httpPost = new HttpPost(url); + String nonce = IfishUtil.getCharAndNumr(10); + String curTime = String.valueOf((new Date()).getTime() / 1000L); + //计算CheckSum + String checkSum = CheckSumBuilder.getCheckSum(appSecret, nonce ,curTime); + //设置请求的header + httpPost.addHeader("AppKey", appKey); + httpPost.addHeader("Nonce", nonce); + httpPost.addHeader("CurTime", curTime); + httpPost.addHeader("CheckSum", checkSum); + httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); + //设置请求的参数 + List nvps = new ArrayList(); + nvps.add(new BasicNameValuePair("fromAccid", fromAccid)); + nvps.add(new BasicNameValuePair("toAccids", toAccids)); + nvps.add(new BasicNameValuePair("type", "0")); + nvps.add(new BasicNameValuePair("body", "{\"msg\":\""+msg+"\"}")); + httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8")); + //执行请求 + HttpResponse response = httpClient.execute(httpPost); + //执行结果 + String responseStr = EntityUtils.toString(response.getEntity(), "utf-8"); + JSONObject json = JSON.parseObject(responseStr); + String code = json.getString("code"); + Map map = new HashMap(); + map.put("code", code); + //200 + if(code.equals(NeteaseEnum.status200.getKey())){ + + } + else if(code.equals(NeteaseEnum.status414.getKey())){ + //String desc = json.getString("desc"); + } + return map; + } catch (Exception e) { + log.error("refreshToken error message:{}",e.toString()); + } + return null; + } + +} diff --git a/src/main/java/com/ifish/serializer/CustomDateSerializer.java b/src/main/java/com/ifish/serializer/CustomDateSerializer.java new file mode 100644 index 0000000..2b7d576 --- /dev/null +++ b/src/main/java/com/ifish/serializer/CustomDateSerializer.java @@ -0,0 +1,21 @@ +package com.ifish.serializer; + +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; + + +public class CustomDateSerializer extends JsonSerializer { + + @Override + public void serialize(Date value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + String formattedDate = formatter.format(value); + jgen.writeString(formattedDate); + } +} diff --git a/src/main/java/com/ifish/serializer/DateSerializer.java b/src/main/java/com/ifish/serializer/DateSerializer.java new file mode 100644 index 0000000..5270e5e --- /dev/null +++ b/src/main/java/com/ifish/serializer/DateSerializer.java @@ -0,0 +1,21 @@ +package com.ifish.serializer; + +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; + + +public class DateSerializer extends JsonSerializer { + + @Override + public void serialize(Date value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); + String formattedDate = formatter.format(value); + jgen.writeString(formattedDate); + } +} diff --git a/src/main/java/com/ifish/service/AdInfoService.java b/src/main/java/com/ifish/service/AdInfoService.java new file mode 100644 index 0000000..b663b46 --- /dev/null +++ b/src/main/java/com/ifish/service/AdInfoService.java @@ -0,0 +1,21 @@ +package com.ifish.service; + +import com.ifish.dto.JsonResult; +import com.ifish.enums.AdTypeEnum; + +public interface AdInfoService { + + /** + * 更具类型获取广告位信息 + * @param adTypeEnum + * @return + */ + public JsonResult getAdInfosByType(AdTypeEnum adTypeEnum); + + /** + * 获取广告信息表最大ID + * @return + */ + public JsonResult getMaxInfo(); + +} diff --git a/src/main/java/com/ifish/service/AsyncTaskService.java b/src/main/java/com/ifish/service/AsyncTaskService.java new file mode 100644 index 0000000..1d823e3 --- /dev/null +++ b/src/main/java/com/ifish/service/AsyncTaskService.java @@ -0,0 +1,29 @@ +package com.ifish.service; + +/** + * 异步执行任务service + * @author Administrator + * + */ +public interface AsyncTaskService { + + /** + * 给所有用户发送云信消息 + * @param userId + */ + public void sendMsgToAll(Integer userId); + + /** + * 给商家和用户发送消息 + * @param userId 用户ID + * @param shopsUserId 商家用户ID + * @param nickName 用户昵称 + */ + public void sendMsgToShopsUser(Integer userId,Integer shopsUserId,String nickName); + /** + * 新增用户动态 + * @param userId + * @param activityType + */ + public void saveUserActivity(Integer userId,String activityType); +} diff --git a/src/main/java/com/ifish/service/BaseService.java b/src/main/java/com/ifish/service/BaseService.java new file mode 100644 index 0000000..4a390e9 --- /dev/null +++ b/src/main/java/com/ifish/service/BaseService.java @@ -0,0 +1,138 @@ +package com.ifish.service; + +import org.springframework.web.multipart.MultipartFile; + +import com.ifish.entity.CameraUserId; +import com.ifish.entity.Device; +import com.ifish.entity.DeviceUser; +import com.ifish.entity.QuestionsFeedback; +import com.ifish.entity.ShopsInfo; +import com.ifish.entity.User; + +/** + * @ClassName: BaseService + * @Description: TODO + * @author ggw + * + */ +public interface BaseService { + + //获取手机验证码 + @Deprecated + public Object getSecurityCode(String phoneNumber,String sendType); + + //发送手机验证码 + @Deprecated + public Object sendSecurityCode(String phoneNumber,String smsSign,String smsTemplate); + + //更新用户信息 + @Deprecated + public Object updateInfo(User user); + + //原密码验证后更新用户密码 + public Object updatePwd(User user,String oldPassword); + + //短信验证后重置密码 + public Object resetPassword(User user); + + //登录验证 + @Deprecated + public Object login(User user); + + //保存用户 + @Deprecated + public Object save(User user); + + //根据ID查用户 + public User findById(Integer userId); + + //绑定设备 + @Deprecated + public Object bindDevice(User user,String madAddress); + + //绑定摄像头 + public Object bindCamera(Integer userId,String cameraId); + + //激活摄像头 + public Object activeCamera(String activeCode,String cameraId); + + //设备和摄像头关联 + public Object deviceBindCamera1(Integer userId,Integer deviceId,String cameraId); + + //设备和摄像头关联 + public Object deviceBindCamera(Integer deviceId,String cameraId); + + //获取单个设备信息 + public Object getSingleDeviceInf(DeviceUser deviceUser); + + //修改设备信息 + public Object update(DeviceUser deviceUser); + + //修改摄像头信息 + public Object update(CameraUserId id,String showName); + + //修改设备信息 + public Object updateCustomIcon(DeviceUser deviceUser); + + //删除绑定的设备 + public Object deleteDeviceUser(DeviceUser deviceUser); + + //删除绑定的摄像头 + public Object deleteCameraUser(Integer userId,String cameraId); + + //删除设备和摄像头关联 + public Object deleteDeviceCamera(Integer deviceId,String cameraId); + + //扫一扫分享设备 + @Deprecated + public Object shareDeviceByQrCode(Integer userId,Integer deviceId); + + //获取最新版本信息 + public Object getNewestVersionInf(String phoneType); + + //上传头像 + @Deprecated + public Object uploadFile(User user,MultipartFile fileUpload); + + //新增问题反馈 + @Deprecated + public Object saveQuestionsFeedback(QuestionsFeedback feedback); + + //获取换水提醒信息 + public Object getRemindWaterInf(Integer deviceId); + + //设置换水提醒 + public Object setRemindWaterInf(Device device); + + //保存商家信息 + public Object saveShopsInfo(ShopsInfo shopsInfo,MultipartFile file1,MultipartFile file2,MultipartFile file3); + + //审核失败后修改商家信息 + public Object updateShopsInfo(ShopsInfo shopsInfo,MultipartFile file1,MultipartFile file2,MultipartFile file3); + + //审核成功后修改商家信息 + public Object updateBaseShopsInfo(ShopsInfo shopsInfo,MultipartFile file4); + + //获取审核状态 + public Object getShopsStatus(Integer shopsId); + + //选择商家 + public Object choiceShops(String phoneNumber,Integer userId); + + //关闭看护摄像头 + public Object onoffLook(String cameraId,Integer userId,String status); + + //生成看护报告 + public Object lookReport(Integer userId,String index1,String index2,String index3,String suggestion,MultipartFile fileUpload); + + //发送看护报告给用户 + @Deprecated + public Object sendReport(Integer userId,String fileName); + + //发送看护报告给用户 + public Object sendReport(Integer userId,String fileName,Integer reportId); + + //发送看护报告给用户 + public Object getLookReportById(Integer reportId); + +} diff --git a/src/main/java/com/ifish/service/CacheService.java b/src/main/java/com/ifish/service/CacheService.java new file mode 100644 index 0000000..626ad0a --- /dev/null +++ b/src/main/java/com/ifish/service/CacheService.java @@ -0,0 +1,85 @@ +package com.ifish.service; + +import java.util.List; + +import com.alibaba.fastjson.JSONObject; +import com.ifish.entity.AdInfo; +import com.ifish.entity.GoldTask; +import com.ifish.entity.Grade; +import com.ifish.entity.GradeTask; +import com.ifish.entity.HardwareType; +import com.ifish.entity.IfishGoods; +import com.ifish.entity.VenderList; + +/** + * @ClassName: CacheService + * @Description: TODO + * @author ggw + * + */ +public interface CacheService { + + /** + * 获取资讯信息 + * @return + */ + public List getInformation(); + + /** + * 获取等级信息 + * @return + */ + public List getGradeList(); + + /** + * 获取等级规则 + * @return + */ + public GradeTask getGradeRule(String id); + + /** + * 获取金币规则 + * @return + */ + public GoldTask getGoldRule(String id); + + /** + * 获取等级规则list + * @return + */ + public List getGradeRuleList(); + + /** + * 获取金币规则list + * @return + */ + public List getGoldRuleList(); + + /** + * 根据ID查询电子厂 + * @param key + * @return + */ + public VenderList findVenderListById(String id); + + /** + * 根据ID获取硬件类型 + * @param key + * @return + */ + public HardwareType findHardwareTypeById(String id); + + /** + * 广告位信息 + * @param adType + * @return + */ + public List getAdInfoList(int adType); + + /** + * 商品信息 + * @param goodsPlace + * @return + */ + public List getIfishGoodsList(int goodsPlace); +} diff --git a/src/main/java/com/ifish/service/CameraService.java b/src/main/java/com/ifish/service/CameraService.java new file mode 100644 index 0000000..99ccee3 --- /dev/null +++ b/src/main/java/com/ifish/service/CameraService.java @@ -0,0 +1,10 @@ +package com.ifish.service; + + +/** + * @author guogw + * + */ +public interface CameraService { + +} diff --git a/src/main/java/com/ifish/service/CouponService.java b/src/main/java/com/ifish/service/CouponService.java new file mode 100644 index 0000000..a4e84e2 --- /dev/null +++ b/src/main/java/com/ifish/service/CouponService.java @@ -0,0 +1,33 @@ +package com.ifish.service; + +import com.ifish.dto.JsonResult; +import com.ifish.dto.PageingDto; +import com.ifish.validator.PageParam; + +/** + * 优惠券 + * @author Administrator + * + */ +public interface CouponService { + + /** + * 获取所有可兑换优惠券 + * @return + */ + JsonResult getAllValidCoupon(); + /** + * 兑换优惠券 + * @param userId + * @param couponId + * @return + */ + JsonResult exchangeCoupon(Integer userId,Integer couponId); + /** + * 分页获取兑换记录 + * @param param + * @return + */ + PageingDto getCouponRecordByPage(PageParam param); + +} diff --git a/src/main/java/com/ifish/service/GoldService.java b/src/main/java/com/ifish/service/GoldService.java new file mode 100644 index 0000000..5bb5040 --- /dev/null +++ b/src/main/java/com/ifish/service/GoldService.java @@ -0,0 +1,63 @@ +package com.ifish.service; + +import java.math.BigDecimal; + +import com.ifish.dto.JsonResult; +import com.ifish.dto.PageingDto; +import com.ifish.dto.UserAssetDto; +import com.ifish.entity.UserAsset; +import com.ifish.validator.AddValueParam; +import com.ifish.validator.PageParam; + +public interface GoldService { + + /** + * 返回信息封装 + * @param userAsset + * @param addValue + * @param today + * @param yesterday + * @return + */ + public UserAssetDto getUserAssetInfo(UserAsset userAsset,BigDecimal addValue,String today,String yesterday); + /** + * 增加金币 + * @param addValueParam + * @return + */ + public JsonResult addGoldValue(AddValueParam addValueParam); + /** + * 签到 + * @return + */ + public JsonResult signin(Integer userId); + + /** + * 砸金蛋 + * @param userId + * @return + */ + public JsonResult hitGoldenEgg(Integer userId); + + /** + * 金币获取记录 + * @param pageParam + * @return + */ + public PageingDto getGoldGetRecordByPage(PageParam pageParam); + + /** + * 今天消耗记录 + * @param pageParam + * @return + */ + public PageingDto getGoldExpendRecordByPage(PageParam pageParam); + /** + * 爱鱼看看打赏 + * @param userId 打赏人用户ID + * @param userId2 被打赏人用户ID + * @return + */ + public JsonResult liveRoomReward(Integer userId,Integer userId2); + +} diff --git a/src/main/java/com/ifish/service/GradeService.java b/src/main/java/com/ifish/service/GradeService.java new file mode 100644 index 0000000..6d99cde --- /dev/null +++ b/src/main/java/com/ifish/service/GradeService.java @@ -0,0 +1,46 @@ +package com.ifish.service; + +import com.ifish.dto.JsonResult; +import com.ifish.dto.PageingDto; +import com.ifish.dto.UserAssetDto; +import com.ifish.entity.GradeTask; +import com.ifish.entity.UserAsset; +import com.ifish.validator.AddValueParam; +import com.ifish.validator.PageParam; + + +/** + * 等级 + * @author Administrator + * + */ +public interface GradeService { + + /** + * 是否加过经验 + * @param userAsset + * @param gradeRule + * @return + */ + public UserAssetDto getGradeControl(UserAsset userAsset, GradeTask gradeRule, boolean isLogin); + /** + * 增加经验值 + * @param addValueParam + * @return + */ + public JsonResult addGradeValue(AddValueParam addValueParam); + + /** + * @param userId + * @return + */ + public JsonResult getGradeRuleInfo(Integer userId); + + /** + * 获取经验记录 + * @param pageParam + * @return + */ + public PageingDto getGradeRecordByPage(PageParam pageParam); + +} diff --git a/src/main/java/com/ifish/service/IfishDoctorService.java b/src/main/java/com/ifish/service/IfishDoctorService.java new file mode 100644 index 0000000..ddb6bf6 --- /dev/null +++ b/src/main/java/com/ifish/service/IfishDoctorService.java @@ -0,0 +1,25 @@ +package com.ifish.service; + +import com.ifish.dto.JsonResult; +import com.ifish.entity.IfishDoctor; + + +/** + * @author guogw + * + */ +public interface IfishDoctorService { + + /** + * 提交问题 + * @param ifishDoctor + * @return + */ + public Object saveIfishDoctor(IfishDoctor ifishDoctor); + + /** + * 金币打赏提交问题 + */ + public JsonResult payTourSubmitQuestion(IfishDoctor ifishDoctor,String payTour); + +} diff --git a/src/main/java/com/ifish/service/IfishGoodsService.java b/src/main/java/com/ifish/service/IfishGoodsService.java new file mode 100644 index 0000000..232f708 --- /dev/null +++ b/src/main/java/com/ifish/service/IfishGoodsService.java @@ -0,0 +1,26 @@ +package com.ifish.service; + +import com.ifish.dto.JsonResult; +import com.ifish.enums.IfishShopPlaceEnum; + +/** + * 商铺管理service + * @author Administrator + * + */ +public interface IfishGoodsService { + + /** + * 根据展示位置获取商品 + * @param shopPlaceEnum + * @return + */ + public JsonResult getIfishGoodsByGoodsPlace(IfishShopPlaceEnum shopPlaceEnum); + + /** + * 增加点击数 + * @param goodsId + */ + public JsonResult addClickNum(Integer goodsId); + +} diff --git a/src/main/java/com/ifish/service/InformationService.java b/src/main/java/com/ifish/service/InformationService.java new file mode 100644 index 0000000..fb8c930 --- /dev/null +++ b/src/main/java/com/ifish/service/InformationService.java @@ -0,0 +1,55 @@ +package com.ifish.service; + +import java.util.Map; + +import com.ifish.dto.JsonResult; +import com.ifish.dto.PageingDto; +import com.ifish.entity.Comment; +import com.ifish.entity.Ueditor; +import com.ifish.validator.PageParam; + + +/** + * @author guogw + * + */ +public interface InformationService { + + /** + * 保存评论 + * @param comment + * @return + */ + public Object saveComment(Comment comment); + + /** + * 查询资讯信息 + * @param ueditorId + * @return + */ + public Ueditor findUeditorById(Integer ueditorId); + + /** + * 分页获取评论 + * @param ueditorId + * @param firstResult + * @param pageSize + * @return + */ + public Map findCommentsByUeditorId(Integer ueditorId,Integer firstResult,Integer pageSize); + + /** + * 分页获取资讯 + * @param pageParam + * @return + */ + public PageingDto getInformationsByPage(PageParam pageParam); + + + /** + * 加点击数 + * @param infoId + * @return + */ + public JsonResult addClickNum(Integer infoId); +} diff --git a/src/main/java/com/ifish/service/LiveRoomService.java b/src/main/java/com/ifish/service/LiveRoomService.java new file mode 100644 index 0000000..5583c3f --- /dev/null +++ b/src/main/java/com/ifish/service/LiveRoomService.java @@ -0,0 +1,74 @@ +package com.ifish.service; + +import java.util.List; + +import com.alibaba.fastjson.JSONObject; +import com.ifish.dto.JsonResult; +import com.ifish.dto.PageingDto; +import com.ifish.entity.LiveBanner; +import com.ifish.entity.LiveMessage; +import com.ifish.validator.LiveRoomParam; +import com.ifish.validator.PageParam; + +/** + * @author guogw + * + */ +public interface LiveRoomService { + + /** + * 新增直播间 + * @param liveRoomParam + * @return + */ + public JSONObject addLiveRoom(LiveRoomParam liveRoomParam); + + //修改直播信息 + public JsonResult updateLiveRoom(Integer roomId,LiveRoomParam liveRoomParam); + + //人气值 + public Object popularityValue(Integer roomId,Integer userId); + + //获取直播间信息 + public Object getLiveRoomInfo(Integer userId); + + //直播间列表 + public Object getLiveRoomsByPage(Integer firstResult,Integer pageSize,Integer userId,String orders); + + //banner图信息 + public List getLiveBanners(); + + //提交留言 + public Object leaveMessage(LiveMessage liveMessage); + + //直播间留言列表 + public Object getLiveMessageByPage(Integer firstResult,Integer pageSize,Integer roomId); + + /** + * 按时间倒序分页获取直播间信息 + * @param pageParam + * @return + */ + public PageingDto getLiveRoomsByTime(PageParam pageParam); + /** + * 按人气值倒序分页获取直播间信息 + * @param pageParam + * @return + */ + public PageingDto getLiveRoomsByPopularityValue(PageParam pageParam); + /** + * 按推荐顺序分页获取直播间信息 + * @param pageParam + * @return + */ + public PageingDto getLiveRoomsByTuijian(PageParam pageParam); + + /** + * 直播间点赞 + * @param roomId + * @param userId + * @return + */ + public JsonResult liveRoomsZan(Integer roomId,Integer userId); + +} diff --git a/src/main/java/com/ifish/service/PageListService.java b/src/main/java/com/ifish/service/PageListService.java new file mode 100644 index 0000000..9c09644 --- /dev/null +++ b/src/main/java/com/ifish/service/PageListService.java @@ -0,0 +1,22 @@ +package com.ifish.service; + +import com.ifish.dto.ShopsLookUserDto; +import com.ifish.entity.PushList; +import com.ifish.hibernate.Pagination; + + +/** + * @ClassName: PageListService + * @Description: TODO + * @author ggw + * + */ +public interface PageListService { + + //推送分页数据 + public Pagination getPushListByPage(Integer pushId,Integer userId,Integer firstResult,Integer pageSize); + + //看护列表 + public Pagination getLookListByPage(Integer shopsUserId,Integer firstResult,Integer pageSize); + +} diff --git a/src/main/java/com/ifish/service/ShopsService.java b/src/main/java/com/ifish/service/ShopsService.java new file mode 100644 index 0000000..59a50a2 --- /dev/null +++ b/src/main/java/com/ifish/service/ShopsService.java @@ -0,0 +1,71 @@ +package com.ifish.service; + +import org.springframework.web.multipart.MultipartFile; + +import com.ifish.dto.JsonResult; +import com.ifish.dto.PageingDto; +import com.ifish.entity.ShopsInfo; +import com.ifish.validator.PageParam; +import com.ifish.validator.ShopsUserInfoParam; + + +/** + * @author guogw + * + */ +public interface ShopsService { + + //保存商家信息 + public Object saveShopsInfo(ShopsInfo shopsInfo,MultipartFile file1,MultipartFile file2,MultipartFile file3); + + //审核失败后修改商家信息 + public Object updateShopsInfo(ShopsInfo shopsInfo,MultipartFile file1,MultipartFile file2,MultipartFile file3); + + //审核成功后修改商家信息 + public Object updateBaseShopsInfo(ShopsInfo shopsInfo,MultipartFile file4); + + //获取审核状态 + public Object getShopsStatus(Integer shopsId); + + //看护商家列表 + public Object getShopsInfoByPage(Integer userId,Integer firstResult,Integer pageSize); + + //选择看护商家 + public Object choiceShops(Integer shopsUserId,Integer userId); + + //解除看护关系 + public Object removeLook(Integer userId); + + /** + * 获取商家会员信息 + * @param userId + * @param shopsId + * @return + */ + public JsonResult getShopsUserInfoById(Integer userId,Integer shopsId); + + /** + * 更新商家会员信息 + * @param userId + * @param shopsId + * @param param + * @return + */ + public JsonResult updateShopsUserInfo(Integer userId,Integer shopsId,ShopsUserInfoParam param); + + /** + * 分页获取商家会员信息 + * @param shopsId + * @param pageParam + * @return + */ + public PageingDto getShopsUserInfoByPage(Integer shopsId,PageParam pageParam); + + /** + * 成为商家用户 + * @param userId + * @param shopsId + * @return + */ + public JsonResult becomeShopsUser(Integer userId,Integer shopsId); +} diff --git a/src/main/java/com/ifish/service/UserActivityService.java b/src/main/java/com/ifish/service/UserActivityService.java new file mode 100644 index 0000000..9093fe2 --- /dev/null +++ b/src/main/java/com/ifish/service/UserActivityService.java @@ -0,0 +1,22 @@ +package com.ifish.service; + +import com.ifish.dto.PageingDto; +import com.ifish.validator.PageParam; + +/** + * 用户动态 + * + * @author Administrator + * + */ +public interface UserActivityService { + + /** + * 分页获取动态 + * + * @param pageSize + * @param firstResult + * @return + */ + PageingDto getUserActivityByPage(Integer pageSize, Integer firstResult); +} diff --git a/src/main/java/com/ifish/service/UserService.java b/src/main/java/com/ifish/service/UserService.java new file mode 100644 index 0000000..8644488 --- /dev/null +++ b/src/main/java/com/ifish/service/UserService.java @@ -0,0 +1,83 @@ +package com.ifish.service; + +import org.springframework.web.multipart.MultipartFile; + +import com.ifish.dto.JsonResult; +import com.ifish.entity.User; +import com.ifish.validator.LoginParam; +import com.ifish.validator.RegisterParam; + +/** + * @ClassName: UserService + * @Description: TODO + * @author ggw + * + */ +public interface UserService { + + /** + * 获取手机验证码 + * @param phoneNumber + * @param sendType + * @return + */ + public JsonResult getVerificateCode(String phoneNumber,String sendType); + + /** + * 登录 + * @param loginParam + * @return + */ + @Deprecated + public JsonResult login(LoginParam loginParam); + + /** + * 优化后登录验证 + * @param loginParam + * @return + */ + public JsonResult loginValidate(LoginParam loginParam); + + /** + * 更多用户数据信息 + * @param userId + * @return + */ + public JsonResult moreUserData(Integer userId); + /** + * 绑定设备 + * @param userId + * @param macAddress + * @return + */ + public JsonResult bindDevice(Integer userId,String macAddress); + /** + * 扫一扫分享设备 + * @param userId + * @param deviceId + * @return + */ + public JsonResult shareDevice(Integer userId,Integer deviceId); + /** + * 注册 + * @param registerParam + * @return + */ + public JsonResult register(RegisterParam registerParam); + + /** + * 修改用户信息 + * @param user + * @return + */ + public JsonResult updateInfo(User user); + + /** + * 上传头像 + * @param userId + * @param fileUpload + * @return + */ + public JsonResult uploadUserImg(Integer userId,MultipartFile fileUpload); + +} diff --git a/src/main/java/com/ifish/serviceImpl/AdInfoServiceImpl.java b/src/main/java/com/ifish/serviceImpl/AdInfoServiceImpl.java new file mode 100644 index 0000000..e7c4ef0 --- /dev/null +++ b/src/main/java/com/ifish/serviceImpl/AdInfoServiceImpl.java @@ -0,0 +1,59 @@ +package com.ifish.serviceImpl; + +import java.util.ArrayList; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.ifish.dto.AdInfoDto; +import com.ifish.dto.JsonResult; +import com.ifish.entity.AdInfo; +import com.ifish.enums.AdTypeEnum; +import com.ifish.enums.SubDirectoryEnum; +import com.ifish.mapper.Tbl_Ad_Info_Mapper; +import com.ifish.service.AdInfoService; +import com.ifish.service.CacheService; +import com.ifish.util.IfishFilePath; +import com.ifish.util.ResultUtil; + +/** + * 广告位信息 + * + * @author Administrator + * + */ +@Service +@Transactional +public class AdInfoServiceImpl implements AdInfoService { + + @Autowired + private CacheService cacheService; + + @Autowired + private Tbl_Ad_Info_Mapper tbl_Ad_Info_Mapper; + + /** + * 根据类型获取广告信息 + */ + @Override + public JsonResult getAdInfosByType(AdTypeEnum adTypeEnum) { + //根据类型查询广告 + List adInfos = cacheService.getAdInfoList(adTypeEnum.getKey()); + //封装广告信息并返回 + List dtoList = new ArrayList(); + for (AdInfo adInfo : adInfos) { + AdInfoDto dto = new AdInfoDto(adInfo.getAdId(), adInfo.getAdType(), IfishFilePath.getPath(SubDirectoryEnum.adInfo, adInfo.getAdImage()), adInfo.getAdLink(), adInfo.getOrderNum()); + dtoList.add(dto); + } + return ResultUtil.success(dtoList); + } + + @Override + public JsonResult getMaxInfo() { + Integer ad_id = tbl_Ad_Info_Mapper.getMaxInfo(); + return ResultUtil.success(ad_id); + } + +} diff --git a/src/main/java/com/ifish/serviceImpl/AsyncTaskServiceImpl.java b/src/main/java/com/ifish/serviceImpl/AsyncTaskServiceImpl.java new file mode 100644 index 0000000..d86852c --- /dev/null +++ b/src/main/java/com/ifish/serviceImpl/AsyncTaskServiceImpl.java @@ -0,0 +1,100 @@ +package com.ifish.serviceImpl; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.alibaba.fastjson.JSONArray; +import com.ifish.dao.UserActivityDao; +import com.ifish.dao.UserDao; +import com.ifish.entity.User; +import com.ifish.entity.UserActivity; +import com.ifish.enums.ActivityTypeEnum; +import com.ifish.netease.NeteaseIM; +import com.ifish.service.AsyncTaskService; +import com.ifish.util.IfishFilePath; +import java.util.Date; + +/** + * 异步执行任务service + * + * @author Administrator + * + */ +@Service +@Async +@Transactional +public class AsyncTaskServiceImpl implements AsyncTaskService { + + @Autowired + private UserDao userDao; + @Autowired + private NeteaseIM neteaseIM; + @Autowired + private UserActivityDao userActivityDao; + + /** + * 分享爱鱼看看后给所有用户发送云信消息 + */ + @Override + public void sendMsgToAll(Integer userId) { + Integer firstResult = 0; + Integer maxResults = 500; + User user = userDao.get(userId); + if (user != null) { + String content = user.getNickName() + "刚在爱鱼看看分享了TA的爱鱼,快去瞅瞅~"; + while (true) { + List list = userDao.getUserIds(userId, firstResult, maxResults); + Integer size = list.size(); + if (size <= 0) { + break; + } else { + firstResult += size; + //批量发送 + neteaseIM.sendBatchMsg(IfishFilePath.ifish_account, JSONArray.toJSONString(list), content); + //云信接口有访问限制,延迟600毫秒发送 + try { + Thread.sleep(600); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + } + } + + /** + * 给商家和用户发送消息 + */ + @Override + public void sendMsgToShopsUser(Integer userId, Integer shopsUserId, String nickName) { + //爱鱼奇消息主手给商家发送消息 + String msg1 = "恭喜你," + nickName + "已成为你的会员,快去会员管理中看看吧~"; + neteaseIM.sendMsg(IfishFilePath.ifish_account, shopsUserId.toString(), msg1, null); + //商家发送消息给用户 + String msg2 = "恭喜你成为本店会员,有什么疑问,都可以随时联系我。"; + neteaseIM.sendMsg(shopsUserId.toString(), userId.toString(), msg2, null); + } + + /** + * 新增用户动态 + * + * @param userId + * @param activityType + */ + @Override + public void saveUserActivity(Integer userId, String activityType) { + //是否有这个动态类型 + if (ActivityTypeEnum.getValueByKey(activityType)) { + UserActivity activity = new UserActivity(); + activity.setUserId(userId); + activity.setActivityType(activityType); + activity.setCreateTime(new Date()); + userActivityDao.save(activity); + } + } + +} diff --git a/src/main/java/com/ifish/serviceImpl/BaseServiceImpl.java b/src/main/java/com/ifish/serviceImpl/BaseServiceImpl.java new file mode 100644 index 0000000..cefec68 --- /dev/null +++ b/src/main/java/com/ifish/serviceImpl/BaseServiceImpl.java @@ -0,0 +1,1544 @@ +package com.ifish.serviceImpl; + +import java.io.File; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Random; + +import org.hibernate.criterion.Restrictions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import com.alibaba.fastjson.JSON; +import com.ifish.dao.CameraActiveDao; +import com.ifish.dao.CameraDao; +import com.ifish.dao.CameraUserDao; +import com.ifish.dao.DeviceCameraDao; +import com.ifish.dao.DeviceDao; +import com.ifish.dao.DeviceUserDao; +import com.ifish.dao.HardwareTypeDao; +import com.ifish.dao.LookReportDao; +import com.ifish.dao.PushListDao; +import com.ifish.dao.QuestionsFeedbackDao; +import com.ifish.dao.ShopsInfoDao; +import com.ifish.dao.UserDao; +import com.ifish.dao.VenderListDao; +import com.ifish.dao.VersionDao; +import com.ifish.entity.Camera; +import com.ifish.entity.CameraActive; +import com.ifish.entity.CameraUser; +import com.ifish.entity.CameraUserId; +import com.ifish.entity.Device; +import com.ifish.entity.DeviceCamera; +import com.ifish.entity.DeviceCameraId; +import com.ifish.entity.DeviceUser; +import com.ifish.entity.HardwareType; +import com.ifish.entity.LookReport; +import com.ifish.entity.DeviceUserId; +import com.ifish.entity.PushList; +import com.ifish.entity.QuestionsFeedback; +import com.ifish.entity.ShopsInfo; +import com.ifish.entity.User; +import com.ifish.entity.VenderList; +import com.ifish.entity.Version; +import com.ifish.enums.BooleanEnum; +import com.ifish.enums.GwellEnum; +import com.ifish.enums.Index1Enum; +import com.ifish.enums.Index2Enum; +import com.ifish.enums.Index3Enum; +import com.ifish.enums.NeteaseEnum; +import com.ifish.enums.PushTypeEnum; +import com.ifish.enums.ResultEnum; +import com.ifish.enums.SendTypeEnum; +import com.ifish.enums.ShopsStatusEnum; +import com.ifish.enums.SmsSignEnum; +import com.ifish.enums.SmsTemplateEnum; +import com.ifish.enums.SubDirectoryEnum; +import com.ifish.enums.UserTypeEnum; +import com.ifish.gwell.GwellApi; +import com.ifish.jpush.SmsNumSend; +import com.ifish.mail.Mail; +import com.ifish.netease.NeteaseIM; +import com.ifish.service.BaseService; +import com.ifish.util.IfishFilePath; +import com.ifish.util.IfishUtil; + +/** + * @ClassName: BaseServiceImpl + * @Description: TODO + * @author ggw + * + */ +@Service +@Transactional +public class BaseServiceImpl implements BaseService { + + @Autowired + private NeteaseIM neteaseIM; + @Autowired + private SmsNumSend smsNumSend; + @Autowired + private UserDao userDao; + @Autowired + private CameraDao cameraDao; + @Autowired + private DeviceDao deviceDao; + @Autowired + private VersionDao versionDao; + @Autowired + private PushListDao pushListDao; + @Autowired + private LookReportDao lookReportDao; + @Autowired + private ShopsInfoDao shopsInfoDao; + @Autowired + private DeviceUserDao deviceUserDao; + @Autowired + private CameraActiveDao cameraActiveDao; + @Autowired + private VenderListDao venderListDao; + @Autowired + private CameraUserDao cameraUserDao; + @Autowired + private DeviceCameraDao deviceCameraDao; + @Autowired + private HardwareTypeDao hardwareTypeDao; + @Autowired + private QuestionsFeedbackDao questionsFeedbackDao; + + /** + * 获取验证码 + */ + @Override + public Object getSecurityCode(String phoneNumber, String sendType) { + User user = this.userDao.findUniqueByProperty(Restrictions.eq("phoneNumber", phoneNumber)); + //注册 + if (sendType.equals(SendTypeEnum.register.getKey())) { + if (user != null) { + //手机号注册过,发送错误码 + return IfishUtil.returnJson(ResultEnum.warn201.getKey(), ""); + } else { + //手机未被注册,获取验证码 + return sendSecurityCode(phoneNumber, SmsSignEnum.sign4.getValue(), SmsTemplateEnum.SMS_720018.getKey()); + } + } //找回密码 + else if (sendType.equals(SendTypeEnum.findpwd.getKey())) { + if (user != null) { + //手机号存在,获取验证码 + return sendSecurityCode(phoneNumber, SmsSignEnum.sign5.getValue(), SmsTemplateEnum.SMS_720021.getKey()); + } else { + //手机号不存在,发送错误码 + return IfishUtil.returnJson(ResultEnum.warn202.getKey(), ""); + } + } else { + //未知操作,返回错误码 + return IfishUtil.returnJson(ResultEnum.warn203.getKey(), ""); + } + } + + /** + * 发送验证码 + */ + @Override + public Object sendSecurityCode(String phoneNumber, String smsSign, String smsTemplate) { + Integer code = (int) (Math.random() * 9000 + 1000); + boolean bln = smsNumSend.sendSmsNum(phoneNumber, code.toString(), smsSign, smsTemplate); + //发送验证码 + if (bln) { + return IfishUtil.returnJson(ResultEnum.success.getKey(), code.toString()); + } else { + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + } + + /** + * 登录 + */ + @Override + public Object login(User user) { + //验证用户是否存在,不存在返回错误信息 + User tmpUser = this.userDao.findUniqueByProperty(Restrictions.eq("phoneNumber", user.getPhoneNumber())); + if (tmpUser == null) { + //用户不存在 + return IfishUtil.returnJson(ResultEnum.warn202.getKey(), ""); + } else if (tmpUser.getUserPassword().equals(user.getUserPassword())) { + //是否更新 + boolean isUpdate = false; + //未注册技威,则注册获取code1,code2 + if (tmpUser.getIsRegisterGwell().equals(BooleanEnum.NO.getKey())) { + //注册技威 + Map map = GwellApi.Register(user.getPhoneNumber()); + String result = map.get("result"); + if (result != null) { + //注册成功 + if (result.equals(GwellEnum.success.getKey())) { + String P2PVerifyCode1 = map.get("P2PVerifyCode1"); + String P2PVerifyCode2 = map.get("P2PVerifyCode2"); + String gwellUserID = map.get("UserID"); + tmpUser.setIsRegisterGwell(BooleanEnum.YES.getKey()); + tmpUser.setP2PVerifyCode1(P2PVerifyCode1); + tmpUser.setP2PVerifyCode2(P2PVerifyCode2); + tmpUser.setGwellUserID(gwellUserID); + isUpdate = true; + } //已经注册过 + else if (GwellEnum.repeat.getKey().equals(result)) { + tmpUser.setIsRegisterGwell(BooleanEnum.YES.getKey()); + isUpdate = true; + } + } + } //已经注册过技威 + else if (tmpUser.getIsRegisterGwell().equals(BooleanEnum.YES.getKey())) { + //code1和code2为空则重新登陆获取 + String P2PVerifyCode1 = tmpUser.getP2PVerifyCode1(); + String P2PVerifyCode2 = tmpUser.getP2PVerifyCode2(); + String gwellUserID = tmpUser.getGwellUserID(); + if (P2PVerifyCode1.equals("") || P2PVerifyCode2.equals("") || gwellUserID.equals("")) { + Map map = GwellApi.Login(user.getPhoneNumber()); + String result = map.get("result"); + //登陆成功 + if (result != null && result.equals(GwellEnum.success.getKey())) { + P2PVerifyCode1 = map.get("P2PVerifyCode1"); + P2PVerifyCode2 = map.get("P2PVerifyCode2"); + gwellUserID = map.get("UserID"); + tmpUser.setP2PVerifyCode1(P2PVerifyCode1); + tmpUser.setP2PVerifyCode2(P2PVerifyCode2); + tmpUser.setGwellUserID(gwellUserID); + isUpdate = true; + } + } + } + //未注册云信 + if (tmpUser.getIsRegisterNetease().equals(BooleanEnum.NO.getKey())) { + //注册云信 + Map map = neteaseIM.createAccid(tmpUser.getUserId().toString(), tmpUser.getNickName(), IfishFilePath.getPath(SubDirectoryEnum.headImage, tmpUser.getUserImg()), ""); + if (map != null) { + String code = map.get("code"); + if (code.equals(NeteaseEnum.status200.getKey())) { + tmpUser.setIsRegisterNetease(BooleanEnum.YES.getKey()); + tmpUser.setNeteaseToken(map.get("token")); + isUpdate = true; + //发送云信消息 + User imUser = this.userDao.findUniqueByProperty(Restrictions.eq("phoneNumber", IfishFilePath.netease_phone)); + if (imUser != null) { + neteaseIM.sendMsg(imUser.getUserId().toString(), tmpUser.getUserId().toString(), "感谢您使用爱鱼奇,连接智能设备请查看下方说明书,内含操作视频:http://u.eqxiu.com/s/KmmVl87l \n摄像头售后:021-54131006\n睿芯插排售后:15757401229\n绚多插排售后:18857689069\n松诺插排售后:13392205468", ""); + } + } else if (code.equals(NeteaseEnum.status414.getKey())) { + tmpUser.setIsRegisterNetease(BooleanEnum.YES.getKey()); + isUpdate = true; + } + } + } //已注册云信 + else if (tmpUser.getIsRegisterNetease().equals(BooleanEnum.YES.getKey())) { + //token为空 + if (tmpUser.getNeteaseToken().equals("")) { + //获取云信token + Map map = neteaseIM.refreshToken(tmpUser.getUserId().toString()); + if (map != null) { + String code = map.get("code"); + if (code.equals(NeteaseEnum.status200.getKey())) { + tmpUser.setNeteaseToken(map.get("token")); + isUpdate = true; + } + } + } + } + //更新登陆参数 + userDao.executeLoginUpdate(tmpUser.getUserId(), tmpUser.getLoginType()); + if (isUpdate) { + this.userDao.update(tmpUser); + } + //登录成功,返回给App数据 + Map userMap = new HashMap(); + userMap.put("userId", tmpUser.getUserId().toString()); + userMap.put("phoneNumber", tmpUser.getPhoneNumber()); + userMap.put("nickName", tmpUser.getNickName()); + userMap.put("userSex", tmpUser.getUserSex()); + userMap.put("signature", tmpUser.getSignature()); + userMap.put("userImg", tmpUser.getUserImg()); + userMap.put("P2PVerifyCode1", tmpUser.getP2PVerifyCode1()); + userMap.put("P2PVerifyCode2", tmpUser.getP2PVerifyCode2()); + userMap.put("gwellUserID", tmpUser.getGwellUserID()); + userMap.put("neteaseToken", tmpUser.getNeteaseToken()); + userMap.put("userType", tmpUser.getUserType()); + userMap.put("shopsUserId", tmpUser.getShopsUserId()); + if (tmpUser.getUpdateTime() != null) { + userMap.put("updateTime", IfishUtil.format(tmpUser.getUpdateTime())); + } + //自己的商家对象 + Map shopsInfoMap = new HashMap(); + if (tmpUser.getUserId() != null) { + ShopsInfo shopsInfo = this.shopsInfoDao.findUniqueByProperty(Restrictions.eq("userId", tmpUser.getUserId())); + if (shopsInfo != null) { + shopsInfoMap.put("shopsId", shopsInfo.getShopsId()); + shopsInfoMap.put("userId", shopsInfo.getUserId()); + shopsInfoMap.put("userImg", tmpUser.getUserImg()); + shopsInfoMap.put("userName", shopsInfo.getUserName()); + shopsInfoMap.put("shopsName", shopsInfo.getShopsName()); + shopsInfoMap.put("shopsPhone", shopsInfo.getShopsPhone()); + shopsInfoMap.put("shopsProvince", shopsInfo.getShopsProvince()); + shopsInfoMap.put("shopsCity", shopsInfo.getShopsCity()); + shopsInfoMap.put("shopsArea", shopsInfo.getShopsArea()); + shopsInfoMap.put("shopsAddress", shopsInfo.getShopsAddress()); + shopsInfoMap.put("picture1", shopsInfo.getPicture1()); + shopsInfoMap.put("picture2", shopsInfo.getPicture2()); + shopsInfoMap.put("picture3", shopsInfo.getPicture3()); + shopsInfoMap.put("picture4", shopsInfo.getPicture4()); + shopsInfoMap.put("status", shopsInfo.getStatus()); + shopsInfoMap.put("reason", shopsInfo.getReason()); + } + } + //选择的的商家对象 + Map shopsInfo2Map = new HashMap(); + if (tmpUser.getShopsUserId() != null) { + ShopsInfo shopsInfo = this.shopsInfoDao.findUniqueByProperty(Restrictions.eq("userId", tmpUser.getShopsUserId())); + if (shopsInfo != null) { + User tmp2User = this.userDao.get(tmpUser.getShopsUserId()); + shopsInfo2Map.put("shopsId", shopsInfo.getShopsId()); + shopsInfo2Map.put("userId", shopsInfo.getUserId()); + shopsInfo2Map.put("userImg", tmp2User.getUserImg()); + shopsInfo2Map.put("userName", shopsInfo.getUserName()); + shopsInfo2Map.put("shopsName", shopsInfo.getShopsName()); + shopsInfo2Map.put("shopsPhone", shopsInfo.getShopsPhone()); + shopsInfo2Map.put("shopsProvince", shopsInfo.getShopsProvince()); + shopsInfo2Map.put("shopsCity", shopsInfo.getShopsCity()); + shopsInfo2Map.put("shopsArea", shopsInfo.getShopsArea()); + shopsInfo2Map.put("shopsAddress", shopsInfo.getShopsAddress()); + shopsInfo2Map.put("picture1", shopsInfo.getPicture1()); + shopsInfo2Map.put("picture2", shopsInfo.getPicture2()); + shopsInfo2Map.put("picture3", shopsInfo.getPicture3()); + shopsInfo2Map.put("picture4", shopsInfo.getPicture4()); + shopsInfo2Map.put("status", shopsInfo.getStatus()); + shopsInfo2Map.put("reason", shopsInfo.getReason()); + } + } + //设备信息 + List list = new ArrayList(); + //获取用户拥有设备 + List deviceUserList = this.deviceUserDao.findByProperty(Restrictions.eq("priId.userId", tmpUser.getUserId())); + List deviceIds = new ArrayList(); + for (DeviceUser deviceUser : deviceUserList) { + Device device = this.deviceDao.get(deviceUser.getPriId().getDeviceId()); + deviceIds.add(device.getDeviceId()); + //封装设备返回信息 + list.add(getDeviceInfo(device, deviceUser)); + } + //摄像头信息 + List list2 = new ArrayList(); + //获取用户拥有摄像头 + List cameraUserList = this.cameraUserDao.findByProperty(Restrictions.eq("cameraUserId.userId", tmpUser.getUserId())); + for (CameraUser cameraUser : cameraUserList) { + Camera camera = this.cameraDao.get(cameraUser.getCameraUserId().getCameraId()); + //封装摄像头返回信息 + list2.add(getCameraInfo(camera, cameraUser)); + } + //设备-摄像头 + List list3 = new ArrayList(); + //设备已关联摄像头 + if (deviceIds.size() > 0) { + List deviceCameraList = this.deviceCameraDao.findByProperty(Restrictions.in("deviceCameraId.deviceId", deviceIds)); + for (DeviceCamera deviceCamera : deviceCameraList) { + Map deviceCameraMap = new HashMap(); + deviceCameraMap.put("cameraId", deviceCamera.getDeviceCameraId().getCameraId()); + deviceCameraMap.put("deviceId", deviceCamera.getDeviceCameraId().getDeviceId()); + list3.add(deviceCameraMap); + } + } + Map dataMap = new HashMap(); + dataMap.put("user", userMap); + dataMap.put("shopsInfo", shopsInfoMap); + dataMap.put("shopsInfo2", shopsInfo2Map); + dataMap.put("device", list); + dataMap.put("camera", list2); + dataMap.put("deviceCamera", list3); + return IfishUtil.returnJson(ResultEnum.success.getKey(), dataMap); + } else { + //密码不正确 + return IfishUtil.returnJson(ResultEnum.warn204.getKey(), ""); + } + } + + /** + * 新增保存用户信息 + */ + @Override + public Object save(User user) { + //随机生成6位用户名 + user.setNickName("鱼友" + IfishUtil.getCharAndNumr(5)); + user.setIsRegisterGwell(BooleanEnum.NO.getKey()); + user.setIsRegisterNetease(BooleanEnum.NO.getKey()); + user.setNeteaseToken(""); + user.setUserType(UserTypeEnum.userType0.getKey()); + Date date = new Date(); + user.setCreateTime(date); + user.setUserImg("default/" + (new Random().nextInt(7) + 1) + ".png"); + user.setUpdateTime(date); + this.userDao.save(user); + //注册技威 + Map map = GwellApi.Register(user.getPhoneNumber()); + String result = map.get("result"); + //注册成功 + if (result != null) { + //成功 + if (result.equals(GwellEnum.success.getKey())) { + String P2PVerifyCode1 = map.get("P2PVerifyCode1"); + String P2PVerifyCode2 = map.get("P2PVerifyCode2"); + String gwellUserID = map.get("UserID"); + user.setIsRegisterGwell(BooleanEnum.YES.getKey()); + user.setP2PVerifyCode1(P2PVerifyCode1); + user.setP2PVerifyCode2(P2PVerifyCode2); + user.setGwellUserID(gwellUserID); + } //已经注册过 + else if (result.equals(GwellEnum.repeat.getKey())) { + user.setIsRegisterGwell(BooleanEnum.YES.getKey()); + } + } + //注册云信 + Map neteaseMap = neteaseIM.createAccid(user.getUserId().toString(), user.getNickName(), IfishFilePath.getPath(SubDirectoryEnum.headImage, user.getUserImg()), ""); + if (neteaseMap != null) { + String code = neteaseMap.get("code"); + if (code.equals(NeteaseEnum.status200.getKey())) { + user.setIsRegisterNetease(BooleanEnum.YES.getKey()); + user.setNeteaseToken(neteaseMap.get("token")); + } else if (code.equals(NeteaseEnum.status414.getKey())) { + user.setIsRegisterNetease(BooleanEnum.YES.getKey()); + } + this.userDao.update(user); + } + //发送云信消息 + User imUser = this.userDao.findUniqueByProperty(Restrictions.eq("phoneNumber", IfishFilePath.netease_phone)); + if (imUser != null) { + neteaseIM.sendMsg(imUser.getUserId().toString(), user.getUserId().toString(), "感谢您使用爱鱼奇,连接智能设备请查看下方说明书,内含操作视频:http://u.eqxiu.com/s/KmmVl87l \n摄像头售后:021-54131006\n睿芯插排售后:18658232626\n绚多插排售后:18857689069\n松诺插排售后:13392205468", ""); + } + //返回给App的数据 + Map dataMap = new HashMap(); + dataMap.put("userId", user.getUserId().toString()); + dataMap.put("nickName", user.getNickName()); + dataMap.put("updateTime", IfishUtil.format(user.getUpdateTime())); + return IfishUtil.returnJson(ResultEnum.success.getKey(), dataMap); + } + + /** + * 更新用户信息 + */ + @Override + public Object updateInfo(User user) { + user.setUpdateTime(new Date()); + userDao.update(user); + //更新云信 + neteaseIM.updateUinfo(user.getUserId().toString(), user.getNickName(), IfishFilePath.getPath(SubDirectoryEnum.headImage, user.getUserImg()), ""); + return IfishUtil.returnJson(ResultEnum.success.getKey(), ""); + } + + /** + * 验证原密码后更新用户密码 + */ + @Override + public Object updatePwd(User user, String oldPassword) { + User tmpUser = this.findById(user.getUserId()); + //判断原密码是否正确 + if (tmpUser.getUserPassword().equals(oldPassword)) { + //密码正确,更新用户信息 + tmpUser.setUserPassword(user.getUserPassword()); + return this.updateInfo(tmpUser); + } + //原密码不正确,返回错误码 + return IfishUtil.returnJson(ResultEnum.warn204.getKey(), ""); + } + + /** + * 忘记密码短信验证后修改密码 + */ + @Override + public Object resetPassword(User user) { + //验证手机号是否存在 + User tmpUser = this.userDao.findUniqueByProperty(Restrictions.eq("phoneNumber", user.getPhoneNumber())); + if (tmpUser != null) { + //手机号存在,修改密码 + tmpUser.setUserPassword(user.getUserPassword()); + return this.updateInfo(tmpUser); + } + //手机号不存在,返回错误码 + return IfishUtil.returnJson(ResultEnum.warn202.getKey(), ""); + } + + /** + * 根据ID查找 + */ + @Override + public User findById(Integer userId) { + return this.userDao.get(userId); + } + + /** + * 绑定设备 + */ + @Override + public Object bindDevice(User user, String madAddress) { + User tmpUser = userDao.get(user.getUserId()); + //用户存在 + if (tmpUser != null) { + //新增用户拥有设备 + DeviceUser deviceUser = new DeviceUser(); + Device device = this.deviceDao.findUniqueByProperty(Restrictions.eq("macAddress", madAddress)); + boolean bln = false; + //设备存在 + if (device != null) { + //关联用户-设备 + deviceUser.getPriId().setUserId(tmpUser.getUserId()); + deviceUser.getPriId().setDeviceId(device.getDeviceId()); + //已关联设备的其他用户 + List deviceUserList = this.deviceUserDao.findByProperty(Restrictions.eq("priId.deviceId", device.getDeviceId()), Restrictions.ne("priId.userId", tmpUser.getUserId())); + //是否已关联 + DeviceUser tmpDdeviceUser = this.deviceUserDao.get(deviceUser.getPriId()); + //已关联 + if (tmpDdeviceUser != null) { + //原先不是主控制,则删除其他用户关联关系 + if (!tmpDdeviceUser.getIsMaster().equals(BooleanEnum.YES.getKey())) { + for (DeviceUser du : deviceUserList) { + Integer userId = du.getPriId().getUserId(); + Integer deviceId = du.getPriId().getDeviceId(); + User tu = this.userDao.get(userId); + if (tu != null) { + String timestamp = IfishUtil.format(new Date()); + //基本参数 + Map baseMap = new HashMap(); + baseMap.put("title", PushTypeEnum.remove_device.getValue()); + baseMap.put("content", "你已于" + timestamp + "失去对“" + du.getShowName() + "”设备的控制权"); + baseMap.put("user_id", userId.toString()); + baseMap.put("loginType", tu.getLoginType()); + //推送参数 + Map pushMap = new HashMap(); + pushMap.put("device_id", deviceId.toString()); + pushMap.put("device_name", du.getShowName()); + pushMap.put("timestamp", timestamp); + pushMap.put("msg_type", PushTypeEnum.remove_device.getKey()); + //推送消息 + jPushNotifcation(baseMap, pushMap); + } + this.deviceUserDao.delete(du); + //删除设备和摄像头关系 + DeviceCamera deviceCamera = this.deviceCameraDao.findUniqueByProperty(Restrictions.eq("deviceCameraId.deviceId", du.getPriId().getDeviceId())); + if (deviceCamera != null) { + this.deviceCameraDao.delete(deviceCamera); + } + } + } + //变更为主控 + tmpDdeviceUser.setIsMaster(BooleanEnum.YES.getKey()); + Date date = new Date(); + tmpDdeviceUser.setUpdateTime(date); + tmpDdeviceUser.setCreateTime(date); + this.deviceUserDao.update(tmpDdeviceUser); + //返回数据 + deviceUser.setShowName(tmpDdeviceUser.getShowName()); + deviceUser.setIsMaster(tmpDdeviceUser.getIsMaster()); + } //未绑定过 + else { + //删除其他用户控制权 + for (DeviceUser du : deviceUserList) { + Integer userId = du.getPriId().getUserId(); + Integer deviceId = du.getPriId().getDeviceId(); + User tu = this.userDao.get(userId); + if (tu != null) { + String timestamp = IfishUtil.format(new Date()); + //基本参数 + Map baseMap = new HashMap(); + baseMap.put("title", PushTypeEnum.remove_device.getValue()); + baseMap.put("content", "你已于" + timestamp + "失去对“" + du.getShowName() + "”设备的控制权"); + baseMap.put("user_id", userId.toString()); + baseMap.put("loginType", tu.getLoginType()); + //推送参数 + Map pushMap = new HashMap(); + pushMap.put("device_id", deviceId.toString()); + pushMap.put("device_name", du.getShowName()); + pushMap.put("timestamp", timestamp); + pushMap.put("msg_type", PushTypeEnum.remove_device.getKey()); + //推送消息 + jPushNotifcation(baseMap, pushMap); + } + this.deviceUserDao.delete(du); + //删除设备和摄像头关系 + DeviceCamera deviceCamera = this.deviceCameraDao.findUniqueByProperty(Restrictions.eq("deviceCameraId.deviceId", du.getPriId().getDeviceId())); + if (deviceCamera != null) { + this.deviceCameraDao.delete(deviceCamera); + } + } + //需要新增 + bln = true; + //新增设备激活时间 + if (device.getFirstActivate() == null) { + device.setFirstActivate(new Date()); + device = this.deviceDao.save(device); + } + } + } //设备不存在 + else { + //新增设备信息 + device = new Device(); + device.setLoginCount(0); + device.setIsBlacklist(BooleanEnum.YES.getKey()); + device.setMacAddress(madAddress); + Date date = new Date(); + device.setFirstActivate(date); + device.setCreateDate(date); + device.setCreateTime(date); + device = this.deviceDao.save(device); + //需要新增 + bln = true; + deviceUser.getPriId().setUserId(tmpUser.getUserId()); + deviceUser.getPriId().setDeviceId(device.getDeviceId()); + } + //需要新增 + if (bln) { + //新增关联关系 + deviceUser.setShowName("鱼缸" + (int) (Math.random() * 9000 + 1000)); + deviceUser.setIsMaster(BooleanEnum.YES.getKey()); + Date date = new Date(); + deviceUser.setUpdateTime(date); + deviceUser.setCreateTime(date); + this.deviceUserDao.save(deviceUser); + } + //封装设备返回信息 + return IfishUtil.returnJson(ResultEnum.success.getKey(), getDeviceInfo(device, deviceUser)); + } else { + return IfishUtil.returnJson(ResultEnum.warn202.getKey(), ""); + } + } + + /** + * 绑定摄像头 + */ + @Override + public Object bindCamera(Integer userId, String cameraId) { + User user = userDao.get(userId); + Camera camera = this.cameraDao.get(cameraId); + //返回数据 + Map dataMap = new HashMap(); + //用户存在 + if (user != null) { + //摄像头存在 + if (camera != null) { + //已关联摄像头的用户 + List CameraUserList = this.cameraUserDao.findByProperty(Restrictions.eq("cameraUserId.cameraId", cameraId)); + //删除摄像头与用户关系 + for (CameraUser cu : CameraUserList) { + this.cameraUserDao.delete(cu); + //删除设备和摄像头关系 + DeviceCamera deviceCamera = this.deviceCameraDao.findUniqueByProperty(Restrictions.eq("deviceCameraId.cameraId", cu.getCameraUserId().getCameraId())); + if (deviceCamera != null) { + this.deviceCameraDao.delete(deviceCamera); + } + } + } else { + //摄像头不存在 + camera = new Camera(); + camera.setCameraId(cameraId); + camera.setCreateTime(new Date()); + this.cameraDao.save(camera); + } + //建立关系 + CameraUser cameraUser = new CameraUser(); + CameraUserId cameraUserId = new CameraUserId(userId, cameraId); + cameraUser.setCameraUserId(cameraUserId); + cameraUser.setIsMaster(BooleanEnum.YES.getKey()); + cameraUser.setIsLook(BooleanEnum.NO.getKey()); + cameraUser.setIsLive(BooleanEnum.NO.getKey()); + cameraUser.setShowName("摄像头" + (int) (Math.random() * 900 + 100)); + cameraUser.setCreateTime(new Date()); + this.cameraUserDao.save(cameraUser); + //返回数据 + dataMap.put("cameraId", cameraId); + dataMap.put("showName", cameraUser.getShowName()); + dataMap.put("isMaster", cameraUser.getIsMaster()); + dataMap.put("isLook", cameraUser.getIsLook()); + dataMap.put("isLive", cameraUser.getIsLive()); + dataMap.put("isActive", camera.getActiveCode() != null && !camera.getActiveCode().equals("") ? "1" : "0"); + return IfishUtil.returnJson(ResultEnum.success.getKey(), dataMap); + } else { + return IfishUtil.returnJson(ResultEnum.warn202.getKey(), ""); + } + } + + /** + * 激活摄像头 + */ + @Override + public Object activeCamera(String activeCode, String cameraId) { + CameraActive cameraActive = this.cameraActiveDao.get(activeCode); + //激活码有效 + if (cameraActive != null) { + //激活码被使用 + if (cameraActive.getIsUsed().equals(BooleanEnum.YES.getKey())) { + return IfishUtil.returnJson(ResultEnum.warn208.getKey(), ""); + } else { + Camera camera = this.cameraDao.get(cameraId); + if (camera != null) { + if (camera.getActiveCode() != null && !camera.getActiveCode().equals("")) { + return IfishUtil.returnJson(ResultEnum.success.getKey(), ""); + } else { + //激活成功 + camera.setActiveCode(activeCode); + camera.setActiveTime(new Date()); + camera.setUpdateTime(new Date()); + this.cameraDao.update(camera); + //激活码改成被使用 + cameraActive.setIsUsed(BooleanEnum.YES.getKey()); + this.cameraActiveDao.update(cameraActive); + return IfishUtil.returnJson(ResultEnum.success.getKey(), ""); + } + } else { + return IfishUtil.returnJson(ResultEnum.warn210.getKey(), ""); + } + } + } else { + return IfishUtil.returnJson(ResultEnum.warn209.getKey(), ""); + } + } + + /** + * 封装摄像头返回信息 + * + * @param device + * @param deviceUser + * @return + */ + public Map getCameraInfo(Camera camera, CameraUser cameraUser) { + Map cameraMap = new HashMap(); + cameraMap.put("cameraId", camera.getCameraId()); + cameraMap.put("isMaster", cameraUser.getIsMaster()); + cameraMap.put("isLook", cameraUser.getIsLook()); + cameraMap.put("isActive", camera.getActiveCode() != null && !camera.getActiveCode().equals("") ? "1" : "0"); + cameraMap.put("showName", cameraUser.getShowName()); + return cameraMap; + } + + /** + * 封装设备返回信息 + * + * @param device + * @param deviceUser + * @return + */ + public Map getDeviceInfo(Device device, DeviceUser deviceUser) { + Map deviceMap = new HashMap(); + deviceMap.put("userId", deviceUser.getPriId().getUserId()); + deviceMap.put("deviceId", deviceUser.getPriId().getDeviceId()); + deviceMap.put("isMaster", deviceUser.getIsMaster()); + deviceMap.put("showName", deviceUser.getShowName()); + deviceMap.put("macAddress", device.getMacAddress()); + deviceMap.put("isBlacklist", device.getIsBlacklist()); + deviceMap.put("customIconName", deviceUser.getCustomIconName()); + deviceMap.put("customShowName", deviceUser.getCustomShowName()); + deviceMap.put("deviceIp", device.getDeviceIP()); + deviceMap.put("loginTime", device.getLoginTime()); + if (device.getBrandCode() != null && device.getBrandCode().equals("YUEM") && device.getCreateTime().before(IfishUtil.StrToDate("2016-04-26"))) { + //是否显示预警推送 + deviceMap.put("isPushWendu", BooleanEnum.NO.getKey()); + } else { + //是否显示预警推送 + deviceMap.put("isPushWendu", BooleanEnum.YES.getKey()); + } + //控制方案 + String type = device.getHardwareType(); + if (type != null) { + HardwareType hardwareType = this.hardwareTypeDao.get(type); + if (hardwareType != null) { + //设备类型 + deviceMap.put("type", type); + //有无工作模式 + deviceMap.put("isWorkModel", hardwareType.getIsWorkModel()); + //控制信息 + deviceMap.put("controlAmount", hardwareType.getControlAmount()); + deviceMap.put("timerAmount", hardwareType.getTimerAmount()); + //背光/柜灯 + deviceMap.put("isLightness", hardwareType.getIsLightness()); + deviceMap.put("isSarkLamp", hardwareType.getIsSarkLamp()); + //自定义图标 + deviceMap.put("isCustomIcon", hardwareType.getIsCustomIcon()); + deviceMap.put("iconLink", hardwareType.getIconLink()); + deviceMap.put("allIconName", hardwareType.getAllIconName()); + deviceMap.put("allShowName", hardwareType.getAllShowName()); + deviceMap.put("defaultIconName", hardwareType.getDefaultIconName()); + deviceMap.put("defaultShowName", hardwareType.getDefaultShowName()); + deviceMap.put("updateTime", hardwareType.getUpdateTime()); + //换水提醒 + deviceMap.put("todayRemind", device.getTodayRemind()); + deviceMap.put("waterRemind", device.getWaterRemind()); + deviceMap.put("remindDate", device.getRemindDate() != null ? IfishUtil.format1(device.getRemindDate()) : ""); + deviceMap.put("remindCycle", device.getRemindCycle() != null ? device.getRemindCycle() : ""); + } + } + //厂家 + if (device.getBrandCode() != null) { + //厂家 + VenderList venderList = venderListDao.get(device.getBrandCode()); + deviceMap.put("venderList", venderList); + } else { + //默认爱鱼奇 + VenderList defaultVenderList = venderListDao.getDefaultVenderList(); + deviceMap.put("venderList", defaultVenderList); + } + return deviceMap; + } + + /** + * 更新设备信息 + */ + @Override + public Object update(DeviceUser deviceUser) { + DeviceUser tmpDeviceUser = this.deviceUserDao.get(deviceUser.getPriId()); + if (tmpDeviceUser != null) { + tmpDeviceUser.setUpdateTime(new Date()); + tmpDeviceUser.setShowName(deviceUser.getShowName()); + this.deviceUserDao.update(tmpDeviceUser); + return IfishUtil.returnJson(ResultEnum.success.getKey(), ""); + } + return IfishUtil.returnJson(ResultEnum.warn207.getKey(), ""); + } + + /** + * 更新摄像头信息 + */ + @Override + public Object update(CameraUserId id, String showName) { + CameraUser cameraUser = this.cameraUserDao.get(id); + if (cameraUser != null) { + cameraUser.setUpdateTime(new Date()); + cameraUser.setShowName(showName); + this.cameraUserDao.update(cameraUser); + return IfishUtil.returnJson(ResultEnum.success.getKey(), ""); + } else { + return IfishUtil.returnJson(ResultEnum.warn207.getKey(), ""); + } + } + + /** + * 修改自定义图标 + */ + @Override + public Object updateCustomIcon(DeviceUser deviceUser) { + DeviceUser tmpDeviceUser = this.deviceUserDao.get(deviceUser.getPriId()); + if (tmpDeviceUser != null) { + tmpDeviceUser.setCustomIconName(deviceUser.getCustomIconName()); + tmpDeviceUser.setCustomShowName(deviceUser.getCustomShowName()); + tmpDeviceUser.setUpdateTime(new Date()); + this.deviceUserDao.update(tmpDeviceUser); + return IfishUtil.returnJson(ResultEnum.success.getKey(), ""); + } else { + return IfishUtil.returnJson(ResultEnum.warn207.getKey(), ""); + } + } + + /** + * 删除绑定的设备 + */ + @Override + public Object deleteDeviceUser(DeviceUser deviceUser) { + deviceUser = deviceUserDao.get(deviceUser.getPriId()); + if (deviceUser != null) { + //是主控则解除全部关系 + if (deviceUser.getIsMaster().equals(BooleanEnum.YES.getKey())) { + //已关联设备的所有用户 + List deviceUserList = this.deviceUserDao.findByProperty(Restrictions.eq("priId.deviceId", deviceUser.getPriId().getDeviceId()), Restrictions.ne("priId.userId", deviceUser.getPriId().getUserId())); + //删除所有用户控制权 + for (DeviceUser du : deviceUserList) { + Integer userId = du.getPriId().getUserId(); + Integer deviceId = du.getPriId().getDeviceId(); + User tu = this.userDao.get(userId); + if (tu != null) { + String timestamp = IfishUtil.format(new Date()); + //基本参数 + Map baseMap = new HashMap(); + baseMap.put("title", PushTypeEnum.remove_device.getValue()); + baseMap.put("content", "你已于" + timestamp + "失去对“" + du.getShowName() + "”设备的控制权"); + baseMap.put("user_id", userId.toString()); + baseMap.put("loginType", tu.getLoginType()); + //推送参数 + Map pushMap = new HashMap(); + pushMap.put("device_id", deviceId.toString()); + pushMap.put("device_name", du.getShowName()); + pushMap.put("timestamp", timestamp); + pushMap.put("msg_type", PushTypeEnum.remove_device.getKey()); + //推送消息 + jPushNotifcation(baseMap, pushMap); + } + //删除设备和用户关系 + this.deviceUserDao.delete(du); + } + //删除设备和摄像头关系 + DeviceCamera deviceCamera = this.deviceCameraDao.findUniqueByProperty(Restrictions.eq("deviceCameraId.deviceId", deviceUser.getPriId().getDeviceId())); + if (deviceCamera != null) { + this.deviceCameraDao.delete(deviceCamera); + } + } + //删除设备和用户关系 + this.deviceUserDao.delete(deviceUser); + } + return IfishUtil.returnJson(ResultEnum.success.getKey(), ""); + } + + /** + * 删除绑定的摄像头 + */ + @Override + public Object deleteCameraUser(Integer userId, String cameraId) { + CameraUserId cameraUserId = new CameraUserId(userId, cameraId); + CameraUser cameraUser = this.cameraUserDao.get(cameraUserId); + if (cameraUser != null) { + //删除用户摄像头关系 + this.cameraUserDao.delete(cameraUser); + //删除设备和摄像头关系 + DeviceCamera deviceCamera = this.deviceCameraDao.findUniqueByProperty(Restrictions.eq("deviceCameraId.cameraId", cameraId)); + if (deviceCamera != null) { + this.deviceCameraDao.delete(deviceCamera); + } + return IfishUtil.returnJson(ResultEnum.success.getKey(), ""); + } else { + return IfishUtil.returnJson(ResultEnum.warn207.getKey(), ""); + } + } + + /** + * 最新版本信息 + */ + @Override + public Object getNewestVersionInf(String phoneType) { + Map map = new HashMap(); + //最新版本信息 + Version version = this.versionDao.getNewestVersion(phoneType); + if (version != null) { + map.put("versionCode", version.getVersionCode()); + map.put("phoneType", version.getPhoneType()); + map.put("isMustUpdate", version.getIsMustUpdate()); + map.put("uploadContent", version.getUploadContent()); + map.put("appAddress", version.getAppAddress()); + } + //返回版本信息 + return IfishUtil.returnJson(ResultEnum.success.getKey(), map); + } + + /** + * 上传头像 + */ + @Override + public Object uploadFile(User user, MultipartFile fileUpload) { + //上传文件名称 + String fileName = fileUpload.getOriginalFilename(); + //验证图片格式 + String extEndName = IfishFilePath.checkImgName(fileName); + //图片名称 + String picName = user.getUserId() + "_icon.png"; + //验证图片格式 + if (!fileUpload.isEmpty() && extEndName != null) { + try { + if (!fileUpload.getOriginalFilename().equals("")) { + File picFile = new File(IfishFilePath.path_img, picName); + //不存在则创建 + if (!picFile.exists()) { + picFile.mkdirs(); + } + //保存 + fileUpload.transferTo(picFile); + } + //更新数据库 + user.setUserImg(picName + "?timestamp=" + System.currentTimeMillis()); + user.setUpdateTime(new Date()); + user = this.userDao.update(user); + //更新云信 + neteaseIM.updateUinfo(user.getUserId().toString(), user.getNickName(), IfishFilePath.getPath(SubDirectoryEnum.headImage, user.getUserImg()), ""); + } catch (Exception e) { + throw new RuntimeException(e); + } + Map map = new HashMap(); + map.put("userImg", user.getUserImg()); + map.put("updateTime", user.getUpdateTime()); + //上传成功 + return IfishUtil.returnJson(ResultEnum.success.getKey(), map); + } + return IfishUtil.returnJson(ResultEnum.warn205.getKey(), ""); + } + + @Override + public Object saveQuestionsFeedback(QuestionsFeedback feedback) { + Date date = new Date(); + feedback.setCreateTime(date); + feedback.setQuestionReply(""); + this.questionsFeedbackDao.save(feedback); +// User user = this.userDao.findById(feedback.getUserId()); +// if(user!=null){ +// Mail.send(user.getNickName()+"("+user.getPhoneNumber()+")的问题反馈", feedback.getQuestionContent()); +// } + //发送云信消息 + User imUser = this.userDao.findUniqueByProperty(Restrictions.eq("phoneNumber", IfishFilePath.netease_phone)); + if (imUser != null) { + neteaseIM.sendMsg(feedback.getUserId().toString(), imUser.getUserId().toString(), feedback.getQuestionContent(), ""); + } + return IfishUtil.returnJson(ResultEnum.success.getKey(), ""); + } + + @Override + public Object shareDeviceByQrCode(Integer userId, Integer deviceId) { + User user = userDao.get(userId); + Device device = deviceDao.get(deviceId); + if (user != null && device != null) { + DeviceUser deviceUser = new DeviceUser(); + deviceUser.getPriId().setUserId(user.getUserId()); + deviceUser.getPriId().setDeviceId(device.getDeviceId()); + DeviceUser tmpDeviceUser = deviceUserDao.get(deviceUser.getPriId()); + if (tmpDeviceUser != null) { + //封装设备返回信息 + return IfishUtil.returnJson(ResultEnum.success.getKey(), getDeviceInfo(device, tmpDeviceUser)); + } else { + deviceUser.setIsMaster(BooleanEnum.NO.getKey()); + deviceUser.setShowName("鱼缸" + (int) (Math.random() * 9000 + 1000)); + Date date = new Date(); + deviceUser.setUpdateTime(date); + deviceUser.setCreateTime(date); + this.deviceUserDao.save(deviceUser); + //封装设备返回信息 + return IfishUtil.returnJson(ResultEnum.success.getKey(), getDeviceInfo(device, deviceUser)); + } + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + /** + * 极光推送 + * + * @param userId + */ + public boolean jPushNotifcation(Map baseMap, Map pushMap) { + try { + //登录类型 + String loginType = baseMap.get("loginType"); + if (loginType != null) { + //推送消息类型 + String msgType = pushMap.get("msg_type"); + String userId = baseMap.get("user_id"); + String title = baseMap.get("title"); + String content = baseMap.get("content"); + //云信推送 + Map neteaseMap = neteaseIM.sendMsg(IfishFilePath.ifish_account, userId, "【" + title + "】" + content, JSON.toJSONString(pushMap)); + boolean neteaseBln = neteaseMap.get("code").equals(NeteaseEnum.status200.getKey()); + //推送记录 + PushList pushList = new PushList(); + if (msgType.equals(PushTypeEnum.remove_device.getKey())) { + pushList.setUserId(Integer.valueOf(userId)); + pushList.setDeviceId(Integer.valueOf(pushMap.get("device_id"))); + pushList.setPhoneType(loginType); + pushList.setShowName(pushMap.get("showName")); + pushList.setPushType(msgType); + pushList.setPushTitle(title); + pushList.setPushContext(content); + pushList.setNeteaseStatus(neteaseBln ? BooleanEnum.YES.getKey() : BooleanEnum.NO.getKey()); + pushList.setCreateTime(new Date()); + pushListDao.save(pushList); + return true; + } //发送看护报告推送 + else if (msgType.equals(PushTypeEnum.send_report.getKey())) { + String reportId = baseMap.get("reportId"); + if (reportId != null) { + pushList.setReportId(Integer.valueOf(reportId)); + } + pushList.setUserId(Integer.valueOf(userId)); + pushList.setPhoneType(loginType); + pushList.setPushType(msgType); + pushList.setPushTitle(title); + pushList.setPushContext(content); + pushList.setPushLink(pushMap.get("push_link")); + pushList.setNeteaseStatus(neteaseBln ? BooleanEnum.YES.getKey() : BooleanEnum.NO.getKey()); + pushList.setCreateTime(new Date()); + pushListDao.save(pushList); + return true; + } + } + } catch (Exception e) { + throw new RuntimeException(); + } + return false; + } + + @Override + public Object getSingleDeviceInf(DeviceUser deviceUser) { + Integer deviceId = deviceUser.getPriId().getDeviceId(); + Integer userId = deviceUser.getPriId().getUserId(); + if (deviceId != null && userId != null) { + Device tmpDevice = this.deviceDao.get(deviceId); + DeviceUser tmpDeviceUser = this.deviceUserDao.get(deviceUser.getPriId()); + if (tmpDevice != null && tmpDeviceUser != null) { + //封装设备返回信息 + return IfishUtil.returnJson(ResultEnum.success.getKey(), getDeviceInfo(tmpDevice, tmpDeviceUser)); + } + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + @Override + public Object getRemindWaterInf(Integer deviceId) { + Device device = deviceDao.get(deviceId); + if (device != null) { + Map map = new HashMap(); + //换水提醒 + map.put("todayRemind", device.getTodayRemind()); + map.put("waterRemind", device.getWaterRemind()); + map.put("remindDate", device.getRemindDate() != null ? IfishUtil.format1(device.getRemindDate()) : ""); + map.put("remindCycle", device.getRemindCycle() != null ? device.getRemindCycle() : ""); + return IfishUtil.returnJson(ResultEnum.success.getKey(), map); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + @Override + public Object setRemindWaterInf(Device device) { + Device tmpDevice = this.deviceDao.get(device.getDeviceId()); + if (tmpDevice != null) { + //设置换水提醒 + tmpDevice.setRemindCycle(device.getRemindCycle()); + tmpDevice.setWaterRemind(device.getWaterRemind()); + //默认今天不需要提醒 + tmpDevice.setTodayRemind(BooleanEnum.NO.getKey()); + //下一次提醒日期 + Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.DATE, device.getRemindCycle()); + tmpDevice.setRemindDate(calendar.getTime()); + this.deviceDao.update(tmpDevice); + Map map = new HashMap(); + map.put("todayRemind", tmpDevice.getTodayRemind()); + map.put("waterRemind", tmpDevice.getWaterRemind()); + map.put("remindDate", IfishUtil.format1(tmpDevice.getRemindDate())); + map.put("remindCycle", tmpDevice.getRemindCycle()); + return IfishUtil.returnJson(ResultEnum.success.getKey(), map); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + @Override + public Object deviceBindCamera(Integer deviceId, String cameraId) { + DeviceCameraId id = new DeviceCameraId(deviceId, cameraId); + DeviceCamera deviceCamera = this.deviceCameraDao.get(id); + if (deviceCamera == null) { + deviceCamera = new DeviceCamera(); + deviceCamera.setDeviceCameraId(id); + this.deviceCameraDao.save(deviceCamera); + } + return IfishUtil.returnJson(ResultEnum.success.getKey(), ""); + } + + @Override + public Object deviceBindCamera1(Integer userId, Integer deviceId, String cameraId) { + //设备和用户关系 + DeviceUserId priId = new DeviceUserId(); + priId.setDeviceId(deviceId); + priId.setUserId(userId); + DeviceUser deviceUser = this.deviceUserDao.get(priId); + if (deviceUser == null) { + return IfishUtil.returnJson(ResultEnum.warn207.getKey(), ""); + } + //摄像头和用户关系 + CameraUserId cuId = new CameraUserId(userId, cameraId); + CameraUser cameraUser = this.cameraUserDao.get(cuId); + if (cameraUser == null) { + return IfishUtil.returnJson(ResultEnum.warn210.getKey(), ""); + } + //设备和摄像头关系 + DeviceCameraId id = new DeviceCameraId(deviceId, cameraId); + DeviceCamera deviceCamera = this.deviceCameraDao.get(id); + if (deviceCamera == null) { + deviceCamera = new DeviceCamera(); + deviceCamera.setDeviceCameraId(id); + this.deviceCameraDao.save(deviceCamera); + } + return IfishUtil.returnJson(ResultEnum.success.getKey(), ""); + } + + @Override + public Object deleteDeviceCamera(Integer deviceId, String cameraId) { + DeviceCameraId id = new DeviceCameraId(deviceId, cameraId); + DeviceCamera deviceCamera = this.deviceCameraDao.get(id); + if (deviceCamera != null) { + this.deviceCameraDao.delete(deviceCamera); + } + return IfishUtil.returnJson(ResultEnum.success.getKey(), ""); + } + + @Override + public Object saveShopsInfo(ShopsInfo shopsInfo, MultipartFile file1, MultipartFile file2, MultipartFile file3) { + //用户ID + Integer userId = shopsInfo.getUserId(); + User user = this.userDao.get(userId); + if (user == null) { + return IfishUtil.returnJson(ResultEnum.warn211.getKey(), ""); + } + //验证图片格式 + if (!file1.isEmpty() && !file2.isEmpty() && !file3.isEmpty()) { + try { + if (!file1.getOriginalFilename().equals("")) { + File picFile = new File(IfishFilePath.path_shops + "/" + userId, "1.png"); + //不存在则创建 + if (!picFile.exists()) { + picFile.mkdirs(); + } + //保存 + file1.transferTo(picFile); + } + if (!file2.getOriginalFilename().equals("")) { + File picFile = new File(IfishFilePath.path_shops + "/" + userId, "2.png"); + //不存在则创建 + if (!picFile.exists()) { + picFile.mkdirs(); + } + //保存 + file2.transferTo(picFile); + } + if (!file3.getOriginalFilename().equals("")) { + File picFile = new File(IfishFilePath.path_shops + "/" + userId, "3.png"); + //不存在则创建 + if (!picFile.exists()) { + picFile.mkdirs(); + } + //保存 + file3.transferTo(picFile); + } + //保存商家信息 + shopsInfo.setPicture1("1.png"); + shopsInfo.setPicture2("2.png"); + shopsInfo.setPicture3("3.png"); + shopsInfo.setStatus(ShopsStatusEnum.status2.getKey()); + shopsInfo.setUpdateTime(new Date()); + shopsInfo.setCreateTime(new Date()); + this.shopsInfoDao.save(shopsInfo); + //发送邮件 + Mail.send(user.getNickName() + "(" + user.getPhoneNumber() + ")提交审核了", "有提交新的审核!"); + Map shopsInfoMap = new HashMap(); + shopsInfoMap.put("shopsId", shopsInfo.getShopsId()); + shopsInfoMap.put("userId", shopsInfo.getUserId()); + shopsInfoMap.put("userImg", user.getUserImg()); + shopsInfoMap.put("userName", shopsInfo.getUserName()); + shopsInfoMap.put("shopsName", shopsInfo.getShopsName()); + shopsInfoMap.put("shopsPhone", shopsInfo.getShopsPhone()); + shopsInfoMap.put("shopsProvince", shopsInfo.getShopsProvince()); + shopsInfoMap.put("shopsCity", shopsInfo.getShopsCity()); + shopsInfoMap.put("shopsArea", shopsInfo.getShopsArea()); + shopsInfoMap.put("shopsAddress", shopsInfo.getShopsAddress()); + shopsInfoMap.put("picture1", shopsInfo.getPicture1()); + shopsInfoMap.put("picture2", shopsInfo.getPicture2()); + shopsInfoMap.put("picture3", shopsInfo.getPicture3()); + shopsInfoMap.put("picture4", shopsInfo.getPicture4()); + shopsInfoMap.put("status", shopsInfo.getStatus()); + shopsInfoMap.put("reason", shopsInfo.getReason()); + return IfishUtil.returnJson(ResultEnum.success.getKey(), shopsInfoMap); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + @Override + public Object updateShopsInfo(ShopsInfo shopsInfo, MultipartFile file1, MultipartFile file2, MultipartFile file3) { + ShopsInfo tmpShopsInfo = this.shopsInfoDao.get(shopsInfo.getShopsId()); + if (tmpShopsInfo != null) { + Integer userId = tmpShopsInfo.getUserId(); + try { + if (file1 != null && !file1.isEmpty() && !file1.getOriginalFilename().equals("")) { + File picFile = new File(IfishFilePath.path_shops + "/" + userId, "1.png"); + //不存在则创建 + if (!picFile.exists()) { + picFile.mkdirs(); + } + //保存 + file1.transferTo(picFile); + } + if (file2 != null && !file2.isEmpty() && !file2.getOriginalFilename().equals("")) { + File picFile = new File(IfishFilePath.path_shops + "/" + userId, "2.png"); + //不存在则创建 + if (!picFile.exists()) { + picFile.mkdirs(); + } + //保存 + file2.transferTo(picFile); + } + if (file3 != null && !file3.isEmpty() && !file3.getOriginalFilename().equals("")) { + File picFile = new File(IfishFilePath.path_shops + "/" + userId, "3.png"); + //不存在则创建 + if (!picFile.exists()) { + picFile.mkdirs(); + } + //保存 + file3.transferTo(picFile); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + //保存商家信息 + tmpShopsInfo.setShopsName(shopsInfo.getShopsName()); + tmpShopsInfo.setUserName(shopsInfo.getUserName()); + tmpShopsInfo.setShopsPhone(shopsInfo.getShopsPhone()); + tmpShopsInfo.setShopsProvince(shopsInfo.getShopsProvince()); + tmpShopsInfo.setShopsCity(shopsInfo.getShopsCity()); + tmpShopsInfo.setShopsArea(shopsInfo.getShopsArea()); + tmpShopsInfo.setShopsAddress(shopsInfo.getShopsAddress()); + tmpShopsInfo.setStatus(ShopsStatusEnum.status2.getKey()); + tmpShopsInfo.setUpdateTime(new Date()); + this.shopsInfoDao.update(tmpShopsInfo); + User user = this.userDao.get(tmpShopsInfo.getUserId()); + //发送邮件 + Mail.send(user.getNickName() + "(" + user.getPhoneNumber() + ")重新提交审核了", "重新提交了新的审核!"); + Map shopsInfoMap = new HashMap(); + shopsInfoMap.put("shopsId", tmpShopsInfo.getShopsId()); + shopsInfoMap.put("userId", tmpShopsInfo.getUserId()); + shopsInfoMap.put("userImg", user.getUserImg()); + shopsInfoMap.put("userName", tmpShopsInfo.getUserName()); + shopsInfoMap.put("shopsName", tmpShopsInfo.getShopsName()); + shopsInfoMap.put("shopsPhone", tmpShopsInfo.getShopsPhone()); + shopsInfoMap.put("shopsProvince", tmpShopsInfo.getShopsProvince()); + shopsInfoMap.put("shopsCity", tmpShopsInfo.getShopsCity()); + shopsInfoMap.put("shopsArea", tmpShopsInfo.getShopsArea()); + shopsInfoMap.put("shopsAddress", tmpShopsInfo.getShopsAddress()); + shopsInfoMap.put("picture1", tmpShopsInfo.getPicture1()); + shopsInfoMap.put("picture2", tmpShopsInfo.getPicture2()); + shopsInfoMap.put("picture3", tmpShopsInfo.getPicture3()); + shopsInfoMap.put("picture4", tmpShopsInfo.getPicture4()); + shopsInfoMap.put("status", tmpShopsInfo.getStatus()); + shopsInfoMap.put("reason", tmpShopsInfo.getReason()); + return IfishUtil.returnJson(ResultEnum.success.getKey(), shopsInfoMap); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + @Override + public Object updateBaseShopsInfo(ShopsInfo shopsInfo, MultipartFile file4) { + ShopsInfo tmpShopsInfo = this.shopsInfoDao.get(shopsInfo.getShopsId()); + if (tmpShopsInfo != null) { + try { + if (file4 != null && !file4.isEmpty() && !file4.getOriginalFilename().equals("")) { + File picFile = new File(IfishFilePath.path_shops + "/" + tmpShopsInfo.getUserId(), "4.png"); + //不存在则创建 + if (!picFile.exists()) { + picFile.mkdirs(); + } + //保存 + file4.transferTo(picFile); + tmpShopsInfo.setPicture4("4.png"); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + tmpShopsInfo.setShopsPhone(shopsInfo.getShopsPhone()); + tmpShopsInfo.setShopsProvince(shopsInfo.getShopsProvince()); + tmpShopsInfo.setShopsCity(shopsInfo.getShopsCity()); + tmpShopsInfo.setShopsArea(shopsInfo.getShopsArea()); + tmpShopsInfo.setShopsAddress(shopsInfo.getShopsAddress()); + tmpShopsInfo.setUpdateTime(new Date()); + this.shopsInfoDao.update(tmpShopsInfo); + Map shopsInfoMap = new HashMap(); + User user = this.userDao.get(tmpShopsInfo.getUserId()); + shopsInfoMap.put("shopsId", tmpShopsInfo.getShopsId()); + shopsInfoMap.put("userId", tmpShopsInfo.getUserId()); + shopsInfoMap.put("userImg", user.getUserImg()); + shopsInfoMap.put("userName", tmpShopsInfo.getUserName()); + shopsInfoMap.put("shopsName", tmpShopsInfo.getShopsName()); + shopsInfoMap.put("shopsPhone", tmpShopsInfo.getShopsPhone()); + shopsInfoMap.put("shopsProvince", tmpShopsInfo.getShopsProvince()); + shopsInfoMap.put("shopsCity", tmpShopsInfo.getShopsCity()); + shopsInfoMap.put("shopsArea", tmpShopsInfo.getShopsArea()); + shopsInfoMap.put("shopsAddress", tmpShopsInfo.getShopsAddress()); + shopsInfoMap.put("picture1", tmpShopsInfo.getPicture1()); + shopsInfoMap.put("picture2", tmpShopsInfo.getPicture2()); + shopsInfoMap.put("picture3", tmpShopsInfo.getPicture3()); + shopsInfoMap.put("picture4", tmpShopsInfo.getPicture4()); + shopsInfoMap.put("status", tmpShopsInfo.getStatus()); + shopsInfoMap.put("reason", tmpShopsInfo.getReason()); + return IfishUtil.returnJson(ResultEnum.success.getKey(), shopsInfoMap); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + @Override + public Object getShopsStatus(Integer shopsId) { + ShopsInfo shopsInfo = this.shopsInfoDao.get(shopsId); + if (shopsInfo != null) { + User user = this.userDao.get(shopsInfo.getUserId()); + Map shopsInfoMap = new HashMap(); + shopsInfoMap.put("shopsId", shopsInfo.getShopsId()); + shopsInfoMap.put("userId", shopsInfo.getUserId()); + shopsInfoMap.put("userImg", user.getUserImg()); + shopsInfoMap.put("userName", shopsInfo.getUserName()); + shopsInfoMap.put("shopsName", shopsInfo.getShopsName()); + shopsInfoMap.put("shopsPhone", shopsInfo.getShopsPhone()); + shopsInfoMap.put("shopsProvince", shopsInfo.getShopsProvince()); + shopsInfoMap.put("shopsCity", shopsInfo.getShopsCity()); + shopsInfoMap.put("shopsArea", shopsInfo.getShopsArea()); + shopsInfoMap.put("shopsAddress", shopsInfo.getShopsAddress()); + shopsInfoMap.put("picture1", shopsInfo.getPicture1()); + shopsInfoMap.put("picture2", shopsInfo.getPicture2()); + shopsInfoMap.put("picture3", shopsInfo.getPicture3()); + shopsInfoMap.put("picture4", shopsInfo.getPicture4()); + shopsInfoMap.put("status", shopsInfo.getStatus()); + shopsInfoMap.put("reason", shopsInfo.getReason()); + return IfishUtil.returnJson(ResultEnum.success.getKey(), shopsInfoMap); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + @Override + public Object choiceShops(String phoneNumber, Integer userId) { + //商家用户 + User user = this.userDao.findUniqueByProperty(Restrictions.eq("phoneNumber", phoneNumber)); + //商家和用户不能是同一个帐号 + if (user != null && userId != null && !userId.equals(user.getUserId())) { + //用户类型是商家 + if (user != null && user.getUserType().equals(UserTypeEnum.userType1.getKey())) { + //商家信息 + ShopsInfo shopsInfo = this.shopsInfoDao.findUniqueByProperty(Restrictions.eq("userId", user.getUserId())); + //当前用户 + User tmpUser = this.userDao.get(userId); + if (shopsInfo != null && tmpUser != null) { + tmpUser.setShopsUserId(user.getUserId()); + tmpUser.setUpdateTime(new Date()); + this.userDao.update(tmpUser); + Map shopsInfoMap = new HashMap(); + shopsInfoMap.put("shopsId", shopsInfo.getShopsId()); + shopsInfoMap.put("userId", shopsInfo.getUserId()); + shopsInfoMap.put("userImg", user.getUserImg()); + shopsInfoMap.put("userName", user.getNickName()); + shopsInfoMap.put("shopsName", shopsInfo.getShopsName()); + shopsInfoMap.put("shopsPhone", shopsInfo.getShopsPhone()); + shopsInfoMap.put("shopsProvince", shopsInfo.getShopsProvince()); + shopsInfoMap.put("shopsCity", shopsInfo.getShopsCity()); + shopsInfoMap.put("shopsArea", shopsInfo.getShopsArea()); + shopsInfoMap.put("shopsAddress", shopsInfo.getShopsAddress()); + shopsInfoMap.put("picture1", shopsInfo.getPicture1()); + shopsInfoMap.put("picture2", shopsInfo.getPicture2()); + shopsInfoMap.put("picture3", shopsInfo.getPicture3()); + shopsInfoMap.put("picture4", shopsInfo.getPicture4()); + shopsInfoMap.put("status", shopsInfo.getStatus()); + shopsInfoMap.put("reason", shopsInfo.getReason()); + //发送云信消息 + neteaseIM.sendMsg(IfishFilePath.ifish_account, shopsInfo.getUserId().toString(), "【" + PushTypeEnum.shops_push.getValue() + "】恭喜,[" + tmpUser.getNickName() + "]已经将你锁定为他的看护商家,快去看看吧", ""); + return IfishUtil.returnJson(ResultEnum.success.getKey(), shopsInfoMap); + } + } + } + return IfishUtil.returnJson(ResultEnum.warn212.getKey(), ""); + } + + @Override + public Object onoffLook(String cameraId, Integer userId, String status) { + CameraUserId id = new CameraUserId(userId, cameraId); + CameraUser cameraUser = this.cameraUserDao.get(id); + if (cameraUser != null) { + cameraUser.setIsLook(status); + this.cameraUserDao.update(cameraUser); + return IfishUtil.returnJson(ResultEnum.success.getKey(), ""); + } + return IfishUtil.returnJson(ResultEnum.warn210.getKey(), ""); + } + + @Override + public Object lookReport(Integer userId, String index1, String index2, String index3, String suggestion, MultipartFile fileUpload) { + try { + ShopsInfo shopsInfo = this.shopsInfoDao.findUniqueByProperty(Restrictions.eq("userId", userId)); + User user = this.userDao.get(userId); + if (shopsInfo != null && user != null) { + String pngName = IfishUtil.uploadFile(fileUpload, IfishFilePath.path_look_img); + if (pngName != null && !pngName.equals("")) { + LookReport lookReport = IfishUtil.getLookFile(shopsInfo, user, index1, index2, index3, suggestion, pngName, IfishFilePath.html_name, IfishFilePath.path_look_html); + if (lookReport != null) { + this.lookReportDao.save(lookReport); + Map map = new HashMap(); + map.put("timestamp", IfishUtil.format2(lookReport.getTimestamp())); + map.put("totalIndex", lookReport.getTotalIndex()); + map.put("baifenbi", lookReport.getBaifenbi()); + map.put("shareImg", pngName); + map.put("fileName", lookReport.getHtmlName()); + map.put("reportId", lookReport.getReportId().toString()); + return IfishUtil.returnJson(ResultEnum.success.getKey(), map); + } + } + } + } catch (Exception e) { + throw new RuntimeException(); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + @Override + public Object sendReport(Integer userId, String fileName) { + User user = this.userDao.get(userId); + if (user != null) { + String timestamp = IfishUtil.format(new Date()); + //基本参数 + Map baseMap = new HashMap(); + baseMap.put("title", PushTypeEnum.send_report.getValue()); + baseMap.put("content", "[点击查看]您的看护报告已生成,记得抽空看下哟。"); + baseMap.put("user_id", userId.toString()); + baseMap.put("loginType", user.getLoginType()); + //推送参数 + Map pushMap = new HashMap(); + pushMap.put("push_link", IfishFilePath.getPath(SubDirectoryEnum.look, fileName)); + pushMap.put("timestamp", timestamp); + pushMap.put("msg_type", PushTypeEnum.send_report.getKey()); + jPushNotifcation(baseMap, pushMap); + return IfishUtil.returnJson(ResultEnum.success.getKey(), ""); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + @Override + public Object sendReport(Integer userId, String fileName, Integer reportId) { + User user = this.userDao.get(userId); + if (user != null) { + String timestamp = IfishUtil.format(new Date()); + //基本参数 + Map baseMap = new HashMap(); + baseMap.put("title", PushTypeEnum.send_report.getValue()); + baseMap.put("content", "您的看护报告已生成,记得抽空看下哟,点击查看。"); + baseMap.put("user_id", userId.toString()); + baseMap.put("reportId", reportId.toString()); + baseMap.put("loginType", user.getLoginType()); + //推送参数 + Map pushMap = new HashMap(); + pushMap.put("push_link", IfishFilePath.getPath(SubDirectoryEnum.look, fileName)); + pushMap.put("title", PushTypeEnum.send_report.getValue()); + pushMap.put("timestamp", timestamp); + pushMap.put("reportId", reportId.toString()); + pushMap.put("msg_type", PushTypeEnum.send_report.getKey()); + jPushNotifcation(baseMap, pushMap); + return IfishUtil.returnJson(ResultEnum.success.getKey(), ""); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + @Override + public Object getLookReportById(Integer reportId) { + LookReport lookReport = lookReportDao.get(reportId); + if (lookReport != null) { + Map map = new HashMap(); + map.put("reportId", lookReport.getReportId()); + map.put("shareImg", lookReport.getShareImg()); + map.put("timestamp", IfishUtil.format2(lookReport.getTimestamp())); + map.put("index1", lookReport.getIndex1()); + map.put("index2", lookReport.getIndex2()); + map.put("index3", lookReport.getIndex3()); + map.put("suggestion", lookReport.getSuggestion()); + map.put("totalIndex", lookReport.getTotalIndex()); + map.put("baifenbi", lookReport.getBaifenbi()); + map.put("userImg", lookReport.getUserImg()); + map.put("shopsName", lookReport.getShopsName()); + map.put("signature", lookReport.getSignature()); + map.put("index1Text", Index1Enum.getValue(lookReport.getIndex1())); + map.put("index2Text", Index2Enum.getValue(lookReport.getIndex2())); + map.put("index3Text", Index3Enum.getValue(lookReport.getIndex3())); + return IfishUtil.returnJson(ResultEnum.success.getKey(), map); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + +} diff --git a/src/main/java/com/ifish/serviceImpl/CacheServiceImpl.java b/src/main/java/com/ifish/serviceImpl/CacheServiceImpl.java new file mode 100644 index 0000000..c7fcebe --- /dev/null +++ b/src/main/java/com/ifish/serviceImpl/CacheServiceImpl.java @@ -0,0 +1,190 @@ +package com.ifish.serviceImpl; + +import java.util.ArrayList; +import java.util.List; + +import org.hibernate.criterion.Order; +import org.hibernate.criterion.Restrictions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.alibaba.fastjson.JSONObject; +import com.ifish.dao.AdInfoDao; +import com.ifish.dao.GoldRuleDao; +import com.ifish.dao.GradeDao; +import com.ifish.dao.GradeRuleDao; +import com.ifish.dao.HardwareTypeDao; +import com.ifish.dao.IfishGoodsDao; +import com.ifish.dao.IfishShopDao; +import com.ifish.dao.InformationDao; +import com.ifish.dao.UeditorDao; +import com.ifish.dao.VenderListDao; +import com.ifish.entity.AdInfo; +import com.ifish.entity.GoldTask; +import com.ifish.entity.Grade; +import com.ifish.entity.GradeTask; +import com.ifish.entity.HardwareType; +import com.ifish.entity.IfishGoods; +import com.ifish.entity.IfishShop; +import com.ifish.entity.Information; +import com.ifish.entity.VenderList; +import com.ifish.enums.BooleanEnum; +import com.ifish.enums.SubDirectoryEnum; +import com.ifish.service.CacheService; +import com.ifish.util.IfishFilePath; + +/** + * 缓存数据service + * @author Administrator + * + */ +@Service +@Transactional +public class CacheServiceImpl implements CacheService { + + @Autowired + private GradeDao gradeDao; + @Autowired + private AdInfoDao adInfoDao; + @Autowired + private UeditorDao ueditorDao; + @Autowired + private GoldRuleDao goldRuleDao; + @Autowired + private IfishShopDao ifishShopDao; + @Autowired + private GradeRuleDao gradeRuleDao; + @Autowired + private IfishGoodsDao ifishGoodsDao; + @Autowired + private VenderListDao venderListDao; + @Autowired + private InformationDao informationDao; + @Autowired + private HardwareTypeDao hardwareTypeDao; + + /** + * 根据ID获取硬件类型 + */ + @Cacheable(value="singleCache",key="#id + #root.methodName") + @Override + public HardwareType findHardwareTypeById(String id){ + return hardwareTypeDao.get(id); + } + + /** + * 根据ID查找鱼缸厂 + */ + @Cacheable(value="singleCache",key="#id + #root.methodName") + @Override + public VenderList findVenderListById(String id){ + return venderListDao.get(id); + } + + /** + * 获取等级规则 + * @return + */ + @Cacheable(value="singleCache",key="#id + #root.methodName") + @Override + public GradeTask getGradeRule(String id){ + return gradeRuleDao.get(id); + } + + /** + * 获取金币规则 + * @return + */ + @Cacheable(value="singleCache",key="#id + #root.methodName") + @Override + public GoldTask getGoldRule(String id){ + return goldRuleDao.get(id); + } + /** + * 获取等级信息 + * @return + */ + @Cacheable(value="listCache",key="#root.methodName") + @Override + public List getGradeList(){ + //等级信息 + return gradeDao.findByProperty(Order.asc("gradeNum")); + } + /** + * 获取金币规则信息 + * @return + */ + @Cacheable(value="listCache",key="#root.methodName") + @Override + public List getGoldRuleList(){ + //金币入账规则 + return goldRuleDao.findByProperty(Order.asc("orderNum"),Restrictions.eq("state", BooleanEnum.YES.getKey())); + } + + /** + * 等级规则信息 + */ + @Cacheable(value="listCache",key="#root.methodName") + @Override + public List getGradeRuleList() { + //等级规则信息 + return gradeRuleDao.findByProperty(Order.asc("orderNum"),Restrictions.eq("state", BooleanEnum.YES.getKey())); + } + + /** + * 获取资讯信息 + * @return + */ + @Cacheable(value="informationCache",key="#root.methodName") + @Override + public List getInformation(){ + List informationList = informationDao.findByCriteria(0,1,Order.desc("infoId"),Restrictions.eq("appShow", BooleanEnum.YES.getKey())).getList(); + List jsonList = new ArrayList(); + for (Information information : informationList) { + JSONObject json = new JSONObject(); + jsonList.add(json); + json.put("infoId", information.getInfoId()); + json.put("appShow", information.getAppShow()); + if(information.getUeditorId()!=null){ + json.put("link", IfishFilePath.getPath(SubDirectoryEnum.ueditorHtml,information.getLink())); + } + else{ + json.put("link", information.getLink()); + } + json.put("title", information.getTitle()); + json.put("isAddUserId", information.getUeditorType()); + json.put("createTime", information.getCreateTime()); + + } + return jsonList; + } + + /** + * 广告位信息 + */ + @Cacheable(value="listCache",key="#adType + #root.methodName") + @Override + public List getAdInfoList(int adType) { + return adInfoDao.findByProperty(Order.asc("orderNum"),Restrictions.eq("adType", adType),Restrictions.eq("isShow", BooleanEnum.YES.getKey())); + } + + /** + * 商品信息 + */ + @Cacheable(value="listCache",key="#goodsPlace + #root.methodName") + @Override + public List getIfishGoodsList(int goodsPlace) { + List ifishGoodsList = ifishGoodsDao.findByProperty(Order.desc("goodsId"),Restrictions.eq("goodsPlace", goodsPlace),Restrictions.eq("isShow", Integer.valueOf(BooleanEnum.YES.getKey()))); + for (IfishGoods ifishGoods : ifishGoodsList) { + Integer shopId = ifishGoods.getShopId(); + IfishShop ifishShop = ifishShopDao.get(shopId); + //店铺名称 + if(ifishShop!=null){ + ifishGoods.setShopName(ifishShop.getShopName()); + } + } + return ifishGoodsList; + } +} diff --git a/src/main/java/com/ifish/serviceImpl/CameraServiceImpl.java b/src/main/java/com/ifish/serviceImpl/CameraServiceImpl.java new file mode 100644 index 0000000..bd538b0 --- /dev/null +++ b/src/main/java/com/ifish/serviceImpl/CameraServiceImpl.java @@ -0,0 +1,13 @@ +package com.ifish.serviceImpl; + +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.ifish.service.CameraService; + +@Service +@Transactional +public class CameraServiceImpl implements CameraService{ + + +} diff --git a/src/main/java/com/ifish/serviceImpl/CouponServiceImpl.java b/src/main/java/com/ifish/serviceImpl/CouponServiceImpl.java new file mode 100644 index 0000000..a1ca9b7 --- /dev/null +++ b/src/main/java/com/ifish/serviceImpl/CouponServiceImpl.java @@ -0,0 +1,181 @@ +package com.ifish.serviceImpl; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +import org.hibernate.criterion.Order; +import org.hibernate.criterion.Restrictions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.alibaba.fastjson.JSONObject; +import com.ifish.dao.CouponDao; +import com.ifish.dao.CouponRecordDao; +import com.ifish.dao.GoldExpendRecordDao; +import com.ifish.dao.UserAssetDao; +import com.ifish.dto.JsonResult; +import com.ifish.dto.PageingDto; +import com.ifish.entity.Coupon; +import com.ifish.entity.CouponRecord; +import com.ifish.entity.GoldExpendRecord; +import com.ifish.entity.UserAsset; +import com.ifish.enums.BooleanEnum; +import com.ifish.enums.GoldExpendTypeEnum; +import com.ifish.enums.ResultEnum; +import com.ifish.exception.IfishException; +import com.ifish.hibernate.Pagination; +import com.ifish.service.CouponService; +import com.ifish.util.IfishUtil; +import com.ifish.util.ResultUtil; +import com.ifish.validator.PageParam; + +/** + * 优惠券 + * @author Administrator + * + */ +@Service +@Transactional +public class CouponServiceImpl implements CouponService { + + @Autowired + private CouponDao couponDao; + @Autowired + private UserAssetDao userAssetDao; + @Autowired + private CouponRecordDao couponRecordDao; + @Autowired + private GoldExpendRecordDao goldExpendRecordDao; + + /** + * 获取所有可兑换优惠券 + */ + @Override + public JsonResult getAllValidCoupon() { + Date curDate = IfishUtil.getCurDate(); + //可兑换优惠券 + List couponList = couponDao.findByProperty( + Order.desc("updateTime"), + Restrictions.or( + //在结束日期前可兑换 + Restrictions.ge("validEndDate", curDate), + //都为null表示无使用期限 + Restrictions.and( + Restrictions.isNull("validStartDate"), + Restrictions.isNull("validEndDate") + ) + ) + ); + //查询兑换数量 + for (Coupon coupon : couponList) { + //查询该兑换券的兑换数量 + int exchangeCount = couponRecordDao.getCouponRecordCountByCouponId(coupon.getCouponId()); + coupon.setExchangeCount(exchangeCount); + } + return ResultUtil.success(couponList); + } + + /** + * 兑换优惠券 + */ + @Override + public JsonResult exchangeCoupon(Integer userId, Integer couponId) { + UserAsset userAsset = userAssetDao.get(userId); + if(userAsset==null){ + throw new IfishException(ResultEnum.error402); + } + Coupon coupon = couponDao.get(couponId); + if(coupon==null){ + throw new IfishException(ResultEnum.error402); + } + //有效期内可兑换 + Date validStartDate = coupon.getValidStartDate(); + Date validEndDate = coupon.getValidEndDate(); + Date curDate = IfishUtil.getCurDate(); + //不在有效期内 + if(validStartDate!=null && validEndDate!=null && curDate.compareTo(validEndDate)>0){ + throw new IfishException(ResultEnum.warn219); + } + //优惠券数量 + Integer couponNumber = coupon.getCouponNumber(); + if(couponNumber!=null && couponNumber<=0){ + throw new IfishException(ResultEnum.warn221); + } + //金币不足 + BigDecimal needGold = coupon.getNeedGold(); + BigDecimal goldValue = userAsset.getGoldValue(); + if(goldValue.compareTo(needGold)<0){ + JSONObject json = new JSONObject(); + json.put("goldValue", goldValue); + return ResultUtil.warn(ResultEnum.warn215.getKey(),json); + } + //兑换上限 + Integer upperLimit = coupon.getUpperLimit(); + if(upperLimit!=null){ + int couponCount = couponRecordDao.getCouponRecordCountByUser(userId, couponId); + //兑换达到上限 + if(couponCount>=upperLimit){ + throw new IfishException(ResultEnum.warn220); + } + } + //新增优惠券兑换记录 + CouponRecord couponRecord = new CouponRecord(); + couponRecord.setUserId(userId); + couponRecord.setCouponId(couponId); + couponRecord.setMoneyValue(coupon.getMoneyValue()); + couponRecord.setNeedGold(coupon.getNeedGold()); + couponRecord.setUseNeedMoney(coupon.getUseNeedMoney()); + couponRecord.setTagText(coupon.getTagText()); + couponRecord.setValidStartDate(coupon.getValidStartDate()); + couponRecord.setValidEndDate(coupon.getValidEndDate()); + couponRecord.setIsUsed(BooleanEnum.NO.getKey()); + couponRecord.setCreateTime(new Date()); + //生成8位激活码 + while(true){ + String activationCode = IfishUtil.getCharAndNumr(8).toUpperCase(); + //查询激活码是否存在 + CouponRecord tmpCouponRecord = couponRecordDao.findUniqueByProperty(Restrictions.eq("activationCode", activationCode)); + if(tmpCouponRecord==null){ + couponRecord.setActivationCode(activationCode); + couponRecordDao.save(couponRecord); + //优惠券数量减一 + if(couponNumber!=null){ + couponNumber--; + coupon.setCouponNumber(couponNumber); + } + break; + } + } + //扣除金币 + goldValue = goldValue.subtract(needGold); + userAsset.setGoldValue(goldValue); + //兑换消耗金币记录 + GoldExpendRecord goldRecord = new GoldExpendRecord(userId, needGold, GoldExpendTypeEnum.exchangeCoupon); + //兑换记录ID + goldRecord.setRelationId(couponRecord.getRecordId()); + goldExpendRecordDao.save(goldRecord); + //查询该兑换券的兑换数量 + int exchangeCount = couponRecordDao.getCouponRecordCountByCouponId(couponId); + JSONObject json = new JSONObject(); + json.put("exchangeCount", exchangeCount); + json.put("couponNumber", couponNumber); + json.put("goldValue", goldValue); + return ResultUtil.success(json); + } + + /** + * 优惠券兑换记录 + */ + @Override + public PageingDto getCouponRecordByPage(PageParam param) { + //分页获取数据 + Integer firstResult = param.getFirstResult(); + Pagination page = couponRecordDao.findByCriteria(firstResult, param.getPageSize(), Order.desc("recordId"),Restrictions.eq("userId", param.getUserId())); + List list = page.getList(); + firstResult+=list.size(); + //分页数据封装 + return ResultUtil.success(firstResult, page.getTotalCount(), list); + } +} diff --git a/src/main/java/com/ifish/serviceImpl/GoldServiceImpl.java b/src/main/java/com/ifish/serviceImpl/GoldServiceImpl.java new file mode 100644 index 0000000..11ae4d9 --- /dev/null +++ b/src/main/java/com/ifish/serviceImpl/GoldServiceImpl.java @@ -0,0 +1,430 @@ +package com.ifish.serviceImpl; + +import java.math.BigDecimal; +import java.math.MathContext; +import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +import org.hibernate.criterion.Order; +import org.hibernate.criterion.Restrictions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.alibaba.fastjson.JSONObject; +import com.ifish.dao.GoldControlDao; +import com.ifish.dao.GoldExpendRecordDao; +import com.ifish.dao.GoldGetRecordDao; +import com.ifish.dao.GoldRuleDao; +import com.ifish.dao.UserAssetDao; +import com.ifish.dto.JsonResult; +import com.ifish.dto.PageingDto; +import com.ifish.dto.RuleRecordDto; +import com.ifish.dto.UserAssetDto; +import com.ifish.entity.GoldControl; +import com.ifish.entity.GoldControlId; +import com.ifish.entity.GoldExpendRecord; +import com.ifish.entity.GoldGetRecord; +import com.ifish.entity.GoldTask; +import com.ifish.entity.Grade; +import com.ifish.entity.UserAsset; +import com.ifish.enums.AddTypeEnum; +import com.ifish.enums.BooleanEnum; +import com.ifish.enums.GoldExpendTypeEnum; +import com.ifish.enums.GoldGetTypeEnum; +import com.ifish.enums.ResultEnum; +import com.ifish.exception.IfishException; +import com.ifish.hibernate.Pagination; +import com.ifish.service.AsyncTaskService; +import com.ifish.service.CacheService; +import com.ifish.service.GoldService; +import com.ifish.util.IfishUtil; +import com.ifish.util.ResultUtil; +import com.ifish.validator.AddValueParam; +import com.ifish.validator.PageParam; + +/** + * 金币service + * @author Administrator + * + */ +@Service +@Transactional +public class GoldServiceImpl implements GoldService { + + @Autowired + private GoldRuleDao goldRuleDao; + @Autowired + private GoldGetRecordDao goldGetRecordDao; + @Autowired + private GoldExpendRecordDao goldExpendRecordDao; + @Autowired + private GoldControlDao goldControlDao; + @Autowired + private UserAssetDao userAssetDao; + @Autowired + private CacheService cacheService; + @Autowired + private AsyncTaskService asyncTaskService; + + /** + * 是否加过金币 + * @param userAsset + * @param goldRule + * @param isSignin + * @return + */ + public UserAssetDto getGoldControl(UserAsset userAsset, GoldTask goldRule,boolean isSignin){ + Integer userId = userAsset.getUserId(); + String ruleType = goldRule.getRuleType(); + //日期 + Calendar calendar = Calendar.getInstance(); + //今天 + Date date = calendar.getTime(); + String today = IfishUtil.format1(date); + //昨天 + calendar.add(Calendar.DAY_OF_MONTH, -1); + String yesterday = IfishUtil.format1(calendar.getTime()); + //控制信息 + GoldControlId id = new GoldControlId(userId, ruleType); + GoldControl control = goldControlDao.get(id); + //加成类型 + String addType = goldRule.getAddType(); + if(control==null){ + //加成一次或每天加成 + if(addType.equals(AddTypeEnum.once.getKey()) || addType.equals(AddTypeEnum.everyDay.getKey())){ + //新增控制今天加过金币 + control = new GoldControl(id, today, date); + goldControlDao.save(control); + //加金币 + return addGoldValue(userAsset, goldRule, today, yesterday, isSignin); + } + } + else{ + //每天加成并且今天未加过金币 + if(addType.equals(AddTypeEnum.everyDay.getKey()) && !control.getControlParam().equals(today)){ + //更新今天加过 + control.setControlParam(today); + control.setUpdateTime(date); + //加金币 + return addGoldValue(userAsset, goldRule, today, yesterday, isSignin); + } + } + return getUserAssetInfo(userAsset, new BigDecimal(0), today, yesterday); + } + + /** + * 加金币并保存记录 + * @param userAsset + * @param goldRule + * @param today + * @param yesterday + * @param isSignin + * @return + */ + public UserAssetDto addGoldValue(UserAsset userAsset,GoldTask goldRule,String today,String yesterday,boolean isSignin){ + //用户金币 + BigDecimal goldValue = userAsset.getGoldValue(); + //用户经验值 + Integer gradeValue = userAsset.getGradeValue(); + //应加金币 + BigDecimal addValue = goldRule.getAddValue(); + //签到 + if(isSignin){ + //连续签到 + Integer keepNum = userAsset.getKeepSigninNum(); + //昨天已经签到 + if(yesterday.equals(userAsset.getLastSigninDate())){ + keepNum++; + if(keepNum>7){ + keepNum = 1; + } + } + else{ + keepNum = 1; + } + //连续签到奖励每天加1 + addValue = addValue.add(new BigDecimal(keepNum-1)); + //签到信息 + userAsset.setKeepSigninNum(keepNum); + userAsset.setLastSigninDate(today); + } + //金币加成百分比 + BigDecimal goldAddtion = new BigDecimal(0); + //判定用户等级,根据等级百分比加成金币 + List gradeLsit = cacheService.getGradeList(); + for (Grade grade : gradeLsit) { + if(gradeValue>=grade.getMinValue() && gradeValue0){ + //额外加成金币 + MathContext mc = new MathContext(2, RoundingMode.HALF_DOWN); + BigDecimal extraAddValue = goldAddtion.divide(new BigDecimal(100),mc).multiply(addValue); + //加成后金币 + addValue = addValue.add(extraAddValue); + } + //加金币 + userAsset.setGoldValue(goldValue.add(addValue)); + //加金币记录 + Integer userId = userAsset.getUserId(); + String ruleType = goldRule.getRuleType(); + GoldGetRecord goldRecord = new GoldGetRecord(userId, ruleType, addValue, goldRule.getRuleRemark()); + goldGetRecordDao.save(goldRecord); + //用户动态 + asyncTaskService.saveUserActivity(userId, ruleType); + return getUserAssetInfo(userAsset, addValue, today, yesterday); + } + + /** + * 返回信息封装 + * @param userAsset + * @param addValue + * @return + */ + @Override + public UserAssetDto getUserAssetInfo(UserAsset userAsset,BigDecimal addValue,String today,String yesterday){ + //封装返回值 + UserAssetDto userAssetDto = new UserAssetDto(); + //经验值 + Integer gradeValue = userAsset.getGradeValue(); + //等级信息 + userAssetDto.setGradeValue(gradeValue); + userAssetDto.setGoldValue(userAsset.getGoldValue()); + userAssetDto.setLastLoginDate(userAsset.getLastLoginDate()); + //连续签到 + Integer keepNum = userAsset.getKeepSigninNum(); + //最后签到 + String lastDay = userAsset.getLastSigninDate(); + //今天是否签到 + if(lastDay.equals(today)){ + userAssetDto.setToDaySignin(BooleanEnum.YES.getKey()); + userAssetDto.setKeepSigninNum(keepNum); + } + //最后一次签到是否是昨天 + else if(lastDay.equals(yesterday) && keepNum<7){ + userAssetDto.setKeepSigninNum(keepNum); + } + //所加金币 + userAssetDto.setAddValue(addValue); + //是否砸过金蛋 + userAssetDto.setIsHitGoldenEgg(todayIsHitGoldenEgg(userAsset, today)); + //等级 + for(Grade grade : cacheService.getGradeList()) { + if(gradeValue>=grade.getMinValue() && gradeValue addGoldValue(AddValueParam addValueParam) { + //用户ID + Integer userId = addValueParam.getUserId(); + UserAsset userAsset = userAssetDao.get(userId); + if(userAsset==null){ + return new JsonResult(ResultEnum.error402.getKey()); + } + //规则类型 + String ruleType = addValueParam.getRuleType(); + //签到及砸金蛋接口(有单独的接口) + if(ruleType.equals(GoldGetTypeEnum.everyDaySignin.getKey()) || ruleType.equals(GoldGetTypeEnum.hitGoldenEgg.getKey())){ + throw new IfishException(ResultEnum.error402); + } + GoldTask goldRule = cacheService.getGoldRule(ruleType); + //不存在和未返回给app的 + if(goldRule==null || !goldRule.getState().equals(BooleanEnum.YES.getKey())){ + return new JsonResult(ResultEnum.error402.getKey()); + } + return new JsonResult(ResultEnum.success.getKey(), getGoldControl(userAsset, goldRule, false)); + } + + /** + * 签到 + */ + @Override + public JsonResult signin(Integer userId) { + UserAsset userAsset = userAssetDao.get(userId); + if(userAsset==null){ + return new JsonResult(ResultEnum.error402.getKey()); + } + //签到 + String ruleType = GoldGetTypeEnum.everyDaySignin.getKey(); + GoldTask goldRule = cacheService.getGoldRule(ruleType); + if(goldRule==null || !goldRule.getState().equals(BooleanEnum.YES.getKey())){ + return new JsonResult(ResultEnum.error402.getKey()); + } + return new JsonResult(ResultEnum.success.getKey(), getGoldControl(userAsset, goldRule, true)); + } + + /** + * 砸金蛋 + */ + @Override + public JsonResult hitGoldenEgg(Integer userId) { + UserAsset userAsset = userAssetDao.get(userId); + if(userAsset==null){ + return new JsonResult(ResultEnum.error402.getKey()); + } + //砸金蛋 + String ruleType = GoldGetTypeEnum.hitGoldenEgg.getKey(); + GoldTask goldRule = cacheService.getGoldRule(ruleType); + if(goldRule==null){ + return new JsonResult(ResultEnum.error402.getKey()); + } + //连续签到7天才能砸金蛋 + Integer keepNum = userAsset.getKeepSigninNum(); + String lastDate = userAsset.getLastSigninDate(); + if(keepNum==7 && lastDate.equals(IfishUtil.format1(new Date()))){ + return new JsonResult(ResultEnum.success.getKey(), getGoldControl(userAsset, goldRule, false)); + } + else{ + //日期 + Calendar calendar = Calendar.getInstance(); + //今天 + Date date = calendar.getTime(); + String today = IfishUtil.format1(date); + //昨天 + calendar.add(Calendar.DAY_OF_MONTH, -1); + String yesterday = IfishUtil.format1(calendar.getTime()); + //查询 + return new JsonResult(ResultEnum.success.getKey(), getUserAssetInfo(userAsset, new BigDecimal(0), today, yesterday)); + } + } + + /** + * 金币获取记录 + */ + @Override + public PageingDto getGoldGetRecordByPage(PageParam pageParam) { + Integer firstResult = pageParam.getFirstResult(); + //根据ID查询获取经验记录 + Pagination page = goldGetRecordDao.findByCriteria(firstResult, pageParam.getPageSize(), Order.desc("recordId"),Restrictions.eq("userId", pageParam.getUserId())); + List goldRecordList = page.getList(); + firstResult+=goldRecordList.size(); + //数据封装 + List recordList = new ArrayList(); + for (GoldGetRecord record : goldRecordList) { + RuleRecordDto recordDto = new RuleRecordDto(record.getRecordId(), record.getAddValue().toString(), record.getRecordRemark(), IfishUtil.format1(record.getCreateTime())); + recordList.add(recordDto); + } + //分页数据封装 + PageingDto pageingData = new PageingDto(ResultEnum.success.getKey(), firstResult, page.getTotalCount(), recordList); + return pageingData; + } + /** + * 金币消耗记录 + */ + @Override + public PageingDto getGoldExpendRecordByPage(PageParam pageParam) { + Integer firstResult = pageParam.getFirstResult(); + //根据ID查询获取经验记录 + Pagination page = goldExpendRecordDao.findByCriteria(firstResult, pageParam.getPageSize(), Order.desc("recordId"),Restrictions.eq("userId", pageParam.getUserId())); + List goldRecordList = page.getList(); + firstResult+=goldRecordList.size(); + //数据封装 + List recordList = new ArrayList(); + for (GoldExpendRecord record : goldRecordList) { + RuleRecordDto recordDto = new RuleRecordDto(record.getRecordId(), record.getExpendValue().toString(), record.getRecordRemark(), IfishUtil.format1(record.getCreateTime())); + recordList.add(recordDto); + } + //分页数据封装 + return new PageingDto(ResultEnum.success.getKey(), firstResult, page.getTotalCount(), recordList); + } + + /** + * 爱鱼看看打赏 + */ + @Override + public JsonResult liveRoomReward(Integer userId, Integer userId2) { + //自己给自己打赏 + if(userId.equals(userId2)){ + throw new IfishException(ResultEnum.error401); + } + //打赏人用户 + UserAsset userAsset = userAssetDao.get(userId); + if(userAsset==null){ + throw new IfishException(ResultEnum.error402); + } + //被打赏人用户 + UserAsset userAsset2 = userAssetDao.get(userId2); + if(userAsset2==null){ + //之前注册用户赠送20金币 + BigDecimal gold = new BigDecimal(20); + userAsset2 = new UserAsset(userId2,gold); + userAssetDao.save(userAsset2); + //获取记录 + GoldGetRecord getRecord = new GoldGetRecord(userId2, GoldGetTypeEnum.registerGive.getKey(), gold, GoldGetTypeEnum.registerGive.getValue()); + goldGetRecordDao.save(getRecord); + } + //爱鱼看看打赏金币 + GoldTask goldTask = goldRuleDao.get(GoldGetTypeEnum.liveRoomPayTour.getKey()); + if(goldTask==null){ + throw new IfishException(ResultEnum.error402); + } + //打赏人金币 + BigDecimal goldValue = userAsset.getGoldValue(); + //打赏金币 + BigDecimal addValue = goldTask.getAddValue(); + //打赏人金币不足 + if(goldValue.compareTo(addValue)<0){ + JSONObject json = new JSONObject(); + json.put("goldValue", goldValue); + return ResultUtil.warn(ResultEnum.warn215.getKey(),json); + } + //打赏人扣除金币 + goldValue = goldValue.subtract(addValue); + userAsset.setGoldValue(goldValue); + //打赏人金币消耗记录 + GoldExpendRecord goldRecord = new GoldExpendRecord(userId, addValue, GoldExpendTypeEnum.liveRoomPayTour); + goldExpendRecordDao.save(goldRecord); + //被打赏人增加金币 + BigDecimal goldValue2 = userAsset2.getGoldValue(); + goldValue2 = goldValue2.add(addValue); + userAsset2.setGoldValue(goldValue2); + //金币获取记录 + GoldGetRecord getRecord = new GoldGetRecord(userId2,addValue,GoldGetTypeEnum.liveRoomPayTour); + goldGetRecordDao.save(getRecord); + //打赏金币数量 + BigDecimal totalGoldValue = goldGetRecordDao.getQuestionPayTourGoldValue(userId2); + //返回金币剩余数量 + JSONObject json = new JSONObject(); + json.put("userGoldValue", goldValue); + json.put("rewardValue", addValue); + json.put("totalGoldValue", totalGoldValue); + return ResultUtil.success(json); + } + +} diff --git a/src/main/java/com/ifish/serviceImpl/GradeServicempl.java b/src/main/java/com/ifish/serviceImpl/GradeServicempl.java new file mode 100644 index 0000000..3f44405 --- /dev/null +++ b/src/main/java/com/ifish/serviceImpl/GradeServicempl.java @@ -0,0 +1,221 @@ +package com.ifish.serviceImpl; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.hibernate.criterion.Order; +import org.hibernate.criterion.Restrictions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.alibaba.fastjson.JSONObject; +import com.ifish.dao.GradeControlDao; +import com.ifish.dao.GradeDao; +import com.ifish.dao.GradeRecordDao; +import com.ifish.dao.GradeRuleDao; +import com.ifish.dao.UserAssetDao; +import com.ifish.dto.JsonResult; +import com.ifish.dto.PageingDto; +import com.ifish.dto.RuleInfoDto; +import com.ifish.dto.RuleRecordDto; +import com.ifish.dto.UserAssetDto; +import com.ifish.entity.GradeControl; +import com.ifish.entity.GradeControlId; +import com.ifish.entity.GradeRecord; +import com.ifish.entity.GradeTask; +import com.ifish.entity.UserAsset; +import com.ifish.enums.AddTypeEnum; +import com.ifish.enums.BooleanEnum; +import com.ifish.enums.GradeGetTypeEnum; +import com.ifish.enums.ResultEnum; +import com.ifish.exception.IfishException; +import com.ifish.hibernate.Pagination; +import com.ifish.service.AsyncTaskService; +import com.ifish.service.CacheService; +import com.ifish.service.GoldService; +import com.ifish.service.GradeService; +import com.ifish.util.IfishUtil; +import com.ifish.validator.AddValueParam; +import com.ifish.validator.PageParam; + +/** + * 等级service + * @author Administrator + * + */ +@Service +@Transactional +public class GradeServicempl implements GradeService{ + + @Autowired + private GradeDao gradeDao; + @Autowired + private GradeRuleDao gradeRuleDao; + @Autowired + private GradeRecordDao gradeRecordDao; + @Autowired + private GradeControlDao gradeControlDao; + @Autowired + private GradeControlDao GradeControlDao; + @Autowired + private UserAssetDao userAssetDao; + @Autowired + private CacheService cacheService; + @Autowired + private GoldService goldService; + @Autowired + private AsyncTaskService asyncTaskService; + + /** + * 是否加过经验 + */ + @Override + public UserAssetDto getGradeControl(UserAsset userAsset, GradeTask gradeRule,boolean isLogin){ + Integer userId = userAsset.getUserId(); + String ruleType = gradeRule.getRuleType(); + //日期 + Calendar calendar = Calendar.getInstance(); + //今天 + Date date = calendar.getTime(); + String today = IfishUtil.format1(date); + //昨天 + calendar.add(Calendar.DAY_OF_MONTH, -1); + String yesterday = IfishUtil.format1(calendar.getTime()); + //控制信息 + GradeControlId id = new GradeControlId(userId, ruleType); + GradeControl control = gradeControlDao.get(id); + //加成类型 + String addType = gradeRule.getAddType(); + if(control==null){ + //加成一次或每天加成 + if(addType.equals(AddTypeEnum.once.getKey()) || addType.equals(AddTypeEnum.everyDay.getKey())){ + //新增控制今天加过经验 + control = new GradeControl(id, today, date); + gradeControlDao.save(control); + //加经验 + return addGradeValue(userAsset, gradeRule, today, yesterday, isLogin); + } + } + else{ + //每天加成并且今天未加过经验 + if(addType.equals(AddTypeEnum.everyDay.getKey()) && !control.getControlParam().equals(today)){ + //更新今天加过 + control.setControlParam(today); + control.setUpdateTime(date); + //加经验 + return addGradeValue(userAsset, gradeRule, today, yesterday, isLogin); + } + } + return goldService.getUserAssetInfo(userAsset, new BigDecimal(0), today, yesterday); + } + /** + * 加经验并保存记录 + * @param userAsset + * @param GradeTask + * @param today + * @param yesterday + * @return + */ + public UserAssetDto addGradeValue(UserAsset userAsset,GradeTask gradeRule,String today,String yesterday,boolean isLogin){ + Integer userId = userAsset.getUserId(); + String ruleType = gradeRule.getRuleType(); + //用户经验 + Integer gradeValue = userAsset.getGradeValue(); + //加经验值 + Integer addValue = gradeRule.getAddValue(); + //加经验 + gradeValue += addValue; + userAsset.setGradeValue(gradeValue); + //登陆则保存登陆日期 + if(isLogin){ + userAsset.setLastLoginDate(today); + } + //加经验值记录 + GradeRecord gradeRecord = new GradeRecord(userId, ruleType, addValue, gradeRule.getRuleRemark()); + gradeRecordDao.save(gradeRecord); + //用户动态 + asyncTaskService.saveUserActivity(userId, ruleType); + return goldService.getUserAssetInfo(userAsset, new BigDecimal(addValue), today, yesterday); + } + + /** + * 根据类型加经验 + */ + @Override + public JsonResult addGradeValue(AddValueParam addValueParam) { + //用户ID + UserAsset userAsset = userAssetDao.get(addValueParam.getUserId()); + if(userAsset==null){ + throw new IfishException(ResultEnum.error402); + } + //规则类型 + GradeTask gradeRule = cacheService.getGradeRule(addValueParam.getRuleType()); + //不存在和未返回给app的以及登陆的(在登陆时处理) + if(gradeRule==null || !gradeRule.getState().equals(BooleanEnum.YES.getKey()) || gradeRule.getRuleType().equals(GradeGetTypeEnum.everyDayLogin.getKey())){ + throw new IfishException(ResultEnum.error402); + } + return new JsonResult(ResultEnum.success.getKey(), getGradeControl(userAsset, gradeRule, false)); + } + + @Override + public PageingDto getGradeRecordByPage(PageParam pageParam) { + Integer firstResult = pageParam.getFirstResult(); + //根据ID查询获取经验记录 + Pagination page = gradeRecordDao.findByCriteria(firstResult, pageParam.getPageSize(), Order.desc("recordId"),Restrictions.eq("userId", pageParam.getUserId())); + List gradeRecordList = page.getList(); + firstResult+=gradeRecordList.size(); + //数据封装 + List recordList = new ArrayList(); + for (GradeRecord record : gradeRecordList) { + RuleRecordDto recordDto = new RuleRecordDto(record.getRecordId(), record.getAddValue().toString(), record.getRecordRemark(), IfishUtil.format1(record.getCreateTime())); + recordList.add(recordDto); + } + //分页数据封装 + PageingDto pageingData = new PageingDto(ResultEnum.success.getKey(), firstResult, page.getTotalCount(), recordList); + return pageingData; + } + + @Override + public JsonResult getGradeRuleInfo(Integer userId) { + //今天日期 + String today = IfishUtil.format1(new Date()); + //已完成任务规则 + List gradeControls = gradeControlDao.findByProperty(Restrictions.eq("gradeControlId.userId", userId),Restrictions.eq("controlParam", today)); + Map finishTask = new HashMap(); + for (GradeControl gradeControl : gradeControls) { + finishTask.put(gradeControl.getGradeControlId().getRuleType(), gradeControl.getControlParam()); + } + //规则信息 + List ruleInfoList = new ArrayList(); + //所有任务规则 + for (GradeTask gradeRule : cacheService.getGradeRuleList()) { + //类型 + String ruleType = gradeRule.getRuleType(); + //加成类型 + String addType = gradeRule.getAddType(); + //规则信息DTO + RuleInfoDto ruleInfoDto = new RuleInfoDto(ruleType, gradeRule.getRuleName(), addType, gradeRule.getAddValue().toString(), gradeRule.getRuleRemark(), BooleanEnum.NO.getKey()); + ruleInfoList.add(ruleInfoDto); + //任务是否完成 + String controlDate = finishTask.get(ruleType); + if(controlDate!=null){ + if(addType.equals(AddTypeEnum.once.getKey()) || (addType.equals(AddTypeEnum.everyDay.getKey()) && controlDate.equals(today))){ + ruleInfoDto.setIsFinish(BooleanEnum.YES.getKey()); + } + } + } + JSONObject json = new JSONObject(); + //规则信息 + json.put("gradeRules", ruleInfoList); + //等级信息 + json.put("grades", cacheService.getGradeList()); + return new JsonResult(ResultEnum.success.getKey(), json); + } + +} diff --git a/src/main/java/com/ifish/serviceImpl/IfishDoctorServiceImpl.java b/src/main/java/com/ifish/serviceImpl/IfishDoctorServiceImpl.java new file mode 100644 index 0000000..22440c6 --- /dev/null +++ b/src/main/java/com/ifish/serviceImpl/IfishDoctorServiceImpl.java @@ -0,0 +1,139 @@ +package com.ifish.serviceImpl; + +import java.math.BigDecimal; +import java.math.MathContext; +import java.math.RoundingMode; +import java.util.Date; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.ifish.dao.GoldExpendRecordDao; +import com.ifish.dao.GoldGetRecordDao; +import com.ifish.dao.GoldRuleDao; +import com.ifish.dao.IfishDoctorDao; +import com.ifish.dao.ShopsInfoDao; +import com.ifish.dao.UserAssetDao; +import com.ifish.dto.JsonResult; +import com.ifish.entity.GoldExpendRecord; +import com.ifish.entity.GoldGetRecord; +import com.ifish.entity.IfishDoctor; +import com.ifish.entity.UserAsset; +import com.ifish.enums.BooleanEnum; +import com.ifish.enums.GoldExpendTypeEnum; +import com.ifish.enums.GoldGetTypeEnum; +import com.ifish.enums.PayTourTypeEnum; +import com.ifish.enums.ResultEnum; +import com.ifish.exception.IfishException; +import com.ifish.netease.NeteaseIM; +import com.ifish.service.IfishDoctorService; +import com.ifish.util.IfishUtil; +import com.ifish.util.ResultUtil; + +@Service +@Transactional +public class IfishDoctorServiceImpl implements IfishDoctorService{ + + @Autowired + private GoldRuleDao goldRuleDao; + @Autowired + private UserAssetDao userAssetDao; + @Autowired + private GoldGetRecordDao goldGetRecordDao; + @Autowired + private GoldExpendRecordDao goldExpendRecordDao; + @Autowired + private IfishDoctorDao ifishDoctorDao; + @Autowired + private ShopsInfoDao shopsInfoDao; + @Autowired + private NeteaseIM neteaseIM; + + @Override + public Object saveIfishDoctor(IfishDoctor ifishDoctor) { + Integer userId = ifishDoctor.getUserId(); + String questionContent = ifishDoctor.getQuestionContent(); + if(userId!=null && questionContent!=null && questionContent.length()>0){ + ifishDoctor.setIsPayTour(BooleanEnum.NO.getKey()); + ifishDoctor.setPayTourSum(new BigDecimal(0)); + ifishDoctor.setCreateTime(new Date()); + this.ifishDoctorDao.save(ifishDoctor); + return IfishUtil.toJson(ResultEnum.success.getKey(), ""); + } + return IfishUtil.toJson(ResultEnum.fail101.getKey(), ""); + } + + @Override + public JsonResult payTourSubmitQuestion(IfishDoctor ifishDoctor,String payTour) { + Integer userId = ifishDoctor.getUserId(); + //打赏金额 + BigDecimal payTourSum = PayTourTypeEnum.getValue(payTour); + // + if(payTourSum==null){ + throw new IfishException(ResultEnum.error401); + } + //用户资产 + UserAsset userAsset = userAssetDao.get(userId); + if(userAsset==null){ + throw new IfishException(ResultEnum.warn211); + } + BigDecimal goldValue = userAsset.getGoldValue(); + //金币不足 + if(goldValue.compareTo(payTourSum)<0){ + JSONObject json = new JSONObject(); + json.put("goldValue", goldValue); + return ResultUtil.warn(ResultEnum.warn215.getKey(),json); + } + //平分金币给10个商家 + List userIds = shopsInfoDao.getShopsUserIdByRand(userId); + Integer size = userIds.size(); + if(size<=0){ + throw new IfishException(ResultEnum.warn218); + } + //保存问题 + ifishDoctor.setIsPayTour(BooleanEnum.YES.getKey()); + ifishDoctor.setPayTourSum(payTourSum); + ifishDoctor.setCreateTime(new Date()); + ifishDoctorDao.save(ifishDoctor); + //扣除金币 + goldValue = goldValue.subtract(payTourSum); + userAsset.setGoldValue(goldValue); + //金币消耗记录 + GoldExpendRecord goldRecord = new GoldExpendRecord(userId, payTourSum, GoldExpendTypeEnum.questionPayTour); + goldRecord.setRelationId(ifishDoctor.getQuestionId()); + goldExpendRecordDao.save(goldRecord); + //平分金币 + MathContext mc = new MathContext(2, RoundingMode.HALF_DOWN); + BigDecimal avgGoldValue = payTourSum.divide(new BigDecimal(size),mc); + //已注册用户赠送20金币 + BigDecimal gold = new BigDecimal(20); + for (Integer shopsUserId : userIds) { + UserAsset shopsUserAsset = userAssetDao.get(shopsUserId); + if(shopsUserAsset==null){ + shopsUserAsset = new UserAsset(shopsUserId, gold); + userAssetDao.save(shopsUserAsset); + //金币获取记录 + GoldGetRecord getRecord = new GoldGetRecord(shopsUserId,gold,GoldGetTypeEnum.registerGive); + goldGetRecordDao.save(getRecord); + } + //加金币 + BigDecimal shopsGoldValue = shopsUserAsset.getGoldValue(); + shopsGoldValue = shopsGoldValue.add(avgGoldValue); + shopsUserAsset.setGoldValue(shopsGoldValue); + //金币获取记录 + GoldGetRecord getRecord = new GoldGetRecord(shopsUserId,avgGoldValue,GoldGetTypeEnum.questionPayTour); + getRecord.setRelationId(ifishDoctor.getQuestionId()); + goldGetRecordDao.save(getRecord); + } + //发送云信通知 + neteaseIM.sendBatchMsg(userId.toString(),JSONArray.toJSONString(userIds), "【"+avgGoldValue+"金币打赏】来自鱼医生的提问:"+ifishDoctor.getQuestionContent()); + //返回金币剩余数量 + JSONObject json = new JSONObject(); + json.put("goldValue", goldValue); + return ResultUtil.success(json); + } +} diff --git a/src/main/java/com/ifish/serviceImpl/IfishGoodsServiceImpl.java b/src/main/java/com/ifish/serviceImpl/IfishGoodsServiceImpl.java new file mode 100644 index 0000000..73936ca --- /dev/null +++ b/src/main/java/com/ifish/serviceImpl/IfishGoodsServiceImpl.java @@ -0,0 +1,71 @@ +package com.ifish.serviceImpl; + +import java.util.ArrayList; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.ifish.dao.IfishGoodsDao; +import com.ifish.dto.IfishGoodsDto; +import com.ifish.dto.JsonResult; +import com.ifish.entity.IfishGoods; +import com.ifish.enums.IfishShopPlaceEnum; +import com.ifish.enums.SubDirectoryEnum; +import com.ifish.service.CacheService; +import com.ifish.service.IfishGoodsService; +import com.ifish.util.IfishFilePath; +import com.ifish.util.ResultUtil; + +/** + * 商品管理service + * @author Administrator + * + */ +@Service +@Transactional +public class IfishGoodsServiceImpl implements IfishGoodsService { + + @Autowired + private IfishGoodsDao ifishGoodsDao; + @Autowired + private CacheService cacheService; + + /** + * 根据展示位置获取商品 + */ + @Override + public JsonResult getIfishGoodsByGoodsPlace(IfishShopPlaceEnum shopPlaceEnum) { + //商品信息list + List ifishGoodsList = cacheService.getIfishGoodsList(shopPlaceEnum.getKey()); + //封装返回 + List dtoList = new ArrayList(); + for (IfishGoods ifishGoods : ifishGoodsList) { + //商品信息DTO + IfishGoodsDto dto = new IfishGoodsDto(ifishGoods.getGoodsId(), ifishGoods.getShopName(), ifishGoods.getGoodsName(), + ifishGoods.getGoodsLink(), ifishGoods.getOriPrice(), ifishGoods.getPrePrice()); + dto.setIsTaobaoLink(ifishGoods.getIsTaobaoLink()); + dtoList.add(dto); + //商品图片地址 + String goodsPicture = IfishFilePath.getPath(SubDirectoryEnum.ifishGoods,ifishGoods.getGoodsPicture()); + dto.setGoodsPicture(goodsPicture); + } + return ResultUtil.success(dtoList); + } + + /** + * 增加商品点击数 + */ + @Override + public JsonResult addClickNum(Integer goodsId) { + IfishGoods ifishGoods = ifishGoodsDao.get(goodsId); + if(ifishGoods!=null){ + Integer clickNum = ifishGoods.getClickNum(); + ifishGoods.setClickNum(++clickNum); + ifishGoodsDao.update(ifishGoods); + } + return ResultUtil.success(); + } + +} diff --git a/src/main/java/com/ifish/serviceImpl/InformationServiceImpl.java b/src/main/java/com/ifish/serviceImpl/InformationServiceImpl.java new file mode 100644 index 0000000..8b3a85a --- /dev/null +++ b/src/main/java/com/ifish/serviceImpl/InformationServiceImpl.java @@ -0,0 +1,197 @@ +package com.ifish.serviceImpl; + +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.hibernate.criterion.Order; +import org.hibernate.criterion.Restrictions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.alibaba.fastjson.JSONObject; +import com.ifish.dao.CommentDao; +import com.ifish.dao.InformationDao; +import com.ifish.dao.InformationStatsDao; +import com.ifish.dao.UeditorDao; +import com.ifish.dao.UserDao; +import com.ifish.dto.InformationDto; +import com.ifish.dto.JsonResult; +import com.ifish.dto.PageingDto; +import com.ifish.entity.Comment; +import com.ifish.entity.Information; +import com.ifish.entity.InformationStats; +import com.ifish.entity.Ueditor; +import com.ifish.entity.User; +import com.ifish.enums.BooleanEnum; +import com.ifish.enums.SubDirectoryEnum; +import com.ifish.enums.ResultEnum; +import com.ifish.enums.UeditorTypeEnum; +import com.ifish.exception.IfishException; +import com.ifish.hibernate.Pagination; +import com.ifish.netease.NeteaseIM; +import com.ifish.service.InformationService; +import com.ifish.util.IfishFilePath; +import com.ifish.util.ResultUtil; +import com.ifish.validator.PageParam; + +@Service +@Transactional +public class InformationServiceImpl implements InformationService{ + + @Autowired + private UserDao userDao; + @Autowired + private UeditorDao ueditorDao; + @Autowired + private CommentDao commentDao; + @Autowired + private InformationDao informationDao; + @Autowired + private InformationStatsDao informStatsDao; + @Autowired + private NeteaseIM neteaseIM; + + @Override + public Object saveComment(Comment comment) { + Integer ueditorId = comment.getUeditorId(); + Integer userId = comment.getUserId(); + String commentContent = comment.getCommentContent(); + if(ueditorId!=null && userId!=null && commentContent!=null && commentContent.length()>0){ + Integer asUserId = comment.getAsUserId(); + if(asUserId!=null){ + if(!asUserId.equals(userId)){ + //发送云信消息给所@的用户 + neteaseIM.sendMsg(userId.toString(), asUserId.toString(), "来自资讯的回复:"+commentContent,""); + } + } + comment.setCreateTime(new Date()); + this.commentDao.save(comment); + return true; + } + return false; + } + + @Override + public Ueditor findUeditorById(Integer ueditorId) { + if(ueditorId!=null){ + return this.ueditorDao.get(ueditorId); + } + return null; + } + + @Override + public Map findCommentsByUeditorId(Integer ueditorId,Integer firstResult,Integer pageSize) { + if(ueditorId!=null){ + if(firstResult==null){ + firstResult = 0; + } + if(pageSize==null){ + pageSize = 10; + } + Pagination page = this.commentDao.findByCriteria(firstResult, pageSize, Order.desc("commentId"), Restrictions.eq("ueditorId", ueditorId)); + List commentList = page.getList(); + for (Comment comment : commentList) { + User user = this.userDao.get(comment.getUserId()); + if(user!=null){ + comment.setUserName(user.getNickName()); + comment.setUserImg(user.getUserImg()); + } + if(comment.getAsUserId()!=null){ + User tmpUser = this.userDao.get(comment.getAsUserId()); + if(tmpUser!=null){ + comment.setAsUserName("@"+tmpUser.getNickName()+" "); + } + else{ + comment.setAsUserName(""); + } + } + else{ + comment.setAsUserName(""); + } + } + firstResult+=commentList.size(); + Map map = new HashMap(); + map.put("commentList", commentList); + map.put("firstResult", firstResult); + map.put("totalCount", page.getTotalCount()); + return map; + } + else{ + return null; + } + } + + /** + * 分页获取资讯 + */ + @Override + public PageingDto getInformationsByPage(PageParam pageParam) { + //分页获取数据 + Integer firstResult = pageParam.getFirstResult(); + Pagination page = informationDao.findByCriteria(firstResult, pageParam.getPageSize(),Order.desc("infoId"),Restrictions.eq("appShow", BooleanEnum.YES.getKey())); + List list = page.getList(); + firstResult+=list.size(); + //数据封装 + List dtoList = new ArrayList(); + for (Information info : list) { + //资讯ID + Integer infoId = info.getInfoId(); + InformationDto dto = new InformationDto(infoId); + dtoList.add(dto); + //标题内容图片 + dto.setTitle(info.getTitle()); + dto.setContents(info.getContents()); + dto.setImage(IfishFilePath.getPath(SubDirectoryEnum.information,info.getImage())); + //点击数 + InformationStats infoStats = informStatsDao.get(infoId); + if(infoStats!=null){ + dto.setClickNum(infoStats.getClickNum()); + } + //编辑器 + Integer ueditorId = info.getUeditorId(); + if(ueditorId!=null){ + //链接 + StringBuilder link = new StringBuilder(IfishFilePath.getPath(SubDirectoryEnum.ueditorHtml,info.getLink())); + //是否可以评论,可以评论则拼接用户ID + if(UeditorTypeEnum.yespinglun.getKey().equals(info.getUeditorType())){ + link.append("&userId="+pageParam.getUserId()); + } + //标题链接 + dto.setLink(link.toString()); + //评论数 + Integer pinglunNum = commentDao.getPinglunNum(ueditorId); + dto.setPinglunNum(pinglunNum); + } + else{ + dto.setLink(info.getLink()); + } + } + //分页数据封装 + return new PageingDto(ResultEnum.success.getKey(), firstResult, page.getTotalCount(), dtoList); + } + + /** + * 加点击数 + */ + @Override + public JsonResult addClickNum(Integer infoId) { + //资讯统计信息 + InformationStats informStats = informStatsDao.get(infoId); + if(informStats==null){ + throw new IfishException(ResultEnum.error402); + } + Integer cNum = informStats.getClickNum(); + informStats.setClickNum(++cNum); + informStatsDao.update(informStats); + //返回数据 + JSONObject json = new JSONObject(); + json.put("infoId", informStats.getInfoId()); + json.put("clickNum", informStats.getClickNum()); + return ResultUtil.success(json); + } + +} \ No newline at end of file diff --git a/src/main/java/com/ifish/serviceImpl/LiveRoomServiceImpl.java b/src/main/java/com/ifish/serviceImpl/LiveRoomServiceImpl.java new file mode 100644 index 0000000..0ef807c --- /dev/null +++ b/src/main/java/com/ifish/serviceImpl/LiveRoomServiceImpl.java @@ -0,0 +1,554 @@ +package com.ifish.serviceImpl; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.apache.commons.lang3.StringUtils; +import org.hibernate.criterion.Order; +import org.hibernate.criterion.Restrictions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.alibaba.fastjson.JSONObject; +import com.ifish.dao.BrowseRoomDao; +import com.ifish.dao.CameraDao; +import com.ifish.dao.CameraUserDao; +import com.ifish.dao.GoldGetRecordDao; +import com.ifish.dao.LiveBannerDao; +import com.ifish.dao.LiveMessageDao; +import com.ifish.dao.LiveRoomDao; +import com.ifish.dao.LiveRoomZanDao; +import com.ifish.dao.UserAssetDao; +import com.ifish.dao.UserDao; +import com.ifish.dto.JsonResult; +import com.ifish.dto.LiveRoomInfoDto; +import com.ifish.dto.PageingDto; +import com.ifish.entity.BrowseRoom; +import com.ifish.entity.BrowseRoomId; +import com.ifish.entity.CameraUser; +import com.ifish.entity.CameraUserId; +import com.ifish.entity.Grade; +import com.ifish.entity.LiveBanner; +import com.ifish.entity.LiveMessage; +import com.ifish.entity.LiveRoom; +import com.ifish.entity.LiveRoomZan; +import com.ifish.entity.LiveRoomZanId; +import com.ifish.entity.User; +import com.ifish.entity.UserAsset; +import com.ifish.enums.BooleanEnum; +import com.ifish.enums.ResultEnum; +import com.ifish.enums.RoomStatusEnum; +import com.ifish.exception.IfishException; +import com.ifish.hibernate.Pagination; +import com.ifish.netease.NeteaseIM; +import com.ifish.service.AsyncTaskService; +import com.ifish.service.CacheService; +import com.ifish.service.LiveRoomService; +import com.ifish.util.IfishUtil; +import com.ifish.util.ResultUtil; +import com.ifish.validator.LiveRoomParam; +import com.ifish.validator.PageParam; + +@Service +@Transactional +public class LiveRoomServiceImpl implements LiveRoomService { + + @Autowired + private UserDao userDao; + @Autowired + private CameraDao cameraDao; + @Autowired + private NeteaseIM neteaseIM; + @Autowired + private LiveRoomDao liveRoomDao; + @Autowired + private UserAssetDao userAssetDao; + @Autowired + private CacheService cacheService; + @Autowired + private CameraUserDao cameraUserDao; + @Autowired + private LiveBannerDao liveBannerDao; + @Autowired + private BrowseRoomDao browseRoomDao; + @Autowired + private LiveMessageDao liveMessageDao; + @Autowired + private LiveRoomZanDao liveRoomZanDao; + @Autowired + private GoldGetRecordDao goldGetRecordDao; + @Autowired + private AsyncTaskService asyncTaskService; + + @Override + public JSONObject addLiveRoom(LiveRoomParam liveRoomParam) { + //用户ID + Integer userId = liveRoomParam.getUserId(); + User user = userDao.get(userId); + if (user == null) { + throw new IfishException(ResultEnum.error402); + } + //用户是否绑定摄像头 + String cameraId = liveRoomParam.getCameraId(); + CameraUserId cameraUserId = new CameraUserId(userId, cameraId); + CameraUser cameraUser = this.cameraUserDao.get(cameraUserId); + if (cameraUser == null) { + throw new IfishException(ResultEnum.error402); + } + //原来不是开启状态 + if (!BooleanEnum.YES.getKey().equals(cameraUser.getIsLive())) { + //开启直播 + cameraUser.setIsLive(BooleanEnum.YES.getKey()); + } + //新增直播间 + LiveRoom liveRoom = new LiveRoom(); + liveRoom.setUserId(userId); + liveRoom.setRoomName(liveRoomParam.getRoomName()); + liveRoom.setRoomDesc(liveRoomParam.getRoomDesc()); + liveRoom.setRoomStatus(liveRoomParam.getRoomStatus()); + liveRoom.setCreateTime(new Date()); + //首次开启分享则发送云信消息给所有用户 + /*if(!BooleanEnum.YES.getKey().equals(liveRoom.getFirstShare()) && RoomStatusEnum.status1.getKey().equals(liveRoom.getRoomStatus())){ + liveRoom.setFirstShare(BooleanEnum.YES.getKey()); + asyncTaskService.sendMsgToAll(userId); + } + else{*/ + liveRoom.setFirstShare(BooleanEnum.NO.getKey()); + //} + //人气值 + liveRoom.setPopularityValue(0); + //摄像头ID + liveRoomDao.save(liveRoom); + Integer roomId = liveRoom.getRoomId(); + JSONObject json = new JSONObject(); + json.put("cameraId", cameraId); + json.put("isLive", cameraUser.getIsLive()); + json.put("roomId", roomId); + return json; + } + + @Override + public JsonResult updateLiveRoom(Integer roomId, LiveRoomParam liveRoomParam) { + //查找直播间信息 + LiveRoom curLiveRoom = this.liveRoomDao.get(roomId); + if (curLiveRoom == null) { + throw new IfishException(ResultEnum.error402); + } + //用户ID + Integer userId = liveRoomParam.getUserId(); + //摄像头 + String cameraId = liveRoomParam.getCameraId(); + //用户是否绑定摄像头 + CameraUserId cameraUserId = new CameraUserId(userId, cameraId); + CameraUser cameraUser = this.cameraUserDao.get(cameraUserId); + if (cameraUser == null) { + throw new IfishException(ResultEnum.error402); + } + //返回摄像头信息 + List list = new ArrayList(); + //原来不是开启状态 + if (!BooleanEnum.YES.getKey().equals(cameraUser.getIsLive())) { + //开启直播 + cameraUser.setIsLive(BooleanEnum.YES.getKey()); + //关闭其他摄像头直播 + List cameraUserList = this.cameraUserDao.findByProperty(Restrictions.eq("cameraUserId.userId", userId), Restrictions.ne("cameraUserId.cameraId", cameraId)); + for (CameraUser curCameraUser : cameraUserList) { + curCameraUser.setIsLive(BooleanEnum.NO.getKey()); + JSONObject json = new JSONObject(); + json.put("cameraId", curCameraUser.getCameraUserId().getCameraId()); + json.put("isLive", curCameraUser.getIsLive()); + list.add(json); + } + } + //返回摄像头直播状态 + JSONObject json = new JSONObject(); + json.put("cameraId", cameraId); + json.put("isLive", cameraUser.getIsLive()); + list.add(json); + //更新直播间信息 + curLiveRoom.setRoomName(liveRoomParam.getRoomName()); + curLiveRoom.setRoomDesc(liveRoomParam.getRoomDesc()); + curLiveRoom.setRoomStatus(liveRoomParam.getRoomStatus()); + //首次开启分享则发送云信消息给所有用户 + /*if(!BooleanEnum.YES.getKey().equals(curLiveRoom.getFirstShare()) && RoomStatusEnum.status1.getKey().equals(liveRoomParam.getRoomStatus())){ + curLiveRoom.setFirstShare(BooleanEnum.YES.getKey()); + asyncTaskService.sendMsgToAll(userId); + }*/ + return ResultUtil.success(list); + } + + @Override + public Object popularityValue(Integer roomId, Integer userId) { + if (roomId != null && userId != null) { + //浏览直播间记录 + BrowseRoomId browseRoomId = new BrowseRoomId(roomId, userId); + BrowseRoom browseRoom = this.browseRoomDao.get(browseRoomId); + Date date = new Date(); + //新增浏览记录 + if (browseRoom != null) { + browseRoom.setUpdateTime(date); + this.browseRoomDao.update(browseRoom); + } else { + //更新浏览记录 + browseRoom = new BrowseRoom(); + browseRoom.setBrowseRoomId(browseRoomId); + browseRoom.setUpdateTime(date); + browseRoom.setCreateTime(date); + this.browseRoomDao.save(browseRoom); + } + //查找直播间信息 + LiveRoom curLiveRoom = this.liveRoomDao.get(roomId); + if (curLiveRoom != null) { + Integer popularityValue = curLiveRoom.getPopularityValue(); + //人气值加一 + popularityValue++; + curLiveRoom.setPopularityValue(popularityValue); + this.liveRoomDao.update(curLiveRoom); + Map map = new HashMap(); + map.put("roomId", roomId); + map.put("popularityValue", popularityValue); + return IfishUtil.toJson(ResultEnum.success.getKey(), popularityValue); + } + } + return IfishUtil.toJson(ResultEnum.fail101.getKey(), ""); + } + + @Override + public Object getLiveRoomInfo(Integer userId) { + if (userId != null) { + //查找直播间信息 + LiveRoom curLiveRoom = this.liveRoomDao.findUniqueByProperty(Restrictions.eq("userId", userId)); + if (curLiveRoom != null) { + Map map = new HashMap(); + Integer roomId = curLiveRoom.getRoomId(); + map.put("roomId", roomId); + map.put("userId", curLiveRoom.getUserId()); + map.put("roomName", curLiveRoom.getRoomName()); + map.put("roomDesc", curLiveRoom.getRoomDesc()); + map.put("popularityValue", curLiveRoom.getPopularityValue()); + map.put("roomStatus", curLiveRoom.getRoomStatus()); + return IfishUtil.toJson(ResultEnum.success.getKey(), map); + } + } + return IfishUtil.toJson(ResultEnum.success.getKey(), ""); + } + + @Override + public Object getLiveRoomsByPage(Integer firstResult, Integer pageSize, Integer userId, String orders) { + if (firstResult != null && pageSize != null && userId != null) { + Map returnMap = new HashMap(); + LinkedHashMap map = new LinkedHashMap(); + if (firstResult == 0) { + User user = this.userDao.get(userId); + if (user != null) { + //经度 + Double longitude = user.getLongitude(); + //纬度 + Double latitude = user.getLatitude(); + //距离用户最近的前5条记录 + List distanceList = this.liveRoomDao.findByDistance(longitude, latitude); + for (LiveRoomInfoDto liveRoomInfo : distanceList) { + Integer roomId = liveRoomInfo.getRoomId(); + map.put(roomId, liveRoomInfo); + } + //获取用户最近浏览的5条记录 + List browseList = this.liveRoomDao.findByBrowse(userId); + for (LiveRoomInfoDto liveRoomInfo : browseList) { + Integer roomId = liveRoomInfo.getRoomId(); + map.put(roomId, liveRoomInfo); + } + //获取人气值最高的5条记录 + List popularityList = this.liveRoomDao.findByPopularityValue(); + for (LiveRoomInfoDto liveRoomInfo : popularityList) { + Integer roomId = liveRoomInfo.getRoomId(); + map.put(roomId, liveRoomInfo); + } + //去重条件 + orders = StringUtils.join(map.keySet().toArray(), ","); + //根据开播时间倒序排列 + Pagination page = this.liveRoomDao.findByTime(firstResult, pageSize, orders); + List timeList = page.getList(); + for (LiveRoomInfoDto liveRoomInfo : timeList) { + Integer roomId = liveRoomInfo.getRoomId(); + map.put(roomId, liveRoomInfo); + } + List list = new ArrayList(); + Long curTime = new Date().getTime(); + //计算活跃值 + for (LiveRoomInfoDto liveRoomInfo : map.values()) { + Long loginTime = liveRoomInfo.getLoginTime().getTime(); + //最近登录天数 + Integer days = (int) ((curTime - loginTime) / (1000 * 60 * 60 * 24)); + //小于一周 + if (days <= 7) { + liveRoomInfo.setLiveness("优"); + } //一周至半个月 + else if (days > 7 && days <= 15) { + liveRoomInfo.setLiveness("良"); + } //半个月至一个月 + else if (days > 15 && days <= 30) { + liveRoomInfo.setLiveness("中"); + } else { + liveRoomInfo.setLiveness("差"); + } + list.add(liveRoomInfo); + } + returnMap.put("orders", orders); + returnMap.put("total", page.getTotalCount()); + returnMap.put("liveRoomInfo", list); + return IfishUtil.toJson(ResultEnum.success.getKey(), returnMap); + } + } else { + //根据开播时间倒序排列 + Pagination page = this.liveRoomDao.findByTime(firstResult, pageSize, orders); + List timeList = page.getList(); + Long curTime = new Date().getTime(); + //计算活跃值 + for (LiveRoomInfoDto liveRoomInfo : timeList) { + Long loginTime = liveRoomInfo.getLoginTime().getTime(); + //最近登录天数 + Integer days = (int) ((curTime - loginTime) / (1000 * 60 * 60 * 24)); + //小于一周 + if (days <= 7) { + liveRoomInfo.setLiveness("优"); + } //一周至半个月 + else if (days > 7 && days <= 15) { + liveRoomInfo.setLiveness("良"); + } //半个月至一个月 + else if (days > 15 && days <= 30) { + liveRoomInfo.setLiveness("中"); + } else { + liveRoomInfo.setLiveness("差"); + } + } + returnMap.put("orders", orders); + returnMap.put("total", page.getTotalCount()); + returnMap.put("liveRoomInfo", timeList); + return IfishUtil.toJson(ResultEnum.success.getKey(), returnMap); + } + } + return IfishUtil.toJson(ResultEnum.fail101.getKey(), ""); + } + + @Override + public List getLiveBanners() { + //app展示的banner图 + List list = this.liveBannerDao.findByProperty(Order.desc("bannerId"), Restrictions.eq("appShow", BooleanEnum.YES.getKey())); + return list; + } + + @Override + public Object leaveMessage(LiveMessage liveMessage) { + Integer roomId = liveMessage.getRoomId(); + Integer userId = liveMessage.getUserId(); + String messageContent = liveMessage.getMessageContent(); + if (roomId != null && userId != null && messageContent != null && messageContent.length() > 0) { + LiveRoom liveRoom = this.liveRoomDao.get(roomId); + User user = this.userDao.get(userId); + if (liveRoom != null && user != null) { + liveMessage.setCreateTime(new Date()); + this.liveMessageDao.save(liveMessage); + liveMessage.setUserName(user.getNickName()); + liveMessage.setUserImg(user.getUserImg()); + Integer asUserId = liveMessage.getAsUserId(); + if (asUserId != null) { + User asUser = this.userDao.get(asUserId); + if (asUser != null) { + liveMessage.setAsUserName(asUser.getNickName()); + if (!asUserId.equals(userId)) { + //发送云信消息给所@的用户 + neteaseIM.sendMsg(userId.toString(), asUserId.toString(), "来自爱鱼看看的回复:" + messageContent, ""); + } + } else { + Integer roomUserId = liveRoom.getUserId(); + if (!roomUserId.equals(userId)) { + //发送云信消息给房主 + neteaseIM.sendMsg(userId.toString(), roomUserId.toString(), "来自爱鱼看看的留言:" + messageContent, ""); + } + } + } + return IfishUtil.toJson(ResultEnum.success.getKey(), liveMessage); + } + } + return IfishUtil.toJson(ResultEnum.fail101.getKey(), ""); + } + + @Override + public Object getLiveMessageByPage(Integer firstResult, Integer pageSize, Integer roomId) { + if (firstResult == null) { + firstResult = 0; + } + if (pageSize == null) { + pageSize = 10; + } + //根据直播间ID分页获取留言信息 + Pagination page = this.liveMessageDao.findByCriteria(firstResult, pageSize, Order.desc("messageId"), Restrictions.eq("roomId", roomId)); + List list = page.getList(); + for (LiveMessage liveMessage : list) { + User user = this.userDao.get(liveMessage.getUserId()); + if (user != null) { + liveMessage.setUserName(user.getNickName()); + liveMessage.setUserImg(user.getUserImg()); + } + if (liveMessage.getAsUserId() != null) { + User tmpUser = this.userDao.get(liveMessage.getAsUserId()); + if (tmpUser != null) { + liveMessage.setAsUserName(tmpUser.getNickName()); + } else { + liveMessage.setAsUserName(""); + } + } else { + liveMessage.setAsUserName(""); + } + } + firstResult += list.size(); + //分页数据封装 + PageingDto pageingData = new PageingDto(ResultEnum.success.getKey(), firstResult, page.getTotalCount(), list); + return pageingData; + } + + /** + * 按时间倒序分页获取直播间信息 + */ + @Override + public PageingDto getLiveRoomsByTime(PageParam pageParam) { + Integer firstResult = pageParam.getFirstResult(); + //按时间倒序 + Pagination page = this.liveRoomDao.findByTime(firstResult, pageParam.getPageSize(), null); + List list = page.getList(); + firstResult += list.size(); + //分页数据封装 + return new PageingDto(ResultEnum.success.getKey(), firstResult, page.getTotalCount(), getLiveRoomInfoDto(pageParam.getUserId(), list)); + } + + /** + * 按人气值倒序分页获取直播间信息 + */ + @Override + public PageingDto getLiveRoomsByPopularityValue(PageParam pageParam) { + Integer firstResult = pageParam.getFirstResult(); + //按时间倒序 + Pagination page = this.liveRoomDao.findByPopularityValue(firstResult, pageParam.getPageSize()); + List list = page.getList(); + firstResult += list.size(); + //分页数据封装 + return new PageingDto(ResultEnum.success.getKey(), firstResult, page.getTotalCount(), getLiveRoomInfoDto(pageParam.getUserId(), list)); + } + + @Override + public PageingDto getLiveRoomsByTuijian(PageParam pageParam) { + Integer firstResult = pageParam.getFirstResult(); + //按时间倒序 + Pagination page = this.liveRoomDao.getLiveRoomsByTuijian(firstResult, pageParam.getPageSize()); + List list = page.getList(); + firstResult += list.size(); + //分页数据封装 + return new PageingDto(ResultEnum.success.getKey(), firstResult, page.getTotalCount(), getLiveRoomInfoDto(pageParam.getUserId(), list)); + } + + /** + * 封装数据 + * + * @param userId + * @param list + * @return + */ + public List getLiveRoomInfoDto(Integer userId, List list) { + Long curTime = new Date().getTime(); + for (LiveRoomInfoDto liveRoomInfo : list) { + Integer roomId = liveRoomInfo.getRoomId(); + Integer roomUserId = liveRoomInfo.getUserId(); + //是否点赞 + LiveRoomZanId id = new LiveRoomZanId(roomId, userId); + LiveRoomZan zan = liveRoomZanDao.get(id); + if (zan == null) { + liveRoomInfo.setIsZan(BooleanEnum.NO.getKey()); + } else { + liveRoomInfo.setIsZan(BooleanEnum.YES.getKey()); + } + //点赞数量 + liveRoomInfo.setZanNum(liveRoomZanDao.getZanNum(roomId)); + //评论数 + liveRoomInfo.setPinglunNum(liveMessageDao.getLiveMessageCount(roomId)); + //打赏金币数量 + BigDecimal goldValue = goldGetRecordDao.getQuestionPayTourGoldValue(roomUserId); + if (goldValue != null) { + liveRoomInfo.setTotalGoldValue(goldValue); + } else { + liveRoomInfo.setTotalGoldValue(new BigDecimal(0)); + } + //等级 + UserAsset userAsset = userAssetDao.get(roomUserId); + liveRoomInfo.setGradeNum(0); + if (userAsset != null) { + //经验值 + Integer gradeValue = userAsset.getGradeValue(); + //等级 + for (Grade grade : cacheService.getGradeList()) { + if (gradeValue >= grade.getMinValue() && gradeValue < grade.getMaxValue()) { + liveRoomInfo.setGradeNum(grade.getGradeNum()); + break; + } + } + } + //最近登录天数 + Long loginTime = liveRoomInfo.getLoginTime().getTime(); + Integer days = (int) ((curTime - loginTime) / (1000 * 60 * 60 * 24)); + //小于一周 + if (days <= 7) { + liveRoomInfo.setLiveness("优"); + } //一周至半个月 + else if (days > 7 && days <= 15) { + liveRoomInfo.setLiveness("良"); + } //半个月至一个月 + else if (days > 15 && days <= 30) { + liveRoomInfo.setLiveness("中"); + } else { + liveRoomInfo.setLiveness("差"); + } + } + return list; + } + + /** + * 点赞/取消点赞 + */ + @Override + public JsonResult liveRoomsZan(Integer roomId, Integer userId) { + //点赞数量 + Integer zanNum = liveRoomZanDao.getZanNum(roomId); + //是否点过赞 + LiveRoomZanId id = new LiveRoomZanId(roomId, userId); + LiveRoomZan zan = liveRoomZanDao.get(id); + JSONObject json = new JSONObject(); + if (zan == null) { + LiveRoom liveRoom = liveRoomDao.get(roomId); + if (liveRoom == null) { + throw new IfishException(ResultEnum.error402); + } + User user = userDao.get(userId); + if (user == null) { + throw new IfishException(ResultEnum.error402); + } + //点赞 + zan = new LiveRoomZan(id); + liveRoomZanDao.save(zan); + json.put("isZan", BooleanEnum.YES.getKey()); + zanNum++; + } else { + //取消点赞 + liveRoomZanDao.delete(zan); + json.put("isZan", BooleanEnum.NO.getKey()); + zanNum--; + } + json.put("zanNum", zanNum); + return ResultUtil.success(json); + } + +} diff --git a/src/main/java/com/ifish/serviceImpl/PageListServiceImpl.java b/src/main/java/com/ifish/serviceImpl/PageListServiceImpl.java new file mode 100644 index 0000000..cda805e --- /dev/null +++ b/src/main/java/com/ifish/serviceImpl/PageListServiceImpl.java @@ -0,0 +1,39 @@ +package com.ifish.serviceImpl; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.ifish.dao.PushListDao; +import com.ifish.dao.UserDao; +import com.ifish.dto.ShopsLookUserDto; +import com.ifish.entity.PushList; +import com.ifish.hibernate.Pagination; +import com.ifish.service.PageListService; + +/** + * @ClassName: PageListServiceImpl + * @Description: TODO + * @author ggw + * + */ +@Service +@Transactional +public class PageListServiceImpl implements PageListService { + + @Autowired + private PushListDao pushListDao; + @Autowired + private UserDao userDao; + + @Override + public Pagination getPushListByPage(Integer pushId, Integer userId, Integer firstResult, Integer pageSize) { + return pushListDao.findByCriteria(pushId, userId, firstResult, pageSize); + } + + @Override + public Pagination getLookListByPage(Integer shopsUserId,Integer firstResult, Integer pageSize) { + return userDao.findByCriteria(shopsUserId, firstResult, pageSize); + } + +} diff --git a/src/main/java/com/ifish/serviceImpl/ShopsServiceImpl.java b/src/main/java/com/ifish/serviceImpl/ShopsServiceImpl.java new file mode 100644 index 0000000..9e30078 --- /dev/null +++ b/src/main/java/com/ifish/serviceImpl/ShopsServiceImpl.java @@ -0,0 +1,475 @@ +package com.ifish.serviceImpl; + +import java.io.File; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.hibernate.criterion.Order; +import org.hibernate.criterion.Restrictions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import com.ifish.dao.CameraUserDao; +import com.ifish.dao.DeviceUserDao; +import com.ifish.dao.ShopsInfoDao; +import com.ifish.dao.ShopsUserInfoDao; +import com.ifish.dao.UserDao; +import com.ifish.dto.JsonResult; +import com.ifish.dto.PageingDto; +import com.ifish.dto.ShopsListDto; +import com.ifish.dto.ShopsUserDto; +import com.ifish.dto.ShopsUserInfoDto; +import com.ifish.entity.CameraUser; +import com.ifish.entity.ShopsInfo; +import com.ifish.entity.ShopsUserInfo; +import com.ifish.entity.ShopsUserInfoId; +import com.ifish.entity.User; +import com.ifish.enums.BooleanEnum; +import com.ifish.enums.MemberLevelEnum; +import com.ifish.enums.PushTypeEnum; +import com.ifish.enums.ResultEnum; +import com.ifish.enums.ShopsStatusEnum; +import com.ifish.enums.UserTypeEnum; +import com.ifish.exception.IfishException; +import com.ifish.hibernate.Pagination; +import com.ifish.mail.Mail; +import com.ifish.netease.NeteaseIM; +import com.ifish.service.AsyncTaskService; +import com.ifish.service.ShopsService; +import com.ifish.util.IfishFilePath; +import com.ifish.util.IfishUtil; +import com.ifish.util.ResultUtil; +import com.ifish.validator.PageParam; +import com.ifish.validator.ShopsUserInfoParam; + +@Service +@Transactional +public class ShopsServiceImpl implements ShopsService{ + + @Autowired + private UserDao userDao; + @Autowired + private NeteaseIM neteaseIM; + @Autowired + private ShopsInfoDao shopsInfoDao; + @Autowired + private CameraUserDao cameraUserDao; + @Autowired + private DeviceUserDao deviceUserDao; + @Autowired + private ShopsUserInfoDao shopsUserInfoDao; + @Autowired + private AsyncTaskService asyncTaskService; + + @Override + public Object getShopsInfoByPage(Integer userId,Integer firstResult, Integer pageSize) { + if(userId!=null){ + if(firstResult==null){ + firstResult=0; + } + if(pageSize==null){ + pageSize=10; + } + User user = this.userDao.get(userId); + Pagination page = this.shopsInfoDao.findByDistance(user.getLongitude(), user.getLatitude(), firstResult, pageSize); + Map returnMap = new HashMap(); + returnMap.put("result", ResultEnum.success.getKey()); + returnMap.put("total", page.getTotalCount()); + returnMap.put("data", page.getList()); + return returnMap; + } + return IfishUtil.toJson(ResultEnum.fail101.getKey(), ""); + } + + @Override + public Object choiceShops(Integer shopsUserId, Integer userId) { + //普通用户 + User user = this.userDao.get(userId); + if(user==null){ + throw new IfishException(ResultEnum.error402); + } + //商家用户 + User shopsUser = this.userDao.get(shopsUserId); + if(shopsUser==null){ + throw new IfishException(ResultEnum.error402); + } + //商家信息 + ShopsInfo shopsInfo = this.shopsInfoDao.findUniqueByProperty(Restrictions.eq("userId", shopsUserId)); + if(shopsInfo==null){ + throw new IfishException(ResultEnum.error402); + } + //是商家类型用户 + if(shopsUser.getUserType().equals(UserTypeEnum.userType1.getKey())){ + //选择商家 + user.setShopsUserId(shopsUserId); + this.userDao.update(user); + //摄像头默认开启看护 + List CameraUserList = cameraUserDao.findByProperty(Restrictions.eq("cameraUserId.userId", userId)); + for (CameraUser cameraUser : CameraUserList) { + cameraUser.setIsLook(BooleanEnum.YES.getKey()); + cameraUserDao.update(cameraUser); + } + //成为商家会员 + ShopsUserInfoId id = new ShopsUserInfoId(shopsInfo.getShopsId(), userId); + ShopsUserInfo tmp = shopsUserInfoDao.get(id); + if(tmp==null){ + //新增商家用户信息 + tmp = new ShopsUserInfo(id, MemberLevelEnum.level_1.getKey()); + tmp.setUserName(user.getNickName()); + tmp.setPhoneNumber(user.getPhoneNumber()); + shopsUserInfoDao.save(tmp); + //发送云信息消息 + asyncTaskService.sendMsgToShopsUser(userId, shopsUserId, user.getNickName()); + } + //发送云信消息 + neteaseIM.sendMsg(IfishFilePath.ifish_account, shopsUserId.toString(), "【"+PushTypeEnum.shops_push.getValue()+"】恭喜,["+user.getNickName()+"]已经将你锁定为他的看护商家,快去看看吧",""); + return IfishUtil.toJson(ResultEnum.success.getKey(), getShoppsInfo(shopsInfo, shopsUser)); + } + return IfishUtil.toJson(ResultEnum.fail101.getKey(), ""); + } + + @Override + public Object removeLook(Integer userId) { + if(userId!=null){ + User user = this.userDao.get(userId); + if(user!=null){ + //解除看护关系 + user.setShopsUserId(null); + this.userDao.update(user); + List cameraUserList = this.cameraUserDao.findByProperty(Restrictions.eq("isLook", BooleanEnum.YES.getKey())); + for (CameraUser cameraUser : cameraUserList) { + cameraUser.setIsLook(BooleanEnum.NO.getKey()); + this.cameraUserDao.update(cameraUser); + } + return IfishUtil.toJson(ResultEnum.success.getKey(), ""); + } + } + return IfishUtil.toJson(ResultEnum.fail101.getKey(), ""); + } + + @Override + public Object saveShopsInfo(ShopsInfo shopsInfo,MultipartFile file1,MultipartFile file2,MultipartFile file3) { + //用户ID + Integer userId = shopsInfo.getUserId(); + User user = this.userDao.get(userId); + if(user==null){ + return IfishUtil.returnJson(ResultEnum.warn211.getKey(), ""); + } + //验证图片格式 + if(!file1.isEmpty() && !file2.isEmpty() && !file3.isEmpty()) { + try { + if(!file1.getOriginalFilename().equals("")){ + File picFile = new File(IfishFilePath.path_shops+"/"+userId, "1.png"); + //不存在则创建 + if(!picFile.exists()){ + picFile.mkdirs(); + } + //保存 + file1.transferTo(picFile); + } + if(!file2.getOriginalFilename().equals("")){ + File picFile = new File(IfishFilePath.path_shops+"/"+userId, "2.png"); + //不存在则创建 + if(!picFile.exists()){ + picFile.mkdirs(); + } + //保存 + file2.transferTo(picFile); + } + if(!file3.getOriginalFilename().equals("")){ + File picFile = new File(IfishFilePath.path_shops+"/"+userId, "3.png"); + //不存在则创建 + if(!picFile.exists()){ + picFile.mkdirs(); + } + //保存 + file3.transferTo(picFile); + } + //保存商家信息 + shopsInfo.setPicture1("1.png"); + shopsInfo.setPicture2("2.png"); + shopsInfo.setPicture3("3.png"); + shopsInfo.setStatus(ShopsStatusEnum.status2.getKey()); + shopsInfo.setUpdateTime(new Date()); + shopsInfo.setCreateTime(new Date()); + this.shopsInfoDao.save(shopsInfo); + //发送邮件 + Mail.send(user.getNickName()+"("+user.getPhoneNumber()+")提交审核了", "有提交新的审核!"); + return IfishUtil.returnJson(ResultEnum.success.getKey(), getShoppsInfo(shopsInfo, user)); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + @Override + public Object updateShopsInfo(ShopsInfo shopsInfo, MultipartFile file1,MultipartFile file2, MultipartFile file3) { + ShopsInfo tmpShopsInfo = this.shopsInfoDao.get(shopsInfo.getShopsId()); + if(tmpShopsInfo!=null){ + Integer userId = tmpShopsInfo.getUserId(); + try { + if(file1!=null && !file1.isEmpty() && !file1.getOriginalFilename().equals("")){ + File picFile = new File(IfishFilePath.path_shops+"/"+userId, "1.png"); + //不存在则创建 + if(!picFile.exists()){ + picFile.mkdirs(); + } + //保存 + file1.transferTo(picFile); + } + if(file2!=null && !file2.isEmpty() && !file2.getOriginalFilename().equals("")){ + File picFile = new File(IfishFilePath.path_shops+"/"+userId, "2.png"); + //不存在则创建 + if(!picFile.exists()){ + picFile.mkdirs(); + } + //保存 + file2.transferTo(picFile); + } + if(file3!=null && !file3.isEmpty() && !file3.getOriginalFilename().equals("")){ + File picFile = new File(IfishFilePath.path_shops+"/"+userId, "3.png"); + //不存在则创建 + if(!picFile.exists()){ + picFile.mkdirs(); + } + //保存 + file3.transferTo(picFile); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + //保存商家信息 + tmpShopsInfo.setShopsName(shopsInfo.getShopsName()); + tmpShopsInfo.setUserName(shopsInfo.getUserName()); + tmpShopsInfo.setShopsPhone(shopsInfo.getShopsPhone()); + tmpShopsInfo.setShopsProvince(shopsInfo.getShopsProvince()); + tmpShopsInfo.setShopsCity(shopsInfo.getShopsCity()); + tmpShopsInfo.setShopsArea(shopsInfo.getShopsArea()); + tmpShopsInfo.setShopsAddress(shopsInfo.getShopsAddress()); + tmpShopsInfo.setStatus(ShopsStatusEnum.status2.getKey()); + tmpShopsInfo.setWeixinCode(shopsInfo.getWeixinCode()); + tmpShopsInfo.setShopLink(shopsInfo.getShopLink()); + tmpShopsInfo.setUpdateTime(new Date()); + this.shopsInfoDao.update(tmpShopsInfo); + User user = this.userDao.get(tmpShopsInfo.getUserId()); + //发送邮件 + Mail.send(user.getNickName()+"("+user.getPhoneNumber()+")重新提交审核了", "重新提交了新的审核!"); + return IfishUtil.returnJson(ResultEnum.success.getKey(), getShoppsInfo(tmpShopsInfo, user)); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + @Override + public Object updateBaseShopsInfo(ShopsInfo shopsInfo,MultipartFile file4) { + ShopsInfo tmpShopsInfo = this.shopsInfoDao.get(shopsInfo.getShopsId()); + if(tmpShopsInfo!=null){ + try{ + if(file4!=null && !file4.isEmpty() && !file4.getOriginalFilename().equals("")){ + File picFile = new File(IfishFilePath.path_shops+"/"+tmpShopsInfo.getUserId(), "4.png"); + //不存在则创建 + if(!picFile.exists()){ + picFile.mkdirs(); + } + //保存 + file4.transferTo(picFile); + tmpShopsInfo.setPicture4("4.png"); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + tmpShopsInfo.setShopsPhone(shopsInfo.getShopsPhone()); + tmpShopsInfo.setShopsProvince(shopsInfo.getShopsProvince()); + tmpShopsInfo.setShopsCity(shopsInfo.getShopsCity()); + tmpShopsInfo.setShopsArea(shopsInfo.getShopsArea()); + tmpShopsInfo.setShopsAddress(shopsInfo.getShopsAddress()); + tmpShopsInfo.setWeixinCode(shopsInfo.getWeixinCode()); + tmpShopsInfo.setShopLink(shopsInfo.getShopLink()); + tmpShopsInfo.setUpdateTime(new Date()); + this.shopsInfoDao.update(tmpShopsInfo); + User user = this.userDao.get(tmpShopsInfo.getUserId()); + return IfishUtil.returnJson(ResultEnum.success.getKey(), getShoppsInfo(tmpShopsInfo, user)); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + @Override + public Object getShopsStatus(Integer shopsId){ + ShopsInfo shopsInfo = this.shopsInfoDao.get(shopsId); + if(shopsInfo!=null){ + User user = this.userDao.get(shopsInfo.getUserId()); + return IfishUtil.returnJson(ResultEnum.success.getKey(), getShoppsInfo(shopsInfo, user)); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + + public Map getShoppsInfo(ShopsInfo shopsInfo,User user){ + Map shopsInfoMap = new HashMap(); + shopsInfoMap.put("shopsId", shopsInfo.getShopsId()); + shopsInfoMap.put("userId", shopsInfo.getUserId()); + shopsInfoMap.put("userImg", user.getUserImg()); + shopsInfoMap.put("userName", shopsInfo.getUserName()); + shopsInfoMap.put("shopsName", shopsInfo.getShopsName()); + shopsInfoMap.put("shopsPhone", shopsInfo.getShopsPhone()); + shopsInfoMap.put("shopsProvince", shopsInfo.getShopsProvince()); + shopsInfoMap.put("shopsCity", shopsInfo.getShopsCity()); + shopsInfoMap.put("shopsArea", shopsInfo.getShopsArea()); + shopsInfoMap.put("shopsAddress", shopsInfo.getShopsAddress()); + shopsInfoMap.put("picture1", shopsInfo.getPicture1()); + shopsInfoMap.put("picture2", shopsInfo.getPicture2()); + shopsInfoMap.put("picture3", shopsInfo.getPicture3()); + shopsInfoMap.put("picture4", shopsInfo.getPicture4()); + shopsInfoMap.put("status", shopsInfo.getStatus()); + shopsInfoMap.put("remark", shopsInfo.getRemark()); + shopsInfoMap.put("reason", shopsInfo.getReason()); + shopsInfoMap.put("weixinCode", shopsInfo.getWeixinCode()); + shopsInfoMap.put("shopLink", shopsInfo.getShopLink()); + return shopsInfoMap; + } + + /** + * 获取商家会员信息 + */ + @Override + public JsonResult getShopsUserInfoById(Integer userId, Integer shopsId) { + ShopsUserInfoId id = new ShopsUserInfoId(shopsId, userId); + ShopsUserInfo shopsUserInfo = shopsUserInfoDao.get(id); + //商家用户信息 + if(shopsUserInfo==null){ + //用户信息 + User user = userDao.get(userId); + if(user==null){ + throw new IfishException(ResultEnum.error402); + } + //临时商家用户信息 + shopsUserInfo = new ShopsUserInfo(id, MemberLevelEnum.level_1.getKey()); + shopsUserInfo.setPhoneNumber(user.getPhoneNumber()); + shopsUserInfo.setUserName(user.getNickName()); + } + //水族箱个数 + int deviceNum = deviceUserDao.getDeviceNumById(userId); + //摄像头个数 + int cameraNum = cameraUserDao.getCameraNumById(userId); + //返回信息DTO + ShopsUserInfoDto infoDto = new ShopsUserInfoDto(userId, shopsId, shopsUserInfo.getMemberLevel(), deviceNum, cameraNum); + infoDto.setUserName(shopsUserInfo.getUserName()); + infoDto.setPhoneNumber(shopsUserInfo.getPhoneNumber()); + infoDto.setProvince(shopsUserInfo.getProvince()); + infoDto.setCity(shopsUserInfo.getCity()); + infoDto.setArea(shopsUserInfo.getArea()); + infoDto.setAddress(shopsUserInfo.getAddress()); + infoDto.setRemark(shopsUserInfo.getRemark()); + return ResultUtil.success(infoDto); + } + + /** + * 更新商家会员信息 + */ + @Override + public JsonResult updateShopsUserInfo(Integer userId,Integer shopsId,ShopsUserInfoParam param) { + //商家用户信息 + ShopsUserInfoId id = new ShopsUserInfoId(shopsId, userId); + ShopsUserInfo tmp = shopsUserInfoDao.get(id); + if(tmp==null){ + //用户信息 + User user = userDao.get(userId); + if(user==null){ + throw new IfishException(ResultEnum.error402); + } + //商家信息 + ShopsInfo shopsInfo = shopsInfoDao.get(shopsId); + if(shopsInfo==null){ + throw new IfishException(ResultEnum.error402); + } + //新增商家会员信息 + tmp = new ShopsUserInfo(id, param.getMemberLevel()); + tmp.setUserName(param.getUserName()); + tmp.setPhoneNumber(param.getPhoneNumber()); + tmp.setProvince(param.getProvince()); + tmp.setCity(param.getCity()); + tmp.setArea(param.getArea()); + tmp.setAddress(param.getAddress()); + tmp.setRemark(param.getRemark()); + shopsUserInfoDao.save(tmp); + //发送云信息消息 + asyncTaskService.sendMsgToShopsUser(userId, shopsInfo.getUserId(), user.getNickName()); + } + else{ + //更新用户信息 + tmp.setMemberLevel(param.getMemberLevel()); + tmp.setUserName(param.getUserName()); + tmp.setPhoneNumber(param.getPhoneNumber()); + tmp.setProvince(param.getProvince()); + tmp.setCity(param.getCity()); + tmp.setArea(param.getArea()); + tmp.setAddress(param.getAddress()); + tmp.setRemark(param.getRemark()); + tmp.setUpdateTime(new Date()); + shopsUserInfoDao.update(tmp); + } + return ResultUtil.success(); + } + + /** + * 分页获取商家会员信息 + */ + @Override + public PageingDto getShopsUserInfoByPage(Integer shopsId,PageParam pageParam) { + //分页获取数据 + Integer firstResult = pageParam.getFirstResult(); + Pagination page = shopsUserInfoDao.findByCriteria(firstResult, pageParam.getPageSize(), Order.desc("createTime"), Restrictions.eq("id.shopsId", shopsId)); + List list = page.getList(); + firstResult+=list.size(); + //封装 + List dtoList = new ArrayList(); + for (ShopsUserInfo info : list) { + Integer userId = info.getId().getUserId(); + //分页会员信息DTO + ShopsUserDto dto = new ShopsUserDto(userId, info.getUserName()); + dtoList.add(dto); + User user = userDao.get(userId); + if(user!=null){ + dto.setNickName(user.getNickName()); + dto.setUserImg(user.getUserImg()); + dto.setLoginTime(IfishUtil.format1(user.getLoginTime())); + } + } + return new PageingDto(ResultEnum.success.getKey(), firstResult, page.getTotalCount(), dtoList); + } + + /** + * 成为商家用户 + */ + @Override + public JsonResult becomeShopsUser(Integer userId, Integer shopsId) { + //商家会员 + ShopsUserInfoId id = new ShopsUserInfoId(shopsId, userId); + ShopsUserInfo shopsUser = shopsUserInfoDao.get(id); + if(shopsUser==null){ + //用户信息 + User user = userDao.get(userId); + if(user==null){ + throw new IfishException(ResultEnum.error402); + } + //商家信息 + ShopsInfo shopsInfo = shopsInfoDao.get(shopsId); + if(shopsInfo==null){ + throw new IfishException(ResultEnum.error402); + } + //新增商家会员信息 + shopsUser = new ShopsUserInfo(id, MemberLevelEnum.level_1.getKey()); + shopsUser.setPhoneNumber(user.getPhoneNumber()); + shopsUser.setUserName(user.getNickName()); + shopsUserInfoDao.save(shopsUser); + //发送云信息消息 + asyncTaskService.sendMsgToShopsUser(userId, shopsInfo.getUserId(), user.getNickName()); + } + return ResultUtil.success(); + } + +} diff --git a/src/main/java/com/ifish/serviceImpl/UserActivityServiceImpl.java b/src/main/java/com/ifish/serviceImpl/UserActivityServiceImpl.java new file mode 100644 index 0000000..d726f3d --- /dev/null +++ b/src/main/java/com/ifish/serviceImpl/UserActivityServiceImpl.java @@ -0,0 +1,82 @@ +package com.ifish.serviceImpl; + +import java.util.ArrayList; +import java.util.List; + +import org.hibernate.criterion.Order; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.ifish.dao.UserActivityDao; +import com.ifish.dao.UserAssetDao; +import com.ifish.dao.UserDao; +import com.ifish.dto.PageingDto; +import com.ifish.dto.UserActivityDto; +import com.ifish.entity.Grade; +import com.ifish.entity.User; +import com.ifish.entity.UserActivity; +import com.ifish.entity.UserAsset; +import com.ifish.hibernate.Pagination; +import com.ifish.service.CacheService; +import com.ifish.service.UserActivityService; +import com.ifish.util.ResultUtil; +import com.ifish.validator.PageParam; + +/** + * 用户动态 + * + * @author Administrator + * + */ +@Service +@Transactional +public class UserActivityServiceImpl implements UserActivityService { + + @Autowired + private UserDao userDao; + @Autowired + private UserAssetDao userAssetDao; + @Autowired + private CacheService cacheService; + @Autowired + private UserActivityDao userActivityDao; + + /** + * 分页获取用户动态 + */ + @Override + public PageingDto getUserActivityByPage(Integer pageSize, Integer firstResult) { + //分页获取数据 + Pagination page = userActivityDao.findByCriteria(firstResult, pageSize, Order.desc("activityId")); + List list = page.getList(); + firstResult += list.size(); + //返回数据 + List dtoList = new ArrayList(); + for (UserActivity userActivity : list) { + Integer userId = userActivity.getUserId(); + User user = userDao.get(userId); + if (user != null) { + UserActivityDto dto = new UserActivityDto(userActivity.getActivityId(), userId, userActivity.getActivityType(), userActivity.getCreateTime()); + dtoList.add(dto); + dto.setNickName(user.getNickName()); + dto.setUserImg(user.getUserImg()); + UserAsset userAsset = userAssetDao.get(userId); + if (userAsset != null) { + //经验值 + Integer gradeValue = userAsset.getGradeValue(); + //等级 + for (Grade grade : cacheService.getGradeList()) { + if (gradeValue >= grade.getMinValue() && gradeValue < grade.getMaxValue()) { + dto.setGradeNum(grade.getGradeNum()); + break; + } + } + } + } + } + //分页数据封装 + return ResultUtil.success(firstResult, page.getTotalCount(), dtoList); + } + +} diff --git a/src/main/java/com/ifish/serviceImpl/UserServiceImpl.java b/src/main/java/com/ifish/serviceImpl/UserServiceImpl.java new file mode 100644 index 0000000..6a0a56e --- /dev/null +++ b/src/main/java/com/ifish/serviceImpl/UserServiceImpl.java @@ -0,0 +1,1072 @@ +package com.ifish.serviceImpl; + +import java.io.File; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Random; + +import org.apache.commons.lang3.StringUtils; +import org.hibernate.criterion.Restrictions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import com.alibaba.fastjson.JSONObject; +import com.ifish.apiVersion.ApiVersion; +import com.ifish.dao.CameraDao; +import com.ifish.dao.CameraUserDao; +import com.ifish.dao.DeviceCameraDao; +import com.ifish.dao.DeviceDao; +import com.ifish.dao.DeviceUserDao; +import com.ifish.dao.GoldControlDao; +import com.ifish.dao.GoldGetRecordDao; +import com.ifish.dao.InformationDao; +import com.ifish.dao.PushListDao; +import com.ifish.dao.ShopsInfoDao; +import com.ifish.dao.UserAssetDao; +import com.ifish.dao.UserDao; +import com.ifish.dto.DeviceDto; +import com.ifish.dto.DeviceInfoDto; +import com.ifish.dto.GoldTaskDto; +import com.ifish.dto.GwellParamDto; +import com.ifish.dto.JsonResult; +import com.ifish.dto.NeteaseParamDto; +import com.ifish.dto.UserAssetDto; +import com.ifish.dto.UserInfoDto; +import com.ifish.dto.VenderDto; +import com.ifish.entity.Camera; +import com.ifish.entity.CameraUser; +import com.ifish.entity.Device; +import com.ifish.entity.DeviceCamera; +import com.ifish.entity.DeviceCameraId; +import com.ifish.entity.DeviceUser; +import com.ifish.entity.DeviceUserId; +import com.ifish.entity.GoldControl; +import com.ifish.entity.GoldGetRecord; +import com.ifish.entity.GoldTask; +import com.ifish.entity.GradeTask; +import com.ifish.entity.HardwareType; +import com.ifish.entity.PushList; +import com.ifish.entity.ShopsInfo; +import com.ifish.entity.User; +import com.ifish.entity.UserAsset; +import com.ifish.entity.VenderList; +import com.ifish.enums.AddTypeEnum; +import com.ifish.enums.BooleanEnum; +import com.ifish.enums.GoldGetTypeEnum; +import com.ifish.enums.GradeGetTypeEnum; +import com.ifish.enums.GwellEnum; +import com.ifish.enums.NeteaseEnum; +import com.ifish.enums.PushTypeEnum; +import com.ifish.enums.ResultEnum; +import com.ifish.enums.SendTypeEnum; +import com.ifish.enums.SmsSignEnum; +import com.ifish.enums.SmsTemplateEnum; +import com.ifish.enums.SubDirectoryEnum; +import com.ifish.enums.UserTypeEnum; +import com.ifish.exception.IfishException; +import com.ifish.gwell.GwellApi; +import com.ifish.jpush.SmsNumSend; +import com.ifish.netease.NeteaseIM; +import com.ifish.service.CacheService; +import com.ifish.service.GoldService; +import com.ifish.service.GradeService; +import com.ifish.service.UserService; +import com.ifish.util.IfishFilePath; +import com.ifish.util.IfishUtil; +import com.ifish.validator.LoginParam; +import com.ifish.validator.RegisterParam; + +/** + * @ClassName: UserServiceImpl + * @Description: TODO + * @author ggw + * + */ +@Service +@Transactional +public class UserServiceImpl implements UserService { + + @Autowired + private UserDao userDao; + @Autowired + private DeviceDao deviceDao; + @Autowired + private CameraDao cameraDao; + @Autowired + private NeteaseIM neteaseIM; + @Autowired + private SmsNumSend smsNumSend; + @Autowired + private PushListDao pushListDao; + @Autowired + private ShopsInfoDao shopsInfoDao; + @Autowired + private UserAssetDao userAssetDao; + @Autowired + private DeviceUserDao deviceUserDao; + @Autowired + private CameraUserDao cameraUserDao; + @Autowired + private GoldControlDao goldControlDao; + @Autowired + private InformationDao informationDao; + @Autowired + private DeviceCameraDao deviceCameraDao; + @Autowired + private GoldGetRecordDao goldGetRecordDao; + @Autowired + private GoldService goldService; + @Autowired + private CacheService cacheService; + @Autowired + private GradeService gradeService; + + @Override + public JsonResult getVerificateCode(String phoneNumber, String sendType) { + //验证参数 + if(StringUtils.isNotBlank(phoneNumber) && StringUtils.isNotBlank(sendType)){ + User user = userDao.findUniqueByProperty(Restrictions.eq("phoneNumber",phoneNumber)); + //已注册 + if(user!=null){ + //找回密码操作 + if(sendType.equals(SendTypeEnum.findpwd.getKey())){ + //发送短信 + return sendMessage(phoneNumber,SmsSignEnum.sign5.getValue(),SmsTemplateEnum.SMS_720021.getKey()); + } + //注册操作 + else if(sendType.equals(SendTypeEnum.register.getKey())){ + //手机注册过,发送错误码 + return new JsonResult(ResultEnum.warn201.getKey()); + } + } + //未注册 + else{ + //注册操作 + if(sendType.equals(SendTypeEnum.register.getKey())){ + //发送短信 + return sendMessage(phoneNumber,SmsSignEnum.sign4.getValue(),SmsTemplateEnum.SMS_720018.getKey()); + } + } + } + return new JsonResult(ResultEnum.fail101.getKey()); + } + + @Override + public JsonResult login(LoginParam loginParam) { + //手机号 + String phoneNumber = loginParam.getPhoneNumber(); + //用户是否存在 + User user = userDao.findUniqueByProperty(Restrictions.eq("phoneNumber",phoneNumber)); + if(user!=null){ + //密码是否正确 + if(user.getUserPassword().equals(loginParam.getUserPassword())){ + //技威参数 + GwellParamDto gwellParam = getGwellInfo(user.getIsRegisterGwell(), phoneNumber); + if(gwellParam!=null){ + user.setIsRegisterGwell(gwellParam.getIsRegisterGwell()); + user.setP2PVerifyCode1(gwellParam.getP2PVerifyCode1()); + user.setP2PVerifyCode2(gwellParam.getP2PVerifyCode2()); + user.setGwellUserID(gwellParam.getUserID()); + } + //云信参数 + Integer userId = user.getUserId(); + NeteaseParamDto neteaseParam = GetNeteaseInfo(user.getIsRegisterNetease(), userId, user.getNickName(), user.getUserImg(), user.getNeteaseToken()); + if(neteaseParam!=null){ + user.setIsRegisterNetease(neteaseParam.getIsRegisterNetease()); + user.setNeteaseToken(neteaseParam.getNeteaseToken()); + } + /** + * 更新登陆参数 + */ + userDao.executeLoginUpdate(userId,loginParam.getLoginType()); + //设备信息 + DeviceInfoDto deviceInfo = getDeviceInfo(userId); + /** + * 登录返回信息 + */ + JSONObject jsonObject = new JSONObject(); + //用户信息 + jsonObject.put("user", getUserInfo(user)); + //版本号 + if(ApiVersion.version1_0.equals(loginParam.getVersion())){ + //用户资产 + jsonObject.put("userAsset", getUserAssetInfo(userId)); + //金币任务 + jsonObject.put("goldTasks", getGoldTaskList(userId)); + } + //资讯信息 + jsonObject.put("information", cacheService.getInformation()); + //设备信息 + jsonObject.put("device", deviceInfo.getDeviceList()); + //摄像头信息 + jsonObject.put("camera", getCameraInfo(userId)); + //设备关联摄像头信息 + jsonObject.put("deviceCamera", getDeviceCamera(deviceInfo.getDeviceIds())); + //商家信息(自己是商家) + jsonObject.put("shopsInfo", getShopsInfo(userId,user.getUserImg())); + //看护商家信息 + jsonObject.put("shopsInfo2", getShopsInfo(user.getShopsUserId(),null)); + return new JsonResult(ResultEnum.success.getKey(), jsonObject); + } + else{ + //密码不正确 + return new JsonResult(ResultEnum.warn204.getKey()); + } + } + else{ + //用户不存在 + return new JsonResult(ResultEnum.warn202.getKey()); + } + } + + /** + * 优化后登陆验证 + */ + @Override + public JsonResult loginValidate(LoginParam loginParam){ + //手机号 + String phoneNumber = loginParam.getPhoneNumber(); + //用户信息 + User user = userDao.findUniqueByProperty(Restrictions.eq("phoneNumber",phoneNumber)); + //用户不存在 + if(user==null){ + throw new IfishException(ResultEnum.warn202); + } + //密码不正确 + if(!loginParam.getUserPassword().equals(user.getUserPassword())){ + throw new IfishException(ResultEnum.warn204); + } + //技威参数 + GwellParamDto gwellParam = getGwellInfo(user.getIsRegisterGwell(), phoneNumber); + if(gwellParam!=null){ + user.setIsRegisterGwell(gwellParam.getIsRegisterGwell()); + user.setP2PVerifyCode1(gwellParam.getP2PVerifyCode1()); + user.setP2PVerifyCode2(gwellParam.getP2PVerifyCode2()); + user.setGwellUserID(gwellParam.getUserID()); + } + //云信参数 + Integer userId = user.getUserId(); + NeteaseParamDto neteaseParam = GetNeteaseInfo(user.getIsRegisterNetease(), userId, user.getNickName(), user.getUserImg(), user.getNeteaseToken()); + if(neteaseParam!=null){ + user.setIsRegisterNetease(neteaseParam.getIsRegisterNetease()); + user.setNeteaseToken(neteaseParam.getNeteaseToken()); + } + //更新登陆参数 + userDao.executeLoginUpdate(userId,loginParam.getLoginType()); + //用户基本信息 + UserInfoDto userInfoDto = getUserInfoDto(user); + //用户资产信息 + UserAssetDto userAssetDto = getUserAssetInfo(userId); + //返回json信息 + JSONObject json = new JSONObject(); + json.put("userInfo", userInfoDto); + json.put("userAsset", userAssetDto); + return new JsonResult(ResultEnum.success.getKey(), json); + } + /** + * 更多用户数据信息 + */ + @Override + public JsonResult moreUserData(Integer userId){ + User user = userDao.get(userId); + //用户不存在 + if(user==null){ + throw new IfishException(ResultEnum.warn202); + } + /** + * 登录返回信息 + */ + JSONObject jsonObject = new JSONObject(); + //设备信息 + DeviceInfoDto deviceInfo = getSimpleDeviceInfo(userId); + //金币任务 + jsonObject.put("goldTasks", getGoldTaskList(userId)); + //资讯信息 + List information = cacheService.getInformation(); + JSONObject infoJson = new JSONObject(); + if(information.size()>0){ + JSONObject json = information.get(0); + Integer infoId = json.getInteger("infoId"); + String title = json.getString("title"); + //资讯只返回id和title + infoJson.put("infoId", infoId); + infoJson.put("title", title); + jsonObject.put("information", infoJson); + } + else{ + jsonObject.put("information", infoJson); + } + //设备信息 + jsonObject.put("device",deviceInfo.getDeviceList()); + //摄像头信息 + jsonObject.put("camera", getCameraInfo(userId)); + //设备关联摄像头信息 + jsonObject.put("deviceCamera", getDeviceCamera(deviceInfo.getDeviceIds())); + //商家信息(自己是商家) + jsonObject.put("shopsInfo", getShopsInfo(userId,user.getUserImg())); + //看护商家信息 + jsonObject.put("shopsInfo2", getShopsInfo(user.getShopsUserId(),null)); + return new JsonResult(ResultEnum.success.getKey(), jsonObject); + } + + /** + * 绑定设备 + */ + @Override + public JsonResult bindDevice(Integer userId,String macAddress){ + //设备信息 + Device device = deviceDao.findUniqueByProperty(Restrictions.eq("macAddress", macAddress)); + if(device==null){ + throw new IfishException(ResultEnum.error402); + } + //用户信息 + User user = userDao.get(userId); + if(user==null){ + throw new IfishException(ResultEnum.error402); + } + //首次激活 + if(device.getFirstActivate()==null){ + device.setFirstActivate(new Date()); + } + //设备ID + Integer deviceId = device.getDeviceId(); + //是否已关联设备 + DeviceUserId priId = new DeviceUserId(userId, deviceId); + DeviceUser deviceUser = deviceUserDao.get(priId); + if(deviceUser==null){ + //已关联设备的其他用户 + List deviceUserList = deviceUserDao.findByProperty(Restrictions.eq("priId.deviceId", deviceId)); + //解除关联关系并发送推送 + deleteDeviceAndPushMsg(deviceUserList, deviceId); + //关联设备 + deviceUser = new DeviceUser(priId, BooleanEnum.YES.getKey(), "鱼缸"+(int)(Math.random()*9000+1000)); + deviceUserDao.save(deviceUser); + } + else{ + //不是主控制权 + if(!BooleanEnum.YES.getKey().equals(deviceUser.getIsMaster())){ + //已关联设备的其他用户 + List deviceUserList = deviceUserDao.findByProperty(Restrictions.eq("priId.deviceId", deviceId),Restrictions.ne("priId.userId", userId)); + //解除关联关系并发送推送 + deleteDeviceAndPushMsg(deviceUserList, deviceId); + //设为主控并更新时间 + deviceUser.setIsMaster(BooleanEnum.YES.getKey()); + deviceUser.setUpdateTime(new Date()); + } + } + return new JsonResult(ResultEnum.success.getKey(), getDeviceDto(deviceUser, device)); + } + + /** + * 扫一扫分享设备 + */ + @Override + public JsonResult shareDevice(Integer userId,Integer deviceId){ + //设备信息 + Device device = deviceDao.get(deviceId); + if(device==null){ + throw new IfishException(ResultEnum.error402); + } + //用户信息 + User user = userDao.get(userId); + if(user==null){ + throw new IfishException(ResultEnum.error402); + } + //是否已关联设备 + DeviceUserId priId = new DeviceUserId(userId, deviceId); + DeviceUser deviceUser = deviceUserDao.get(priId); + if(deviceUser==null){ + //关联设备 + deviceUser = new DeviceUser(priId, BooleanEnum.NO.getKey(), "鱼缸"+(int)(Math.random()*9000+1000)); + deviceUserDao.save(deviceUser); + } + return new JsonResult(ResultEnum.success.getKey(), getDeviceDto(deviceUser, device)); + } + + @Override + public JsonResult register(RegisterParam registerParam) { + String phoneNumber = registerParam.getPhoneNumber(); + User user = userDao.findUniqueByProperty(Restrictions.eq("phoneNumber", phoneNumber)); + if(user!=null){ + return new JsonResult(ResultEnum.warn201.getKey()); + } + else{ + user = new User(); + user.setPhoneNumber(phoneNumber); + user.setUserPassword(registerParam.getUserPassword()); + user.setPhoneType(registerParam.getPhoneType()); + user.setLoginType(registerParam.getPhoneType()); + user.setIsRegisterGwell(BooleanEnum.NO.getKey()); + user.setIsRegisterNetease(BooleanEnum.NO.getKey()); + user.setNeteaseToken(""); + user.setUserType(UserTypeEnum.userType0.getKey()); + user.setAddress(registerParam.getAddress()); + user.setLongitude(registerParam.getLongitude()); + user.setLatitude(registerParam.getLatitude()); + //随机给一个默认头像 + String userImg = "default/"+(new Random().nextInt(7)+1)+".png"; + user.setUserImg(userImg); + //随机生成用户名 + String nickName = "鱼友"+IfishUtil.getCharAndNumr(5); + user.setNickName(nickName); + user.setCreateTime(new Date()); + userDao.save(user); + //首次注册赠送10金币 + BigDecimal gold = new BigDecimal(10); + UserAsset userAsset = new UserAsset(user.getUserId(),gold); + userAssetDao.save(userAsset); + //获取记录 + GoldGetRecord getRecord = new GoldGetRecord(user.getUserId(), GoldGetTypeEnum.registerGive.getKey(), gold, GoldGetTypeEnum.registerGive.getValue()); + goldGetRecordDao.save(getRecord); + return new JsonResult(ResultEnum.success.getKey()); + } + } + + @Override + public JsonResult updateInfo(User user){ + //用户ID + Integer userId = user.getUserId(); + if(userId!=null){ + //查找用户信息 + User curUser = userDao.get(userId); + if(curUser!=null){ + //是否需要更新 + boolean bln = false; + //昵称 + String nickName = user.getNickName(); + if(StringUtils.isNotBlank(nickName)){ + //敏感词过滤 + if(nickName.contains("爱鱼奇") || nickName.contains("官方")){ + return new JsonResult(ResultEnum.warn213.getKey()); + } + else{ + curUser.setNickName(nickName); + bln=true; + } + } + //性别 + String userSex = user.getUserSex(); + if(StringUtils.isNotBlank(userSex)){ + curUser.setUserSex(userSex); + bln=true; + } + //签名 + String signature = user.getSignature(); + if(StringUtils.isNotBlank(signature)){ + curUser.setSignature(signature); + bln=true; + } + //有参数变更 + if(bln){ + //更新用户信息 + curUser.setUpdateTime(new Date()); + userDao.update(curUser); + //更新云信 + updateIMUserInfo(userId.toString(), curUser.getNickName(), curUser.getUserImg()); + } + return new JsonResult(ResultEnum.success.getKey()); + } + else{ + return new JsonResult(ResultEnum.warn211.getKey()); + } + } + else{ + return new JsonResult(ResultEnum.fail101.getKey()); + } + } + + @Override + public JsonResult uploadUserImg(Integer userId,MultipartFile fileUpload){ + //查找用户信息 + User user = userDao.get(userId); + if(user!=null){ + if(fileUpload!=null && !fileUpload.isEmpty()){ + //上传的图片不能大于1M + if(fileUpload.getSize()>1048576){ + return new JsonResult(ResultEnum.warn206.getKey()); + } + else{ + //验证图片格式 + String extEndName = IfishFilePath.checkImgName(fileUpload.getOriginalFilename()); + //验证图片格式 + if(extEndName!=null) { + //图片名称 + String picName = userId+"_icon.png"; + try { + File file = new File(IfishFilePath.path_img, picName); + //不存在则创建 + if(!file.exists()){ + file.mkdirs(); + } + //保存 + fileUpload.transferTo(file); + } catch (Exception e) { + throw new RuntimeException(e); + } + //更新数据库 + user.setUserImg(picName); + user.setUpdateTime(new Date()); + user = userDao.update(user); + //更新云信 + updateIMUserInfo(userId.toString(), user.getNickName(), user.getUserImg()); + //返回数据 + JSONObject json = new JSONObject(); + json.put("userImg", picName); + return new JsonResult(ResultEnum.success.getKey(),json); + } + else{ + return new JsonResult(ResultEnum.warn205.getKey()); + } + } + } + else{ + return new JsonResult(ResultEnum.fail101.getKey()); + } + } + else{ + return new JsonResult(ResultEnum.warn211.getKey()); + } + } + + /** + * 发送手机短信 + * @param phoneNumber + * @param smsSign + * @param smsTemplate + * @return + */ + public JsonResult sendMessage(String phoneNumber,String smsSign,String smsTemplate) { + //4位随机数 + Integer code = (int)(Math.random()*9000+1000); + boolean bln = smsNumSend.sendSmsNum(phoneNumber, code.toString(),smsSign,smsTemplate); + //发送验证码 + if(bln){ + return new JsonResult(ResultEnum.success.getKey(),code.toString()); + } + else{ + return new JsonResult(ResultEnum.fail101.getKey()); + } + } + /** + * 注册云信 + * @param userId + * @param nickName + * @param userImg + * @return + */ + public Map registerIM(String userId,String nickName,String userImg){ + return neteaseIM.createAccid(userId, nickName, IfishFilePath.getPath(SubDirectoryEnum.headImage,userImg), ""); + } + /** + * 更新云信信息 + * @param userId + * @param nickName + * @param userImg + * @return + */ + public Map updateIMUserInfo(String userId,String nickName,String userImg){ + return neteaseIM.updateUinfo(userId, nickName, IfishFilePath.getPath(SubDirectoryEnum.headImage,userImg),""); + } + /** + * 获取云信token + * @param userId + * @return + */ + public Map refreshToken(String userId){ + return neteaseIM.refreshToken(userId); + } + /** + * 第一次注册云信发送一条系统消息 + * @param to + */ + public void sendMsgByIM(String to){ + //发送云信消息 + User user = userDao.findUniqueByProperty(Restrictions.eq("phoneNumber", IfishFilePath.netease_phone)); + if(user!=null){ + String from = user.getUserId().toString(); + neteaseIM.sendMsg(from, to, "感谢您使用爱鱼奇,连接智能设备请查看下方说明书,内含操作视频:http://u.eqxiu.com/s/KmmVl87l \n摄像头售后:021-54131006\n睿芯插排售后:15757401229\n绚多插排售后:18857689069\n松诺插排售后:13392205468",""); + } + } + /** + * 封装设备信息 + * @param userId + * @return + */ + @Deprecated + public DeviceInfoDto getDeviceInfo(Integer userId){ + //设备list + List deviceList = new ArrayList(); + //设备ID + List deviceIds = new ArrayList(); + //获取用户拥有设备 + List deviceUserList = deviceUserDao.findByProperty(Restrictions.eq("priId.userId", userId)); + for(DeviceUser deviceUser:deviceUserList){ + //查询设备信息 + Integer deviceId = deviceUser.getPriId().getDeviceId(); + Device device = deviceDao.get(deviceId); + //json + JSONObject json = new JSONObject(); + //封装设备返回信息 + deviceIds.add(deviceId); + deviceList.add(json); + //json存储设备信息 + json.put("userId", userId); + json.put("deviceId", deviceId); + json.put("isMaster", deviceUser.getIsMaster()); + json.put("showName", deviceUser.getShowName()); + json.put("macAddress", device.getMacAddress()); + json.put("isBlacklist", device.getIsBlacklist()); + //控制方案 + String type = device.getHardwareType(); + //鱼缸厂code + String brandCode = device.getBrandCode(); + if(type!=null){ + HardwareType hardwareType = cacheService.findHardwareTypeById(type); + if(hardwareType!=null){ + //设备类型 + json.put("type", type); + //有无工作模式 + json.put("isWorkModel", hardwareType.getIsWorkModel()); + //控制信息 + json.put("controlAmount", hardwareType.getControlAmount()); + json.put("timerAmount", hardwareType.getTimerAmount()); + //背光/柜灯 + json.put("isLightness", hardwareType.getIsLightness()); + json.put("isSarkLamp", hardwareType.getIsSarkLamp()); + //是否显示预警推送 + if(brandCode!=null && brandCode.equals("YUEM") && device.getCreateTime().before(IfishUtil.StrToDate("2016-04-26"))){ + json.put("isPushWendu", BooleanEnum.NO.getKey()); + } + else{ + json.put("isPushWendu", BooleanEnum.YES.getKey()); + } + //换水提醒 + json.put("todayRemind", device.getTodayRemind()); + json.put("waterRemind", device.getWaterRemind()); + json.put("remindDate", device.getRemindDate()!=null?IfishUtil.format1(device.getRemindDate()):""); + json.put("remindCycle", device.getRemindCycle()!=null?device.getRemindCycle():""); + //自定义图标信息 + String isCustomIcon = hardwareType.getIsCustomIcon(); + json.put("isCustomIcon", isCustomIcon); + if(isCustomIcon.equals(BooleanEnum.YES.getKey())){ + json.put("customIconName", deviceUser.getCustomIconName()); + json.put("customShowName", deviceUser.getCustomShowName()); + json.put("isCustomIcon", hardwareType.getIsCustomIcon()); + json.put("iconLink", hardwareType.getIconLink()); + json.put("allIconName", hardwareType.getAllIconName()); + json.put("allShowName", hardwareType.getAllShowName()); + json.put("defaultIconName", hardwareType.getDefaultIconName()); + json.put("defaultShowName", hardwareType.getDefaultShowName()); + } + } + } + //厂家 + VenderList venderList = cacheService.findVenderListById(brandCode); + if(venderList!=null){ + json.put("venderList", venderList); + } + else{ + //默认爱鱼奇 + json.put("venderList", cacheService.findVenderListById("AYQ")); + } + } + return new DeviceInfoDto(deviceIds, deviceList); + } + + /** + * 删除设备关联关系并推送消息 + * @param deviceUserList + * @param deviceId + */ + public void deleteDeviceAndPushMsg(List deviceUserList,Integer deviceId){ + //推送消息类型 + PushTypeEnum pushTypeEnum = PushTypeEnum.remove_device; + String title = pushTypeEnum.getValue(); + String pushType = pushTypeEnum.getKey(); + String timestamp = IfishUtil.format(new Date()); + //解除设备和用户关联关系并发送推送 + for (DeviceUser deviceUser : deviceUserList) { + deviceUserDao.delete(deviceUser); + Integer userId = deviceUser.getPriId().getUserId(); + String showName = deviceUser.getShowName(); + String content = "你已于"+timestamp+"失去对“"+showName+"”设备的控制权"; + //推送云信消息 + Map neteaseMap = neteaseIM.sendMsg(IfishFilePath.ifish_account, userId.toString(), "【"+title+"】"+content,null); + String neteaseStatus = NeteaseEnum.status200.getKey().equals(neteaseMap.get("code"))?BooleanEnum.YES.getKey():BooleanEnum.NO.getKey(); + //保存推送记录 + PushList pushList = new PushList(userId, deviceId, showName, pushType ,neteaseStatus, title, content); + pushListDao.save(pushList); + } + //删除设备和摄像头关联关系 + List deviceCameraList = deviceCameraDao.findByProperty(Restrictions.eq("deviceCameraId.deviceId", deviceId)); + for (DeviceCamera deviceCamera : deviceCameraList) { + deviceCameraDao.delete(deviceCamera); + } + } + + /** + * 设备DTO + * @param deviceUser + * @param device + * @return + */ + public DeviceDto getDeviceDto(DeviceUser deviceUser,Device device){ + String type = device.getHardwareType(); + //设备信息DTO + DeviceDto dto = new DeviceDto(device.getDeviceId(), device.getMacAddress(), deviceUser.getShowName(), deviceUser.getIsMaster(), type, device.getIsBlacklist()); + //用户ID + dto.setUserId(deviceUser.getPriId().getUserId()); + //硬件类型 + HardwareType hardwareType = cacheService.findHardwareTypeById(type); + if(hardwareType!=null){ + //控制数和定时器数 + dto.setControlAmount(hardwareType.getControlAmount()); + dto.setTimerAmount(hardwareType.getTimerAmount()); + //有无工作模式 + dto.setIsWorkModel(hardwareType.getIsWorkModel()); + //背光/柜灯 + dto.setIsLightness(hardwareType.getIsLightness()); + dto.setIsSarkLamp(hardwareType.getIsSarkLamp()); + } + //鱼缸厂 + String brandCode = device.getBrandCode(); + //是否显示预警推送,2016-04-26号之前越美水族的不显示温度预警开关 + if("YUEM".equals(brandCode) && device.getCreateTime().before(IfishUtil.StrToDate("2016-04-26"))){ + dto.setIsPushWendu(BooleanEnum.NO.getKey()); + } + else{ + dto.setIsPushWendu(BooleanEnum.YES.getKey()); + } + //换水提醒 + dto.setTodayRemind(device.getTodayRemind()); + dto.setWaterRemind(device.getWaterRemind()); + dto.setRemindDate(device.getRemindDate()!=null?IfishUtil.format1(device.getRemindDate()):""); + dto.setRemindCycle(device.getRemindCycle()!=null?device.getRemindCycle().toString():""); + //鱼缸厂信息 + VenderList venderList = cacheService.findVenderListById(brandCode); + if(venderList==null){ + //默认爱鱼奇 + venderList = cacheService.findVenderListById("AYQ"); + } + if(venderList!=null){ + //鱼缸厂信息DTO + VenderDto venderDto = new VenderDto(venderList.getBrandName(), venderList.getBrandIntroduce(), venderList.getLogo()); + dto.setVenderDto(venderDto); + } + return dto; + } + + /** + * 优化后设备信息 + * @param userId + */ + public DeviceInfoDto getSimpleDeviceInfo(Integer userId){ + //设备信息DTO + List deviceDtoList = new ArrayList(); + //设备ID + List deviceIds = new ArrayList(); + //用户关联的设备信息 + List deviceUserList = deviceUserDao.findByProperty(Restrictions.eq("priId.userId", userId)); + for (DeviceUser deviceUser : deviceUserList) { + //设备Id + Integer deviceId = deviceUser.getPriId().getDeviceId(); + //设备信息 + Device device = deviceDao.get(deviceId); + if(device!=null){ + deviceIds.add(deviceId); + deviceDtoList.add(getDeviceDto(deviceUser, device)); + } + } + return new DeviceInfoDto(deviceIds, deviceDtoList); + } + + /** + * 获取技威相关参数 + * @param isRegisterGwell + * @param phoneNumber + * @return + */ + public GwellParamDto getGwellInfo(String isRegisterGwell,String phoneNumber){ + //未注册技威 + if(!BooleanEnum.YES.getKey().equals(isRegisterGwell)){ + //注册技威 + Map registerMap = GwellApi.Register(phoneNumber); + String registerResult = registerMap.get("result"); + if(registerResult!=null){ + //注册成功 + if(registerResult.equals(GwellEnum.success.getKey())){ + return new GwellParamDto(BooleanEnum.YES.getKey(),registerMap.get("P2PVerifyCode1"),registerMap.get("P2PVerifyCode2"),registerMap.get("UserID")); + } + //已经注册过 + else if(registerResult.equals(GwellEnum.repeat.getKey())){ + //重新登陆获取 + Map loginMap = GwellApi.Login(phoneNumber); + String loginResult = loginMap.get("result"); + //登陆成功 + if(GwellEnum.success.getKey().equals(loginResult)){ + return new GwellParamDto(BooleanEnum.YES.getKey(),loginMap.get("P2PVerifyCode1"),loginMap.get("P2PVerifyCode2"),loginMap.get("UserID")); + } + else{ + return new GwellParamDto(BooleanEnum.YES.getKey()); + } + } + } + } + return null; + } + + /** + * 获取云信相关参数 + * @param isRegisterNetease + * @param userId + * @param nickName + * @param userImg + * @param neteaseToken + * @return + */ + public NeteaseParamDto GetNeteaseInfo(String isRegisterNetease,Integer userId,String nickName,String userImg,String neteaseToken){ + //未注册云信 + if(!BooleanEnum.YES.getKey().equals(isRegisterNetease)){ + //注册云信 + Map registerMap = registerIM(userId.toString(),nickName,userImg); + if(registerMap!=null){ + String code = registerMap.get("code"); + if(code.equals(NeteaseEnum.status200.getKey())){ + //发送云信消息 + sendMsgByIM(userId.toString()); + return new NeteaseParamDto(BooleanEnum.YES.getKey(), registerMap.get("token")); + } + else if(code.equals(NeteaseEnum.status414.getKey())){ + //获取云信token + Map refreshMap = refreshToken(userId.toString()); + if(refreshMap!=null){ + String refreshCode = refreshMap.get("code"); + if(refreshCode.equals(NeteaseEnum.status200.getKey())){ + return new NeteaseParamDto(BooleanEnum.YES.getKey(), refreshMap.get("token")); + } + } + } + } + } + //已注册云信 + else if(BooleanEnum.YES.getKey().equals(isRegisterNetease)){ + //token为空 + if(!StringUtils.isNotBlank(neteaseToken)){ + //获取云信token + Map refreshMap = refreshToken(userId.toString()); + if(refreshMap!=null){ + String code = refreshMap.get("code"); + if(code.equals(NeteaseEnum.status200.getKey())){ + return new NeteaseParamDto(BooleanEnum.YES.getKey(), refreshMap.get("token")); + } + } + } + } + return null; + } + + /** + * 封装用户信息 + * @param user + * @return + */ + public JSONObject getUserInfo(User user){ + JSONObject json = new JSONObject(); + json.put("userId", user.getUserId()); + json.put("phoneNumber", user.getPhoneNumber()); + json.put("nickName", user.getNickName()); + json.put("userSex", user.getUserSex()); + json.put("signature", user.getSignature()); + json.put("userImg", user.getUserImg()); + json.put("P2PVerifyCode1", user.getP2PVerifyCode1()); + json.put("P2PVerifyCode2", user.getP2PVerifyCode2()); + json.put("gwellUserID", user.getGwellUserID()); + json.put("neteaseToken", user.getNeteaseToken()); + json.put("userType", user.getUserType()); + json.put("shopsUserId", user.getShopsUserId()); + return json; + } + /** + * 封装用户信息 + * @param user + * @return + */ + public UserInfoDto getUserInfoDto(User user){ + UserInfoDto dto = new UserInfoDto(); + dto.setUserId(user.getUserId()); + dto.setPhoneNumber(user.getPhoneNumber()); + dto.setNickName(user.getNickName()); + dto.setUserSex(user.getUserSex()); + dto.setSignature(user.getSignature()); + dto.setUserImg(user.getUserImg()); + dto.setP2PVerifyCode1(user.getP2PVerifyCode1()); + dto.setP2PVerifyCode2(user.getP2PVerifyCode2()); + dto.setGwellUserID(user.getGwellUserID()); + dto.setNeteaseToken(user.getNeteaseToken()); + dto.setUserType(user.getUserType()); + dto.setShopsUserId(user.getShopsUserId()); + return dto; + } + /** + * 用户资产和签到信息(经验值,金币等) + * @param userId + * @return + */ + public UserAssetDto getUserAssetInfo(Integer userId){ + UserAsset userAsset = userAssetDao.get(userId); + if(userAsset==null){ + //之前注册用户赠送20金币 + BigDecimal gold = new BigDecimal(20); + userAsset = new UserAsset(userId,gold); + userAssetDao.save(userAsset); + //获取记录 + GoldGetRecord getRecord = new GoldGetRecord(userId, GoldGetTypeEnum.registerGive.getKey(), gold, GoldGetTypeEnum.registerGive.getValue()); + goldGetRecordDao.save(getRecord); + } + //日期 + Calendar calendar = Calendar.getInstance(); + //今天 + Date date = calendar.getTime(); + String today = IfishUtil.format1(date); + //昨天 + calendar.add(Calendar.DAY_OF_MONTH, -1); + String yesterday = IfishUtil.format1(calendar.getTime()); + //最后一天登陆日期 + String lastLogin = userAsset.getLastLoginDate(); + //规则 + GradeTask gradeRule = cacheService.getGradeRule(GradeGetTypeEnum.everyDayLogin.getKey()); + //今天登陆过 + if(gradeRule==null || lastLogin.equals(today)){ + return goldService.getUserAssetInfo(userAsset, new BigDecimal(0), today, yesterday); + } + return gradeService.getGradeControl(userAsset, gradeRule ,true); + } + + /** + * 封装摄像头信息 + * @param userId + * @return + */ + public List getCameraInfo(Integer userId){ + List cameraList = new ArrayList(); + //获取用户拥有摄像头 + List cameraUserList = cameraUserDao.findByProperty(Restrictions.eq("cameraUserId.userId", userId)); + for(CameraUser cameraUser:cameraUserList){ + Camera camera = cameraDao.get(cameraUser.getCameraUserId().getCameraId()); + //封装摄像头返回信息 + JSONObject json = new JSONObject(); + json.put("cameraId", camera.getCameraId()); + //json.put("isMaster", cameraUser.getIsMaster()); + json.put("isLook", cameraUser.getIsLook()); + json.put("isLive", cameraUser.getIsLive()); + json.put("isActive", camera.getActiveCode()!=null&&camera.getActiveCode().length()>0?"1":"0"); + json.put("showName", cameraUser.getShowName()); + cameraList.add(json); + } + return cameraList; + } + + /** + * 设备关联摄像头 + * @param deviceIds + * @return + */ + public List getDeviceCamera(List deviceIds){ + //设备关联摄像头信息 + List deviceCameraList = new ArrayList(); + //设备已关联摄像头 + if(deviceIds.size()>0){ + List list = deviceCameraDao.findByProperty(Restrictions.in("deviceCameraId.deviceId", deviceIds)); + for(DeviceCamera deviceCamera:list){ + deviceCameraList.add(deviceCamera.getDeviceCameraId()); + } + } + return deviceCameraList; + } + + /** + * 封装商家认证信息 + * @param shopsInfo + * @param userImg + * @return + */ + public JSONObject getShopsInfo(Integer userId,String userImg){ + if(userId!=null){ + ShopsInfo shopsInfo = shopsInfoDao.findUniqueByProperty(Restrictions.eq("userId", userId)); + if(shopsInfo!=null){ + //封装商家认证信息 + JSONObject json = new JSONObject(); + json.put("shopsId", shopsInfo.getShopsId()); + json.put("userId", shopsInfo.getUserId()); + if(userImg!=null){ + json.put("userImg", userImg); + } + else{ + User user = userDao.get(userId); + json.put("userImg", user.getUserImg()); + } + json.put("userName", shopsInfo.getUserName()); + json.put("shopsName", shopsInfo.getShopsName()); + json.put("shopsPhone", shopsInfo.getShopsPhone()); + json.put("shopsProvince", shopsInfo.getShopsProvince()); + json.put("shopsCity", shopsInfo.getShopsCity()); + json.put("shopsArea", shopsInfo.getShopsArea()); + json.put("shopsAddress", shopsInfo.getShopsAddress()); + json.put("picture1", shopsInfo.getPicture1()); + json.put("picture2", shopsInfo.getPicture2()); + json.put("picture3", shopsInfo.getPicture3()); + json.put("picture4", shopsInfo.getPicture4()); + json.put("status", shopsInfo.getStatus()); + json.put("remark", shopsInfo.getRemark()); + json.put("reason", shopsInfo.getReason()); + json.put("weixinCode", shopsInfo.getWeixinCode()); + json.put("shopLink", shopsInfo.getShopLink()); + return json; + } + } + return new JSONObject(); + } + + /** + * 金币任务信息 + * @param userId + * @return + */ + public List getGoldTaskList(Integer userId){ + //任务信息 + List goldTaskList = new ArrayList(); + //今天日期 + String today = IfishUtil.format1(new Date()); + //已完成金币任务 + Map finishMap = new HashMap(); + List goldControls = goldControlDao.findByProperty(Restrictions.eq("goldControlId.userId", userId)); + for (GoldControl goldControl : goldControls) { + finishMap.put(goldControl.getGoldControlId().getRuleType(), goldControl.getControlParam()); + } + //所有金币任务 + for (GoldTask goldRule : cacheService.getGoldRuleList()) { + //类型 + String ruleType = goldRule.getRuleType(); + //加成类型 + String addType = goldRule.getAddType(); + //任务是否完成 + String controlDate = finishMap.get(ruleType); + //规则信息DTO + GoldTaskDto taskDto = new GoldTaskDto(ruleType, addType, goldRule.getAddValue().toString(), BooleanEnum.NO.getKey()); + goldTaskList.add(taskDto); + if(controlDate!=null){ + if(addType.equals(AddTypeEnum.once.getKey()) || (addType.equals(AddTypeEnum.everyDay.getKey()) && controlDate.equals(today))){ + taskDto.setIsFinish(BooleanEnum.YES.getKey()); + } + } + } + return goldTaskList; + } +} diff --git a/src/main/java/com/ifish/util/IfishFilePath.java b/src/main/java/com/ifish/util/IfishFilePath.java new file mode 100644 index 0000000..7a4ee49 --- /dev/null +++ b/src/main/java/com/ifish/util/IfishFilePath.java @@ -0,0 +1,90 @@ +package com.ifish.util; + +import java.io.InputStream; +import java.lang.reflect.Field; +import java.util.Properties; + +import com.ifish.enums.SubDirectoryEnum; + +/** + * 文件目录及地址 + * + * @author Administrator + * + */ +public class IfishFilePath { + //头像地址 + public static String path_img; + /** + * 图片头地址 + */ + public static String link_img_head; + //商家图片地址 + public static String path_shops; + //商品介绍图片 + public static String path_commodity; + //微信分享页面 + public static String path_share_html; + //微信分享页图片 + public static String path_share_img; + //看护报告页面 + public static String path_look_html; + //看护报告图片 + public static String path_look_img; + //html名字 + public static String html_name; + //图片上传格式 + public static String check_style; + //云信爱鱼奇官方帐号 + public static String ifish_account; + //IM官方手机号 + public static String netease_phone; + //直播间封面 + public static String path_room_img; + //FastDFS商家视频上传URL访问路径(本地和测试环境) + public static String fastDFS_url_local; + //FastDFS商家视频上传URL访问路径(正式环境) + public static String fastDFS_url_app; + + static { + Properties prop = new Properties(); + InputStream in = IfishFilePath.class.getResourceAsStream("/property.properties"); + try { + prop.load(in); + //利用反射机制给属性赋值 + Field[] fields = IfishFilePath.class.getDeclaredFields(); + for (Field field : fields) { + String name = field.getName(); + field.set(IfishFilePath.class, prop.getProperty(name).trim()); + } + in.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 验证图片格式 + */ + public static String checkImgName(String fileName) { + //对格式进行验证 + int index = fileName.lastIndexOf("."); + String extEndName = fileName.substring(++index, fileName.length()); + if (check_style.indexOf(extEndName.toUpperCase()) == -1) { + return null; + } + //返回格式.png + return "." + extEndName; + } + + /** + * 获取图片链接地址 + * + * @param type + * @return + */ + public static String getPath(SubDirectoryEnum pictureEnum, String fileName) { + return link_img_head + pictureEnum.getKey() + fileName; + } + +} diff --git a/src/main/java/com/ifish/util/IfishFileUtils.java b/src/main/java/com/ifish/util/IfishFileUtils.java new file mode 100644 index 0000000..fb126ef --- /dev/null +++ b/src/main/java/com/ifish/util/IfishFileUtils.java @@ -0,0 +1,43 @@ +package com.ifish.util; + +import java.io.File; +import java.io.IOException; + +import org.springframework.web.multipart.MultipartFile; + +/** + * 文件处理工具类 + * @author Administrator + * + */ +public class IfishFileUtils { + /** + * 上传文件 + * @param path + * @param fileName + * @param multipartFile + * @throws IllegalStateException + * @throws IOException + */ + public static void uploadFile(String path,String fileName,MultipartFile multipartFile) throws IllegalStateException, IOException{ + //文件名 + File newFile = new File(path,fileName); + if(!newFile.exists()){ + newFile.mkdirs(); + } + //传输文件 + multipartFile.transferTo(newFile); + } + /** + * 删除文件 + * @param path + * @param fileName + */ + public static void deleteFile(String path,String fileName){ + File file = new File(path, fileName); + if(file.exists()){ + file.delete(); + } + } + +} diff --git a/src/main/java/com/ifish/util/IfishUtil.java b/src/main/java/com/ifish/util/IfishUtil.java new file mode 100644 index 0000000..89aed0f --- /dev/null +++ b/src/main/java/com/ifish/util/IfishUtil.java @@ -0,0 +1,488 @@ +package com.ifish.util; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.Random; + +import org.springframework.web.multipart.MultipartFile; + +import com.ifish.entity.LookReport; +import com.ifish.entity.ShopsInfo; +import com.ifish.entity.User; +import com.ifish.enums.Index1Enum; +import com.ifish.enums.Index2Enum; +import com.ifish.enums.Index3Enum; +import com.ifish.hibernate.Pagination; +import java.io.UnsupportedEncodingException; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import org.codehaus.jackson.map.ObjectMapper; +import org.codehaus.jackson.type.JavaType; + +public class IfishUtil { + + private static final String formatDate = "yyyy-MM-dd HH:mm:ss"; + + private static final String formatDate3 = "MM-dd HH:mm"; + + private static final String formatDate2 = "yyyy-MM-dd HH:mm"; + + private static final String formatDate1 = "yyyy-MM-dd"; + + /** + * 测试缓存时间:一分钟;单位:秒 + */ + public static final int CacheTime_Test_SECONDS = 60; + /** + * 缓存时间:一秒;单位:秒 + */ + public static final int CacheTime_SECONDS = 1; + /** + * 缓存时间:一分钟;单位:分 + */ + public static final int CacheTime_MINUTES = 1; + /** + * 缓存时间:一小时;单位:小时 + */ + public static final int CacheTime_HOURS = 1; + /** + * 缓存时间:一天;单位:天 + */ + public static final int CacheTime_DAYS = 1; + + /** + * Object转Json + */ + public static String ObjectToJson(Object value) { + try { + if (value == null) { + return null; + } + ObjectMapper mapper = new ObjectMapper(); + String js = mapper.writeValueAsString(value); + return js; + } catch (Exception ex) { + System.out.println("【异常信息】 >>> " + ex.toString()); + return "Error"; + } + } + + /** + * Json转Object(JavaBean) + * + * @param json 需要转换的JSON字符串 + * @param bean JavaBean, + * @return 拿到结果需要强转一次,因为你拿到的是Object, 例如这样调用和强转: School lst + * =(School)StringUtil.JsonToObjectList(value, School.class); + */ + public static Object JsonToBean(String json, Class bean) throws Exception { + ObjectMapper mapper = new ObjectMapper(); + JavaType javaType = mapper.getTypeFactory().uncheckedSimpleType(bean); + return mapper.readValue(json, javaType); + } + + //返回时分秒的时间字符串 + public static String TimestampToStringAndSecond(Object timestamp) { + DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + try { + return (format.format(timestamp)); + } catch (Exception e) { + System.out.println("【isGaokaoYearExpire 异常】:" + e); + return ""; + } + } + + //返回时分秒的时间字符串 + public static String TimestampToStringAndSecond(Object timestamp, String geshi) { + DateFormat format = new SimpleDateFormat(geshi); + try { + return (format.format(timestamp)); + } catch (Exception e) { + System.out.println("【isGaokaoYearExpire 异常】:" + e); + return ""; + } + } + + /** + * 返回当前日期yyyy-MM-dd + * + * @return + * @throws ParseException + */ + public static Date getCurDate() { + DateFormat df = DateFormat.getDateInstance(); + try { + return df.parse(df.format(new Date())); + } catch (ParseException e) { + } + return null; + } + + /** + * 格式化日期yyyy-MM-dd HH:mm:ss + * + * @param date + * @return + */ + public static String format(Date date) { + SimpleDateFormat format = new SimpleDateFormat(formatDate); + return format.format(date); + } + + /** + * 格式化日期 + * + * @param date + * @return + */ + public static String format1(Date date) { + SimpleDateFormat format = new SimpleDateFormat(formatDate1); + return format.format(date); + } + + /** + * 格式化日期 + * + * @param date + * @return + */ + public static String format2(Date date) { + SimpleDateFormat format = new SimpleDateFormat(formatDate2); + return format.format(date); + } + + /** + * 格式化日期 + * + * @param date + * @return + */ + public static String format3(Date date) { + SimpleDateFormat format = new SimpleDateFormat(formatDate3); + return format.format(date); + } + + /** + * 字符串转换成日期 + * + * @param str + * @return date + */ + public static Date StrToDate(String str) { + SimpleDateFormat format = new SimpleDateFormat(formatDate1); + Date date = null; + try { + date = format.parse(str); + } catch (ParseException e) { + e.printStackTrace(); + } + return date; + } + + /** + * 随机生成字母与数字组合 + * + * @param length + * @return + */ + public static String getCharAndNumr(int length) { + String val = ""; + Random random = new Random(); + for (int i = 0; i < length; i++) { + // 输出字母还是数字 + String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num"; + // 字符串 + if ("char".equalsIgnoreCase(charOrNum)) { + // 取得大写字母还是小写字母 + int choice = random.nextInt(2) % 2 == 0 ? 65 : 97; + val += (char) (choice + random.nextInt(26)); + // 数字 + } else if ("num".equalsIgnoreCase(charOrNum)) { + val += String.valueOf(random.nextInt(10)); + } + } + return val; + } + + /** + * 返回json数据 + * + * @param str + * @return + */ + public static Map returnJson(String key, Object value) { + Map map = new HashMap(); + map.put("result", key); + if (value.equals("")) { + map.put("data", null); + } else { + map.put("data", value); + } + return map; + } + + /** + * 返回json数据 + * + * @param str + * @return + */ + public static Map toJson(String key, Object value) { + Map map = new HashMap(); + map.put("result", key); + if (value.equals("")) { + map.put("data", null); + } else { + map.put("data", value); + } + return map; + } + + /** + * 返回分页数据 + * + * @param str + * @return + */ + public static Object returnPageData(Pagination page) { + Map map = new HashMap(); + //实际的行数 + map.put("total", page.getTotalCount()); + //数据 + map.put("data", page.getList()); + return map; + } + + /** + * 上传图片文件 + * + * @param fileUpload + * @param path + * @return + */ + public static String uploadFile(MultipartFile fileUpload, String path) { + //根据时间得文件名 + Calendar calendar = Calendar.getInstance(); + String fileName = String.valueOf(calendar.getTimeInMillis()); + //保存文件 + if (fileUpload == null) { + return "base/default.png"; + } + if (!fileUpload.isEmpty()) { + try { + if (!fileUpload.getOriginalFilename().equals("")) { + File picFile = new File(path, fileName + ".png"); + //不存在则创建 + if (!picFile.exists()) { + picFile.mkdirs(); + } + //保存 + fileUpload.transferTo(picFile); + } + return "share/" + fileName + ".png"; + } catch (Exception e) { + throw new RuntimeException(e); + } + } + return ""; + } + + /** + * 生成微信分享页面 + * + * @param title + * @param base64 + * @return + */ + public static String getHtmlFile(String title, String pngName, String modelFile, String filePath) { + try { + if (pngName != null && !pngName.equals("")) { + //读取模板文件 + FileInputStream fileinputstream = new FileInputStream(filePath + modelFile); + int lenght = fileinputstream.available(); + byte bytes[] = new byte[lenght]; + fileinputstream.read(bytes); + fileinputstream.close(); + String templateContent = new String(bytes); + //替换掉模板中相应的地方 + templateContent = templateContent.replaceAll("###title###", title); + templateContent = templateContent.replaceAll("###fileName###", pngName); + //根据时间得文件名 + Calendar calendar = Calendar.getInstance(); + String fileName = String.valueOf(calendar.getTimeInMillis()); + fileName = fileName + ".html"; + //建立文件输出流 + FileOutputStream fileoutputstream = new FileOutputStream(filePath + fileName); + byte tag_bytes[] = templateContent.getBytes(); + fileoutputstream.write(tag_bytes); + fileoutputstream.close(); + return fileName; + } + } catch (Exception e) { + throw new RuntimeException(e); + } + return ""; + } + + /** + * 随即区间整数 + * + * @param min + * @param max + * @return + */ + public static int getRandom(int min, int max) { + int r = new Random().nextInt(max - min); + return r + min; + } + + /** + * 生成看护报告页面 + * + * @param title + * @param base64 + * @return + */ + public static LookReport getLookFile(ShopsInfo shopsInfo, User user, String index1, String index2, String index3, String suggestion, String pngName, String modelFile, String filePath) { + LookReport lookReport = new LookReport(); + try { + //根据时间得文件名 + Calendar calendar = Calendar.getInstance(); + String fileName = String.valueOf(calendar.getTimeInMillis()); + Date date = new Date(); + String time = format2(date); + //读取模板文件 + FileInputStream fileinputstream = new FileInputStream(filePath + modelFile); + int lenght = fileinputstream.available(); + byte bytes[] = new byte[lenght]; + fileinputstream.read(bytes); + fileinputstream.close(); + String templateContent = new String(bytes); + + String value1 = Index1Enum.getValue(index1); + String value2 = Index2Enum.getValue(index2); + String value3 = Index3Enum.getValue(index3); + Integer totalIndex = Integer.valueOf(index1) + Integer.valueOf(index2) + Integer.valueOf(index3); + Integer baifenbi = 99; + if (totalIndex >= 0 && totalIndex <= 50) { + //50%~70% + baifenbi = getRandom(50, 70); + } else if (totalIndex > 50 && totalIndex <= 80) { + //71%~84% + baifenbi = getRandom(71, 84); + } else { + //85%~99% + baifenbi = getRandom(85, 99); + } + //替换掉模板中相应的地方 + templateContent = templateContent.replaceAll("###time###", time); + templateContent = templateContent.replaceAll("###index1###", index1); + templateContent = templateContent.replaceAll("###index2###", index2); + templateContent = templateContent.replaceAll("###index3###", index3); + templateContent = templateContent.replaceAll("###totalIndex###", totalIndex.toString()); + templateContent = templateContent.replaceAll("###baifenbi###", baifenbi.toString()); + templateContent = templateContent.replaceAll("###value1###", value1); + templateContent = templateContent.replaceAll("###value2###", value2); + templateContent = templateContent.replaceAll("###value3###", value3); + templateContent = templateContent.replaceAll("###suggestion###", suggestion); + templateContent = templateContent.replaceAll("###fileName###", pngName); + templateContent = templateContent.replaceAll("###shopsName###", shopsInfo.getShopsName()); + templateContent = templateContent.replaceAll("###userImg###", user.getUserImg()); + templateContent = templateContent.replaceAll("###signature###", user.getSignature()); + //看护报告 + lookReport.setTimestamp(date); + lookReport.setShareImg(pngName); + lookReport.setIndex1(index1); + lookReport.setIndex2(index2); + lookReport.setIndex3(index3); + lookReport.setSuggestion(suggestion); + lookReport.setTotalIndex(totalIndex.toString()); + lookReport.setBaifenbi(baifenbi.toString()); + lookReport.setUserImg(user.getUserImg()); + lookReport.setShopsName(shopsInfo.getShopsName()); + lookReport.setSignature(user.getSignature()); + lookReport.setCreateTime(new Date()); + //html文件名 + fileName = fileName + ".html"; + lookReport.setHtmlName(fileName); + //建立文件输出流 + FileOutputStream fileoutputstream = new FileOutputStream(filePath + fileName); + byte tag_bytes[] = templateContent.getBytes(); + fileoutputstream.write(tag_bytes); + fileoutputstream.close(); + return lookReport; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + /** + * URL 解码 + * + * @return String + * @author lifq + * @date 2015-3-17 下午04:09:51 + */ + public static String getURLDecoderString(String str) { + String result = ""; + if (null == str) { + return ""; + } + try { + result = java.net.URLDecoder.decode(str, "GBK"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return result; + } + + /** + * URL 转码 + * + * @return String + * @author lifq + * @date 2015-3-17 下午04:10:28 + */ + public static String getURLEncoderString(String str) { + String result = ""; + if (null == str) { + return ""; + } + try { + result = java.net.URLEncoder.encode(str, "GBK"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return result; + } + + /** + * 正则表达式截取字符串 + * + * @param str + * @param regex + * @return + */ + public static String regex(String str, String regex) { + Matcher matcher = Pattern.compile(regex).matcher(str); + if (matcher.find()) { + return matcher.group(0); + } else { + return ""; + } + } + + public static String regexToChinese(String str) { + String regex = "([\\u4e00-\\u9fa5]+)"; + return regex(str, regex); + } +} diff --git a/src/main/java/com/ifish/util/RedisKey.java b/src/main/java/com/ifish/util/RedisKey.java new file mode 100644 index 0000000..8b2a8a5 --- /dev/null +++ b/src/main/java/com/ifish/util/RedisKey.java @@ -0,0 +1,60 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.util; + +import com.ifish.entity.CameraUser; + +/** + * + * @author Administrator + */ +public class RedisKey { + + /** + * 用户缓存前缀 + */ + public static final String User_Key = "user:"; + + /** + * 商家信息缓存前缀 + */ + public static final String ShopsInfo_Key = "shopsInfo:"; + + /** + * 用户绑定设备缓存前缀 + */ + public static final String DeviceUser_Key = "deviceUser:"; + + /** + * 设备绑定摄像头缓存前缀 + */ + public static final String DeviceCamera_key = "deviceCamera:"; + + /** + * 设备详情缓存前缀 + */ + public static final String Device_key = "device:"; + + /** + * 设备类型缓存前缀 + */ + public static final String HardWareType_key = "hardwaretype:"; + + /** + * 厂家列表缓存前缀 + */ + public static final String VenderList_key = "venderlist:"; + + /** + * 用户和摄像头的绑定关系存前缀 + */ + public static final String CameraUser_key = "cameraUser:"; + + /** + * 摄像头详情缓存前缀 + */ + public static final String Camera_key = "camera:"; +} diff --git a/src/main/java/com/ifish/util/ResultUtil.java b/src/main/java/com/ifish/util/ResultUtil.java new file mode 100644 index 0000000..569b709 --- /dev/null +++ b/src/main/java/com/ifish/util/ResultUtil.java @@ -0,0 +1,66 @@ +package com.ifish.util; + +import java.util.List; + +import com.ifish.dto.JsonResult; +import com.ifish.dto.PageingDto; +import com.ifish.enums.ResultEnum; + +/** + * 结果工具类 + * @author Administrator + * + */ +public class ResultUtil { + + /** + * 错误 + * @param result + * @return + */ + public static JsonResult error(String result){ + JsonResult jsonResult = new JsonResult(result); + return jsonResult; + } + /** + * 警告 + * @param result + * @param object + * @return + */ + public static JsonResult warn(String result,Object object){ + JsonResult jsonResult = new JsonResult(result,object); + return jsonResult; + } + /** + * 成功,有数据 + * @param object + * @return + */ + public static JsonResult success(Object object){ + JsonResult jsonResult = new JsonResult(ResultEnum.success.getKey(),object); + return jsonResult; + } + + /** + * 成功,无数据 + * @param object + * @return + */ + public static JsonResult success(){ + JsonResult jsonResult = new JsonResult(ResultEnum.success.getKey()); + return jsonResult; + } + + /** + * 成功,返回分页数据 + * @param firstResult + * @param totalCount + * @param list + * @return + */ + public static PageingDto success(Integer firstResult,Integer totalCount,List list){ + return new PageingDto(ResultEnum.success.getKey(), firstResult, totalCount, list); + } + +} diff --git a/src/main/java/com/ifish/util/StringUtil.java b/src/main/java/com/ifish/util/StringUtil.java new file mode 100644 index 0000000..7c4bf82 --- /dev/null +++ b/src/main/java/com/ifish/util/StringUtil.java @@ -0,0 +1,229 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.util; + +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.net.URLEncoder; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.List; +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import org.codehaus.jackson.map.ObjectMapper; +import org.codehaus.jackson.type.JavaType; + +public class StringUtil { + + + /** + * Object转Json + */ + public static String ObjectToJson(Object value) { + try { + if(value==null) + return null; + ObjectMapper mapper = new ObjectMapper(); + String js = mapper.writeValueAsString(value); + return js; + } catch (Exception ex) { + System.out.println("【异常信息】 >>> " + ex.toString()); + return "Error"; + } + } + + /** + * Json转Object(List) + * + * @param json 需要转换的JSON字符串 + * @param bean JavaBean, + * @return 拿到结果需要强转一次,因为你拿到的是Object, 例如这样调用和强转: List<School> lst + * =(List<School>)StringUtil.JsonToObjectList(value, School.class); + */ + public static Object JsonToList(String json, Class bean) throws Exception { + ObjectMapper mapper = new ObjectMapper(); + JavaType javaType = mapper.getTypeFactory().constructParametricType(List.class, bean); + return mapper.readValue(json, javaType); + } + + /** + * Json转Object(JavaBean) + * + * @param json 需要转换的JSON字符串 + * @param bean JavaBean, + * @return 拿到结果需要强转一次,因为你拿到的是Object, 例如这样调用和强转: School lst + * =(School)StringUtil.JsonToObjectList(value, School.class); + */ + public static Object JsonToBean(String json, Class bean) throws Exception { + ObjectMapper mapper = new ObjectMapper(); + JavaType javaType = mapper.getTypeFactory().uncheckedSimpleType(bean); + return mapper.readValue(json, javaType); + } + + /** + * 将json格式的字符串解析成Map对象 + */ + public static Map> JsonToMap(String json) { + try { + ObjectMapper mapper = new ObjectMapper(); + Map> maps = mapper.readValue(json, Map.class); + return maps; + } catch (Exception e) { + System.out.println("【异常信息】 >>> " + e.toString()); + return null; + } + } + + public static Map JsonToMapContainMap(String json) { + try { + ObjectMapper mapper = new ObjectMapper(); + Map maps = mapper.readValue(json, Map.class); + return maps; + } catch (Exception e) { + System.out.println("【异常信息】 >>> " + e.toString()); + return null; + } + } + + public static Map JsonToRealMap(String json) { + try { + ObjectMapper mapper = new ObjectMapper(); + Map maps = mapper.readValue(json, Map.class); + return maps; + } catch (Exception e) { + System.out.println("【异常信息】 >>> " + e.toString()); + return null; + } + } + + /** + * 正则表达式验证 + * + * @param value 需要验证的值 + * @param regexp 进行验证的正则表达式 + */ + public static boolean regExpTest(String value, String regexp) { + //验证标识符必须由字母、数字、下划线组成 + Pattern p = Pattern.compile(regexp); + Matcher m = p.matcher(value); + boolean flg = m.matches(); + return flg; + } + + /** + * ISO-8859-1转UTF-8 主要用于POST数据处理 + * + * @param str 需要转码的值 + */ + public static String encodeStr(String str) { + try { + return new String(str.getBytes("ISO-8859-1"), "UTF-8"); + } catch (UnsupportedEncodingException e) { + return null; + } + } + + /** + * 利用MD5进行加密 + * + * @param str 待加密的字符串 + * @return 加密后的字符串 + * @throws NoSuchAlgorithmException 没有这种产生消息摘要的算法 + * @throws UnsupportedEncodingException + */ + public static String EncoderByMd5(String str) throws NoSuchAlgorithmException, UnsupportedEncodingException { + + byte[] bs = MessageDigest.getInstance("MD5").digest(str.getBytes()); + StringBuilder sb = new StringBuilder(40); + for (byte x : bs) { + if ((x & 0xff) >> 4 == 0) { + sb.append("0").append(Integer.toHexString(x & 0xff)); + } else { + sb.append(Integer.toHexString(x & 0xff)); + } + } + return sb.toString(); + } + + /** + * 对文字进行编码处理 + * + * @param str + * @return + * @throws NoSuchAlgorithmException + * @throws UnsupportedEncodingException + */ + public static String encoderUrl(String str) { + try { + String urlStr = URLEncoder.encode(str, "utf-8"); + return urlStr.replace("%", "$"); + } catch (UnsupportedEncodingException ex) { + Logger.getLogger(StringUtil.class.getName()).log(Level.SEVERE, null, ex); + } + + return null; + } + + /** + * 对编码后的文字进行解码 + * + * @param str + * @return + * @throws NoSuchAlgorithmException + * @throws UnsupportedEncodingException + */ + public static String decoderUrl(String str) { + try { + str = str.replace("$", "%"); + String urlStr = URLDecoder.decode(str, "utf-8"); + return urlStr; + + } catch (UnsupportedEncodingException ex) { + Logger.getLogger(StringUtil.class.getName()).log(Level.SEVERE, null, ex); + } + return null; + } + + /** + * byte数组转hex字符串
+ * 一个byte转为2个hex字符 + * + * @param src + * @return + */ + public static String bytes2Hex(byte[] src) { + char[] res = new char[src.length * 2]; + final char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; + for (int i = 0, j = 0; i < src.length; i++) { + res[j++] = hexDigits[src[i] >>> 4 & 0x0f]; + res[j++] = hexDigits[src[i] & 0x0f]; + } + + return new String(res); + } + + /** + * hex字符串转byte数组
+ * 2个hex转为一个byte + * + * @param src + * @return + */ + public static byte[] hex2Bytes(String src) { + byte[] res = new byte[src.length() / 2]; + char[] chs = src.toCharArray(); + for (int i = 0, c = 0; i < chs.length; i += 2, c++) { + res[c] = (byte) (Integer.parseInt(new String(chs, i, 2), 16)); + } + + return res; + } + + +} diff --git a/src/main/java/com/ifish/validator/AddValueParam.java b/src/main/java/com/ifish/validator/AddValueParam.java new file mode 100644 index 0000000..34fd26d --- /dev/null +++ b/src/main/java/com/ifish/validator/AddValueParam.java @@ -0,0 +1,50 @@ +package com.ifish.validator; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; + + +/** + * 增加经验值或金币值参数 + * @author Administrator + * + */ +public class AddValueParam{ + + /** + * 规则类型 + */ + @NotBlank + @Length(max=20,min=3) + private String ruleType; + /** + * 用户ID + */ + @NotNull + @Min(1) + private Integer userId; + + public AddValueParam() {} + + public AddValueParam(String ruleType, Integer userId) { + this.ruleType = ruleType; + this.userId = userId; + } + + public String getRuleType() { + return ruleType; + } + public void setRuleType(String ruleType) { + this.ruleType = ruleType; + } + public Integer getUserId() { + return userId; + } + public void setUserId(Integer userId) { + this.userId = userId; + } + +} diff --git a/src/main/java/com/ifish/validator/LiveRoomParam.java b/src/main/java/com/ifish/validator/LiveRoomParam.java new file mode 100644 index 0000000..c4b04cc --- /dev/null +++ b/src/main/java/com/ifish/validator/LiveRoomParam.java @@ -0,0 +1,75 @@ +package com.ifish.validator; + +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; + + +/** + * 直播间信息 + * @author Administrator + * + */ +public class LiveRoomParam{ + /** + * 用户ID + */ + @NotBlank + private Integer userId; + /** + * 直播间名称 + */ + @NotBlank + @Length(max=20) + private String roomName; + /** + * 直播间描述 + */ + @NotBlank + @Length(max=70) + private String roomDesc; + /** + * 直播间状态 + * @return + */ + @NotBlank + @Length(max=1) + private String RoomStatus; + /** + * 摄像头ID + */ + @NotBlank + @Length(max=20) + private String cameraId; + + public String getRoomName() { + return roomName; + } + public void setRoomName(String roomName) { + this.roomName = roomName; + } + public String getRoomDesc() { + return roomDesc; + } + public void setRoomDesc(String roomDesc) { + this.roomDesc = roomDesc; + } + public String getRoomStatus() { + return RoomStatus; + } + public void setRoomStatus(String roomStatus) { + RoomStatus = roomStatus; + } + public String getCameraId() { + return cameraId; + } + public void setCameraId(String cameraId) { + this.cameraId = cameraId; + } + public Integer getUserId() { + return userId; + } + public void setUserId(Integer userId) { + this.userId = userId; + } + +} diff --git a/src/main/java/com/ifish/validator/LoginParam.java b/src/main/java/com/ifish/validator/LoginParam.java new file mode 100644 index 0000000..8c668cd --- /dev/null +++ b/src/main/java/com/ifish/validator/LoginParam.java @@ -0,0 +1,64 @@ +package com.ifish.validator; + +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; + + +/** + * 用户登陆参数 + * @author Administrator + * + */ +public class LoginParam{ + + /** + * 手机号 + */ + @NotBlank + @Length(max=11,min=8) + private String phoneNumber; + /** + * 密码 + */ + @NotBlank + @Length(max=32,min=32) + private String userPassword; + /** + * 手机登陆类型 + */ + @NotBlank + @Length(max=7,min=3) + private String loginType; + /** + * 接口版本号 + * @return + */ + @Length(max=3) + private String version; + + public String getPhoneNumber() { + return phoneNumber; + } + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + } + public String getUserPassword() { + return userPassword; + } + public void setUserPassword(String userPassword) { + this.userPassword = userPassword; + } + public String getLoginType() { + return loginType; + } + public void setLoginType(String loginType) { + this.loginType = loginType; + } + public String getVersion() { + return version; + } + public void setVersion(String version) { + this.version = version; + } + +} diff --git a/src/main/java/com/ifish/validator/PageParam.java b/src/main/java/com/ifish/validator/PageParam.java new file mode 100644 index 0000000..6e46c05 --- /dev/null +++ b/src/main/java/com/ifish/validator/PageParam.java @@ -0,0 +1,61 @@ +package com.ifish.validator; + +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + + +/** + * 分页数据参数 + * @author Administrator + * + */ +public class PageParam{ + + /** + * 用户ID + */ + @NotNull + @Min(1) + private Integer userId; + /** + * 开始行 + */ + @NotNull + @Min(0) + private Integer firstResult; + /** + * 分页大小 + */ + @NotNull + @Min(1) + @Max(20) + private Integer pageSize; + + public PageParam() {} + + public PageParam(Integer userId, Integer firstResult, Integer pageSize) { + this.userId = userId; + this.firstResult = firstResult; + this.pageSize = pageSize; + } + public Integer getUserId() { + return userId; + } + public void setUserId(Integer userId) { + this.userId = userId; + } + public Integer getFirstResult() { + return firstResult; + } + public void setFirstResult(Integer firstResult) { + this.firstResult = firstResult; + } + public Integer getPageSize() { + return pageSize; + } + public void setPageSize(Integer pageSize) { + this.pageSize = pageSize; + } + +} diff --git a/src/main/java/com/ifish/validator/RegisterParam.java b/src/main/java/com/ifish/validator/RegisterParam.java new file mode 100644 index 0000000..d11edaa --- /dev/null +++ b/src/main/java/com/ifish/validator/RegisterParam.java @@ -0,0 +1,106 @@ +package com.ifish.validator; + +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; + + +/** + * 注册参数 + * @author Administrator + * + */ +public class RegisterParam{ + + /** + * 手机号 + */ + @NotBlank + @Length(max=11,min=8) + private String phoneNumber; + /** + * 密码 + */ + @NotBlank + @Length(max=32,min=32) + private String userPassword; + /** + * 手机注册类型 + */ + @NotBlank + @Length(max=7,min=3) + private String phoneType; + /** + * 注册地址 + */ + @Length(max=200) + private String address; + /** + * 经度 + */ + private Double longitude; + /** + * 维度 + */ + private Double latitude; + + public RegisterParam() {} + + public RegisterParam(String phoneNumber, String userPassword, String phoneType, + String address, Double longitude, Double latitude) { + this.phoneNumber = phoneNumber; + this.userPassword = userPassword; + this.phoneType = phoneType; + this.address = address; + this.longitude = longitude; + this.latitude = latitude; + } + + public String getPhoneNumber() { + return phoneNumber; + } + + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + } + + public String getUserPassword() { + return userPassword; + } + + public void setUserPassword(String userPassword) { + this.userPassword = userPassword; + } + + public String getPhoneType() { + return phoneType; + } + + public void setPhoneType(String phoneType) { + this.phoneType = phoneType; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public Double getLongitude() { + return longitude; + } + + public void setLongitude(Double longitude) { + this.longitude = longitude; + } + + public Double getLatitude() { + return latitude; + } + + public void setLatitude(Double latitude) { + this.latitude = latitude; + } + +} diff --git a/src/main/java/com/ifish/validator/ShopsUserInfoParam.java b/src/main/java/com/ifish/validator/ShopsUserInfoParam.java new file mode 100644 index 0000000..f865698 --- /dev/null +++ b/src/main/java/com/ifish/validator/ShopsUserInfoParam.java @@ -0,0 +1,108 @@ +package com.ifish.validator; + +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; + +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotBlank; +/** + * 商家会员信息 + * @author Administrator + * + */ +public class ShopsUserInfoParam { + + /** + * 会员等级 + */ + @Min(1) + @Max(3) + private int memberLevel; + /** + * 用户名称 + */ + @NotBlank + @Length(max=10) + private String userName; + /** + * 手机号码 + */ + @NotBlank + @Length(max=11) + private String phoneNumber; + /** + * 省 + */ + @Length(max=30) + private String province; + /** + * 市 + */ + @Length(max=30) + private String city; + /** + * 区 + */ + @Length(max=30) + private String area; + /** + * 地址 + */ + @Length(max=100) + private String address; + /** + * 备注 + */ + @Length(max=50) + private String remark; + + public int getMemberLevel() { + return memberLevel; + } + public void setMemberLevel(int memberLevel) { + this.memberLevel = memberLevel; + } + public String getUserName() { + return userName; + } + public void setUserName(String userName) { + this.userName = userName; + } + public String getPhoneNumber() { + return phoneNumber; + } + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + } + public String getAddress() { + return address; + } + public void setAddress(String address) { + this.address = address; + } + public String getRemark() { + return remark; + } + public void setRemark(String remark) { + this.remark = remark; + } + public String getProvince() { + return province; + } + public void setProvince(String province) { + this.province = province; + } + public String getCity() { + return city; + } + public void setCity(String city) { + this.city = city; + } + public String getArea() { + return area; + } + public void setArea(String area) { + this.area = area; + } + +} diff --git a/src/main/java/com/ifish/validator/ValidateUtil.java b/src/main/java/com/ifish/validator/ValidateUtil.java new file mode 100644 index 0000000..8014acc --- /dev/null +++ b/src/main/java/com/ifish/validator/ValidateUtil.java @@ -0,0 +1,23 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.validator; + +/** + * + * @author Administrator + */ +public class ValidateUtil { + + /** + * 验证当前系统是windows(本地,返回true),还是unix(服务器,返回false) + * + * @return + */ + public static boolean IsWinOrUnix() { + String os = System.getProperty("os.name");//获取当前操作系统 + return os.toLowerCase().startsWith("win"); + } +} diff --git a/src/main/resources/application-context.xml b/src/main/resources/application-context.xml new file mode 100644 index 0000000..d7086dc --- /dev/null +++ b/src/main/resources/application-context.xml @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + classpath:/com/ifish/entity/hbm/*.hbm.xml + + + + + + com.ifish.entity + + + + + ${hibernate.dialect} + ${hibernate.show_sql} + ${hibernate.format_sql} + ${hibernate.hbm2ddl.auto} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/ehcache-setting.xml b/src/main/resources/ehcache-setting.xml new file mode 100644 index 0000000..b12fe8c --- /dev/null +++ b/src/main/resources/ehcache-setting.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/fdfs_client_ifish7.conf b/src/main/resources/fdfs_client_ifish7.conf new file mode 100644 index 0000000..9661bfb --- /dev/null +++ b/src/main/resources/fdfs_client_ifish7.conf @@ -0,0 +1,7 @@ +connect_timeout = 2 +network_timeout = 30 +charset = UTF-8 +http.tracker_http_port = 85 +http.anti_steal_token = no +http.secret_key = FastDFS1234567890 +tracker_server = 120.55.190.56:22131 \ No newline at end of file diff --git a/src/main/resources/fdfs_client_zhangxinyanv5.conf b/src/main/resources/fdfs_client_zhangxinyanv5.conf new file mode 100644 index 0000000..6a88c9e --- /dev/null +++ b/src/main/resources/fdfs_client_zhangxinyanv5.conf @@ -0,0 +1,8 @@ +connect_timeout = 2 +network_timeout = 30 +charset = UTF-8 +http.tracker_http_port = 8017 +http.anti_steal_token = no +http.secret_key = FastDFS1234567890 +tracker_server = 139.196.24.156:22122 + diff --git a/src/main/resources/ifish.properties b/src/main/resources/ifish.properties new file mode 100644 index 0000000..be9355a --- /dev/null +++ b/src/main/resources/ifish.properties @@ -0,0 +1,6 @@ +#ifish\u5b89\u5168\u6821\u9a8c +#ifishAppKey=5fc7bdada110e3a6eefd3065b8d8d995 +#ifishAppSecret=9596b393ab0f +overtime=30 +#\u5f00\u53d1\u6a21\u5f0f +devModel=true \ No newline at end of file diff --git a/src/main/resources/jdbc.properties b/src/main/resources/jdbc.properties new file mode 100644 index 0000000..66e9300 --- /dev/null +++ b/src/main/resources/jdbc.properties @@ -0,0 +1,29 @@ +c3p0.driverClassName=com.mysql.jdbc.Driver +c3p0.url=jdbc\:mysql\://localhost\:3306/myfishdb?characterEncoding\=UTF-8 +c3p0.username=ifish +c3p0.password=ifish7pwd +#c3p0.username=root +#c3p0.password=123456 + +c3p0.autoCommitOnClose=true +c3p0.initialPoolSize=20 +c3p0.minPoolSize=20 +c3p0.maxPoolSize=50 +c3p0.acquireIncrement=3 + +c3p0.checkoutTimeout=5000 +c3p0.maxIdleTime=7200 +c3p0.idleConnectionTestPeriod=18000 +#c3p0.maxIdleTimeExcessConnections=1800 + +#c3p0.automaticTestTable=C3P0TestTable +#c3p0.testConnectionOnCheckout=false +#c3p0.testConnectionOnCheckin=false + +#org.hibernate.dialect.MySQLInnoDBDialect +hibernate.dialect=org.hibernate.dialect.MySQLDialect +hibernate.show_sql=false +hibernate.format_sql=true +hibernate.hbm2ddl.auto=false +hibernate.jdbc.batch_size=50 +hibernate.query.substitutions=true 1,false 0 diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml new file mode 100644 index 0000000..6e5755d --- /dev/null +++ b/src/main/resources/logback.xml @@ -0,0 +1,38 @@ + + + + + + + %d{yyyy-MM-dd HH:mm:ss} 【%-5level】 【%logger{50}】 %msg%n + GBK + + + + + + ${LOG_HOME}/ifish/localhost.log + + ${LOG_HOME}/ifish/%d{yyyy-MM-dd}.log + 30 + + 100MB + + + + %d{yyyy-MM-dd HH:mm:ss} 【%-5level】 【%logger{50}】 %msg%n + UTF-8 + + + WARN + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mybatis-config.xml b/src/main/resources/mybatis-config.xml new file mode 100644 index 0000000..37aca1b --- /dev/null +++ b/src/main/resources/mybatis-config.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/main/resources/property.properties b/src/main/resources/property.properties new file mode 100644 index 0000000..1e27a3e --- /dev/null +++ b/src/main/resources/property.properties @@ -0,0 +1,34 @@ +#\u5934\u50cf\u5b58\u50a8\u8def\u5f84 +path_img=/mydata/tmp/Img/app +#\u5546\u5bb6\u8ba4\u8bc1\u56fe\u7247 +path_shops=/mydata/tmp/Img/shops +#\u5546\u54c1\u4ecb\u7ecd\u56fe\u7247 +path_commodity=/mydata/tmp/Img/commodity +#\u76f4\u64ad\u95f4\u5c01\u9762 +path_room_img=/mydata/tmp/Img/room +#\u5fae\u4fe1\u5206\u4eab\u9875\u9762 +path_share_html=/mydata/tmp/html/ +#\u5fae\u4fe1\u5206\u4eab\u9875\u56fe\u7247 +path_share_img=/mydata/tmp/html/images/share +#\u770b\u62a4\u62a5\u544a\u9875\u9762 +path_look_html=/mydata/tmp/look/ +#\u770b\u62a4\u62a5\u544a\u56fe\u7247 +path_look_img=/mydata/tmp/look/images/share +#\u770b\u62a4\u62a5\u544a\u6a21\u7248html\u540d\u5b57 +html_name=index.html +#\u4e91\u4fe1\u7231\u9c7c\u5947\u5b98\u65b9\u5e10\u53f7 +ifish_account=ifish +#IM\u5b98\u65b9\u624b\u673a\u53f7 +netease_phone=18501773036 +#FastDFS\u6587\u4ef6URL\u8bbf\u95ee\u8def\u5f84(\u672c\u5730\u548c\u6d4b\u8bd5\u73af\u5883) +fastDFS_url_local=https://app.zhangxinyanv5.top/ +#FastDFS\u6587\u4ef6URL\u8bbf\u95ee\u8def\u5f84(\u6b63\u5f0f\u73af\u5883) +fastDFS_url_app=http://app.ifish7.com/ +#\u672c\u5730 +#link_img_head=http://192.168.61.128:81/ +#\u6d4b\u8bd5\u73af\u5883 +#link_img_head=https://app.zhangxinyanv5.top/ +#\u6b63\u5f0f\u73af\u5883 +link_img_head=https://app.ifish7.com/ +#\u56fe\u7247\u683c\u5f0f\u9a8c\u8bc1 +check_style=GIF,PNG,BMP,JPG,JPEG \ No newline at end of file diff --git a/src/main/resources/spring-mybatis.xml b/src/main/resources/spring-mybatis.xml new file mode 100644 index 0000000..e74a761 --- /dev/null +++ b/src/main/resources/spring-mybatis.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/springmvc-servlet.xml b/src/main/resources/springmvc-servlet.xml new file mode 100644 index 0000000..55f3857 --- /dev/null +++ b/src/main/resources/springmvc-servlet.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/META-INF/MANIFEST.MF b/src/main/webapp/META-INF/MANIFEST.MF new file mode 100644 index 0000000..254272e --- /dev/null +++ b/src/main/webapp/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/src/main/webapp/META-INF/context.xml b/src/main/webapp/META-INF/context.xml new file mode 100644 index 0000000..7118028 --- /dev/null +++ b/src/main/webapp/META-INF/context.xml @@ -0,0 +1,2 @@ + + diff --git a/src/main/webapp/WEB-INF/lib/commons-codec-1.4.jar b/src/main/webapp/WEB-INF/lib/commons-codec-1.4.jar new file mode 100644 index 0000000..458d432 Binary files /dev/null and b/src/main/webapp/WEB-INF/lib/commons-codec-1.4.jar differ diff --git a/src/main/webapp/WEB-INF/lib/fastdfs-client-java-1.25.jar b/src/main/webapp/WEB-INF/lib/fastdfs-client-java-1.25.jar new file mode 100644 index 0000000..74adb92 Binary files /dev/null and b/src/main/webapp/WEB-INF/lib/fastdfs-client-java-1.25.jar differ diff --git a/src/main/webapp/WEB-INF/lib/mysql-connector-5.1.8.jar b/src/main/webapp/WEB-INF/lib/mysql-connector-5.1.8.jar new file mode 100644 index 0000000..5a7c6fb Binary files /dev/null and b/src/main/webapp/WEB-INF/lib/mysql-connector-5.1.8.jar differ diff --git a/src/main/webapp/WEB-INF/lib/taobao-sdk-java-auto_1444640346387-20151013.jar b/src/main/webapp/WEB-INF/lib/taobao-sdk-java-auto_1444640346387-20151013.jar new file mode 100644 index 0000000..a4dd5f4 Binary files /dev/null and b/src/main/webapp/WEB-INF/lib/taobao-sdk-java-auto_1444640346387-20151013.jar differ diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..69ea1c2 --- /dev/null +++ b/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,50 @@ + + + Archetype Created Web Application + + + index.jsp + + + + contextConfigLocation + + classpath:application-context.xml + classpath:spring-mybatis.xml + + + + org.springframework.web.context.ContextLoaderListener + + + + encoding + org.springframework.web.filter.CharacterEncodingFilter + + encoding + UTF-8 + + + forceEncoding + true + + + + encoding + * + + + + springMVC + org.springframework.web.servlet.DispatcherServlet + + contextConfigLocation + classpath:springmvc-servlet.xml + + 1 + + + springMVC + /api/* + + diff --git a/src/main/webapp/index.jsp b/src/main/webapp/index.jsp new file mode 100644 index 0000000..407c887 --- /dev/null +++ b/src/main/webapp/index.jsp @@ -0,0 +1,11 @@ +<%@ page language="java" pageEncoding="utf-8"%> + + + + 首页 + + + +

访问正常

+ + diff --git a/src/main/webapp/static/css/jquery.alerts.css b/src/main/webapp/static/css/jquery.alerts.css new file mode 100644 index 0000000..2065874 --- /dev/null +++ b/src/main/webapp/static/css/jquery.alerts.css @@ -0,0 +1,57 @@ +#popup_container { +font-family: Arial, sans-serif; +font-size: 12px; +min-width: 300px; /* Dialog will be no smaller than this */ +max-width: 600px; /* Dialog will wrap after this width */ +background: #FFF; +border: solid 5px #999; +color: #000; +-moz-border-radius: 5px; +-webkit-border-radius: 5px; +border-radius: 5px; +} +/* http://keleyi.com */ +#popup_title { +font-size: 14px; +font-weight: bold; +text-align: center; +line-height: 1.75em; +color: #666; +background: #CCC url(images/title.gif) top repeat-x; +border: solid 1px #FFF; +border-bottom: solid 1px #999; +cursor: default; +padding: 0em; +margin: 0em; +} + +#popup_content { +background: 16px 16px no-repeat url(images/info.gif); +padding: 1em 1.75em; +margin: 0em; +} + +#popup_content.alert { +background-image: url(images/info.gif); +} + +#popup_content.confirm { +background-image: url(images/important.gif); +} + +#popup_content.prompt { +background-image: url(images/help.gif); +} + +#popup_message { +padding-left: 48px; +} + +#popup_panel { +text-align: center; +margin: 1em 0em 0em 1em; +} + +#popup_prompt { +margin: .5em 0em; +} \ No newline at end of file diff --git a/src/main/webapp/static/js/jquery-1.8.2.min.js b/src/main/webapp/static/js/jquery-1.8.2.min.js new file mode 100644 index 0000000..bc3fbc8 --- /dev/null +++ b/src/main/webapp/static/js/jquery-1.8.2.min.js @@ -0,0 +1,2 @@ +/*! jQuery v1.8.2 jquery.com | jquery.org/license */ +(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write(""),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bS[a]=c,c}function ci(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||ce.test(a)?d(a,e):ci(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ci(a+"["+e+"]",b[e],c,d);else d(a,b)}function cz(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.2",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return a!=null?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b
a",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="
t
",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="
",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||p.guid++:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.length,e=c.shift(),f=p._queueHooks(a,b),g=function(){p.dequeue(a,b)};e==="inprogress"&&(e=c.shift(),d--),e&&(b==="fx"&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);for(c=0,d=this.length;c=0)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c=0)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,d+""),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;j=0:p.find(m,this,null,[f]).length),h[m]&&j.push(l);j.length&&u.push({elem:f,matches:j})}o.length>q&&u.push({elem:this,matches:o.slice(q)});for(d=0;d0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function bc(a,b,c,d){c=c||[],b=b||r;var e,f,i,j,k=b.nodeType;if(!a||typeof a!="string")return c;if(k!==1&&k!==9)return[];i=g(b);if(!i&&!d)if(e=P.exec(a))if(j=e[1]){if(k===9){f=b.getElementById(j);if(!f||!f.parentNode)return c;if(f.id===j)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(j))&&h(b,f)&&f.id===j)return c.push(f),c}else{if(e[2])return w.apply(c,x.call(b.getElementsByTagName(a),0)),c;if((j=e[3])&&_&&b.getElementsByClassName)return w.apply(c,x.call(b.getElementsByClassName(j),0)),c}return bp(a.replace(L,"$1"),b,c,d,i)}function bd(a){return function(b){var c=b.nodeName.toLowerCase();return c==="input"&&b.type===a}}function be(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}}function bf(a){return z(function(b){return b=+b,z(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function bg(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}function bh(a,b){var c,d,f,g,h,i,j,k=C[o][a];if(k)return b?0:k.slice(0);h=a,i=[],j=e.preFilter;while(h){if(!c||(d=M.exec(h)))d&&(h=h.slice(d[0].length)),i.push(f=[]);c=!1;if(d=N.exec(h))f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=d[0].replace(L," ");for(g in e.filter)(d=W[g].exec(h))&&(!j[g]||(d=j[g](d,r,!0)))&&(f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=g,c.matches=d);if(!c)break}return b?h.length:h?bc.error(a):C(a,i).slice(0)}function bi(a,b,d){var e=b.dir,f=d&&b.dir==="parentNode",g=u++;return b.first?function(b,c,d){while(b=b[e])if(f||b.nodeType===1)return a(b,c,d)}:function(b,d,h){if(!h){var i,j=t+" "+g+" ",k=j+c;while(b=b[e])if(f||b.nodeType===1){if((i=b[o])===k)return b.sizset;if(typeof i=="string"&&i.indexOf(j)===0){if(b.sizset)return b}else{b[o]=k;if(a(b,d,h))return b.sizset=!0,b;b.sizset=!1}}}else while(b=b[e])if(f||b.nodeType===1)if(a(b,d,h))return b}}function bj(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function bk(a,b,c,d,e){var f,g=[],h=0,i=a.length,j=b!=null;for(;h-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==l)||((b=c).nodeType?j(a,c,d):k(a,c,d))}];for(;i1&&bj(m),i>1&&a.slice(0,i-1).join("").replace(L,"$1"),c,i0,f=a.length>0,g=function(h,i,j,k,m){var n,o,p,q=[],s=0,u="0",x=h&&[],y=m!=null,z=l,A=h||f&&e.find.TAG("*",m&&i.parentNode||i),B=t+=z==null?1:Math.E;y&&(l=i!==r&&i,c=g.el);for(;(n=A[u])!=null;u++){if(f&&n){for(o=0;p=a[o];o++)if(p(n,i,j)){k.push(n);break}y&&(t=B,c=++g.el)}d&&((n=!p&&n)&&s--,h&&x.push(n))}s+=u;if(d&&u!==s){for(o=0;p=b[o];o++)p(x,q,i,j);if(h){if(s>0)while(u--)!x[u]&&!q[u]&&(q[u]=v.call(k));q=bk(q)}w.apply(k,q),y&&!h&&q.length>0&&s+b.length>1&&bc.uniqueSort(k)}return y&&(t=B,l=z),x};return g.el=0,d?z(g):g}function bo(a,b,c,d){var e=0,f=b.length;for(;e2&&(j=h[0]).type==="ID"&&b.nodeType===9&&!f&&e.relative[h[1].type]){b=e.find.ID(j.matches[0].replace(V,""),b,f)[0];if(!b)return c;a=a.slice(h.shift().length)}for(g=W.POS.test(a)?-1:h.length-1;g>=0;g--){j=h[g];if(e.relative[k=j.type])break;if(l=e.find[k])if(d=l(j.matches[0].replace(V,""),R.test(h[0].type)&&b.parentNode||b,f)){h.splice(g,1),a=d.length&&h.join("");if(!a)return w.apply(c,x.call(d,0)),c;break}}}return i(a,m)(d,b,f,c,R.test(a)),c}function bq(){}var c,d,e,f,g,h,i,j,k,l,m=!0,n="undefined",o=("sizcache"+Math.random()).replace(".",""),q=String,r=a.document,s=r.documentElement,t=0,u=0,v=[].pop,w=[].push,x=[].slice,y=[].indexOf||function(a){var b=0,c=this.length;for(;be.cacheLength&&delete a[b.shift()],a[c]=d},a)},B=A(),C=A(),D=A(),E="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",G=F.replace("w","w#"),H="([*^$|!~]?=)",I="\\["+E+"*("+F+")"+E+"*(?:"+H+E+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+G+")|)|)"+E+"*\\]",J=":("+F+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+I+")|[^:]|\\\\.)*|.*))\\)|)",K=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+E+"*((?:-\\d)?\\d*)"+E+"*\\)|)(?=[^-]|$)",L=new RegExp("^"+E+"+|((?:^|[^\\\\])(?:\\\\.)*)"+E+"+$","g"),M=new RegExp("^"+E+"*,"+E+"*"),N=new RegExp("^"+E+"*([\\x20\\t\\r\\n\\f>+~])"+E+"*"),O=new RegExp(J),P=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,Q=/^:not/,R=/[\x20\t\r\n\f]*[+~]/,S=/:not\($/,T=/h\d/i,U=/input|select|textarea|button/i,V=/\\(?!\\)/g,W={ID:new RegExp("^#("+F+")"),CLASS:new RegExp("^\\.("+F+")"),NAME:new RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:new RegExp("^("+F.replace("w","w*")+")"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+J),POS:new RegExp(K,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+E+"*(even|odd|(([+-]|)(\\d*)n|)"+E+"*(?:([+-]|)"+E+"*(\\d+)|))"+E+"*\\)|)","i"),needsContext:new RegExp("^"+E+"*[>+~]|"+K,"i")},X=function(a){var b=r.createElement("div");try{return a(b)}catch(c){return!1}finally{b=null}},Y=X(function(a){return a.appendChild(r.createComment("")),!a.getElementsByTagName("*").length}),Z=X(function(a){return a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!==n&&a.firstChild.getAttribute("href")==="#"}),$=X(function(a){a.innerHTML="";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),_=X(function(a){return a.innerHTML="",!a.getElementsByClassName||!a.getElementsByClassName("e").length?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length===2)}),ba=X(function(a){a.id=o+0,a.innerHTML="
",s.insertBefore(a,s.firstChild);var b=r.getElementsByName&&r.getElementsByName(o).length===2+r.getElementsByName(o+0).length;return d=!r.getElementById(o),s.removeChild(a),b});try{x.call(s.childNodes,0)[0].nodeType}catch(bb){x=function(a){var b,c=[];for(;b=this[a];a++)c.push(b);return c}}bc.matches=function(a,b){return bc(a,null,null,b)},bc.matchesSelector=function(a,b){return bc(b,null,null,[a]).length>0},f=bc.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(e===1||e===9||e===11){if(typeof a.textContent=="string")return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=f(a)}else if(e===3||e===4)return a.nodeValue}else for(;b=a[d];d++)c+=f(b);return c},g=bc.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?b.nodeName!=="HTML":!1},h=bc.contains=s.contains?function(a,b){var c=a.nodeType===9?a.documentElement:a,d=b&&b.parentNode;return a===d||!!(d&&d.nodeType===1&&c.contains&&c.contains(d))}:s.compareDocumentPosition?function(a,b){return b&&!!(a.compareDocumentPosition(b)&16)}:function(a,b){while(b=b.parentNode)if(b===a)return!0;return!1},bc.attr=function(a,b){var c,d=g(a);return d||(b=b.toLowerCase()),(c=e.attrHandle[b])?c(a):d||$?a.getAttribute(b):(c=a.getAttributeNode(b),c?typeof a[b]=="boolean"?a[b]?b:null:c.specified?c.value:null:null)},e=bc.selectors={cacheLength:50,createPseudo:z,match:W,attrHandle:Z?{}:{href:function(a){return a.getAttribute("href",2)},type:function(a){return a.getAttribute("type")}},find:{ID:d?function(a,b,c){if(typeof b.getElementById!==n&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==n&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==n&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:Y?function(a,b){if(typeof b.getElementsByTagName!==n)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c},NAME:ba&&function(a,b){if(typeof b.getElementsByName!==n)return b.getElementsByName(name)},CLASS:_&&function(a,b,c){if(typeof b.getElementsByClassName!==n&&!c)return b.getElementsByClassName(a)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(V,""),a[3]=(a[4]||a[5]||"").replace(V,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||bc.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&bc.error(a[0]),a},PSEUDO:function(a){var b,c;if(W.CHILD.test(a[0]))return null;if(a[3])a[2]=a[3];else if(b=a[4])O.test(b)&&(c=bh(b,!0))&&(c=b.indexOf(")",b.length-c)-b.length)&&(b=b.slice(0,c),a[0]=a[0].slice(0,c)),a[2]=b;return a.slice(0,3)}},filter:{ID:d?function(a){return a=a.replace(V,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(V,""),function(b){var c=typeof b.getAttributeNode!==n&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(V,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=B[o][a];return b||(b=B(a,new RegExp("(^|"+E+")"+a+"("+E+"|$)"))),function(a){return b.test(a.className||typeof a.getAttribute!==n&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return function(d,e){var f=bc.attr(d,a);return f==null?b==="!=":b?(f+="",b==="="?f===c:b==="!="?f!==c:b==="^="?c&&f.indexOf(c)===0:b==="*="?c&&f.indexOf(c)>-1:b==="$="?c&&f.substr(f.length-c.length)===c:b==="~="?(" "+f+" ").indexOf(c)>-1:b==="|="?f===c||f.substr(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d){return a==="nth"?function(a){var b,e,f=a.parentNode;if(c===1&&d===0)return!0;if(f){e=0;for(b=f.firstChild;b;b=b.nextSibling)if(b.nodeType===1){e++;if(a===b)break}}return e-=d,e===c||e%c===0&&e/c>=0}:function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b){var c,d=e.pseudos[a]||e.setFilters[a.toLowerCase()]||bc.error("unsupported pseudo: "+a);return d[o]?d(b):d.length>1?(c=[a,a,"",b],e.setFilters.hasOwnProperty(a.toLowerCase())?z(function(a,c){var e,f=d(a,b),g=f.length;while(g--)e=y.call(a,f[g]),a[e]=!(c[e]=f[g])}):function(a){return d(a,0,c)}):d}},pseudos:{not:z(function(a){var b=[],c=[],d=i(a.replace(L,"$1"));return d[o]?z(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)if(f=g[h])a[h]=!(b[h]=f)}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:z(function(a){return function(b){return bc(a,b).length>0}}),contains:z(function(a){return function(b){return(b.textContent||b.innerText||f(b)).indexOf(a)>-1}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!e.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},header:function(a){return T.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:bd("radio"),checkbox:bd("checkbox"),file:bd("file"),password:bd("password"),image:bd("image"),submit:be("submit"),reset:be("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return U.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement},first:bf(function(a,b,c){return[0]}),last:bf(function(a,b,c){return[b-1]}),eq:bf(function(a,b,c){return[c<0?c+b:c]}),even:bf(function(a,b,c){for(var d=0;d=0;)a.push(d);return a}),gt:bf(function(a,b,c){for(var d=c<0?c+b:c;++d",a.querySelectorAll("[selected]").length||e.push("\\["+E+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),X(function(a){a.innerHTML="

",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+E+"*(?:\"\"|'')"),a.innerHTML="",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=new RegExp(e.join("|")),bp=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a))){var i,j,k=!0,l=o,m=d,n=d.nodeType===9&&a;if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){i=bh(a),(k=d.getAttribute("id"))?l=k.replace(c,"\\$&"):d.setAttribute("id",l),l="[id='"+l+"'] ",j=i.length;while(j--)i[j]=l+i[j].join("");m=R.test(a)&&d.parentNode||d,n=i.join(",")}if(n)try{return w.apply(f,x.call(m.querySelectorAll(n),0)),f}catch(p){}finally{k||d.removeAttribute("id")}}return b(a,d,f,g,h)},h&&(X(function(b){a=h.call(b,"div");try{h.call(b,"[test!='']:sizzle"),f.push("!=",J)}catch(c){}}),f=new RegExp(f.join("|")),bc.matchesSelector=function(b,c){c=c.replace(d,"='$1']");if(!g(b)&&!f.test(c)&&(!e||!e.test(c)))try{var i=h.call(b,c);if(i||a||b.document&&b.document.nodeType!==11)return i}catch(j){}return bc(c,null,null,[b]).length>0})}(),e.pseudos.nth=e.pseudos.eq,e.filters=bq.prototype=e.pseudos,e.setFilters=new bq,bc.attr=p.attr,p.find=bc,p.expr=bc.selectors,p.expr[":"]=p.expr.pseudos,p.unique=bc.uniqueSort,p.text=bc.getText,p.isXMLDoc=bc.isXML,p.contains=bc.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b0)for(e=d;e=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*\s*$/g,bz={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X
","
"]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1>");try{for(;d1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=b===e&&bA,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(f=0;(h=a[f])!=null;f++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{s=s||bk(b),l=b.createElement("div"),s.appendChild(l),h=h.replace(bo,"<$1>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]===""&&!m?l.childNodes:[];for(g=n.length-1;g>=0;--g)p.nodeName(n[g],"tbody")&&!n[g].childNodes.length&&n[g].parentNode.removeChild(n[g])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l.parentNode.removeChild(l)}h.nodeType?t.push(h):p.merge(t,h)}l&&(h=l=s=null);if(!p.support.appendChecked)for(f=0;(h=t[f])!=null;f++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(f=0;(h=t[f])!=null;f++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[f+1,0].concat(r)),f+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.chrome?b.webkit=!0:b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^(none|table(?!-c[ea]).+)/,bO=/^margin/,bP=new RegExp("^("+q+")(.*)$","i"),bQ=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bR=new RegExp("^([-+])=("+q+")","i"),bS={},bT={position:"absolute",visibility:"hidden",display:"block"},bU={letterSpacing:0,fontWeight:400},bV=["Top","Right","Bottom","Left"],bW=["Webkit","O","Moz","ms"],bX=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return b$(this,!0)},hide:function(){return b$(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bX.apply(this,arguments):this.each(function(){(c?a:bZ(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bY(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bR.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bY(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bU&&(f=bU[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(b,c){var d,e,f,g,h=a.getComputedStyle(b,null),i=b.style;return h&&(d=h[c],d===""&&!p.contains(b.ownerDocument,b)&&(d=p.style(b,c)),bQ.test(d)&&bO.test(c)&&(e=i.width,f=i.minWidth,g=i.maxWidth,i.minWidth=i.maxWidth=i.width=d,d=h.width,i.width=e,i.minWidth=f,i.maxWidth=g)),d}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bQ.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth===0&&bN.test(bH(a,"display"))?p.swap(a,bT,function(){return cb(a,b,d)}):cb(a,b,d)},set:function(a,c,d){return b_(a,c,d?ca(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bQ.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bV[d]+b]=e[d]||e[d-2]||e[0];return f}},bO.test(a)||(p.cssHooks[a+b].set=b_)});var cd=/%20/g,ce=/\[\]$/,cf=/\r?\n/g,cg=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,ch=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ch.test(this.nodeName)||cg.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(cf,"\r\n")}}):{name:b.name,value:c.replace(cf,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ci(d,a[d],c,f);return e.join("&").replace(cd,"+")};var cj,ck,cl=/#.*$/,cm=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,co=/^(?:GET|HEAD)$/,cp=/^\/\//,cq=/\?/,cr=/)<[^<]*)*<\/script>/gi,cs=/([?&])_=[^&]*/,ct=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,cu=p.fn.load,cv={},cw={},cx=["*/"]+["*"];try{ck=f.href}catch(cy){ck=e.createElement("a"),ck.href="",ck=ck.href}cj=ct.exec(ck.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&cu)return cu.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):c&&typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("
").append(a.replace(cr,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cB(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cB(a,b),a},ajaxSettings:{url:ck,isLocal:cn.test(cj[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cx},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cz(cv),ajaxTransport:cz(cw),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cC(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cD(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=(c||y)+"",k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cm.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(cl,"").replace(cp,cj[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=ct.exec(l.url.toLowerCase())||!1,l.crossDomain=i&&i.join(":")+(i[3]?"":i[1]==="http:"?80:443)!==cj.join(":")+(cj[3]?"":cj[1]==="http:"?80:443)),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cA(cv,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!co.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cq.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cs,"$1_="+z);l.url=A+(A===l.url?(cq.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cx+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cA(cw,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cE=[],cF=/\?/,cG=/(=)\?(?=&|$)|\?\?/,cH=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cE.pop()||p.expando+"_"+cH++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cG.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cG.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cG,"$1"+f):m?c.data=i.replace(cG,"$1"+f):k&&(c.url+=(cF.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cE.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cI,cJ=a.ActiveXObject?function(){for(var a in cI)cI[a](0,1)}:!1,cK=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cL()||cM()}:cL,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cJ&&delete cI[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cK,cJ&&(cI||(cI={},p(a).unload(cJ)),cI[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cN,cO,cP=/^(?:toggle|show|hide)$/,cQ=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cR=/queueHooks$/,cS=[cY],cT={"*":[function(a,b){var c,d,e=this.createTween(a,b),f=cQ.exec(b),g=e.cur(),h=+g||0,i=1,j=20;if(f){c=+f[2],d=f[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&h){h=p.css(e.elem,a,!0)||c||1;do i=i||".5",h=h/i,p.style(e.elem,a,h+d);while(i!==(i=e.cur()/g)&&i!==1&&--j)}e.unit=d,e.start=h,e.end=f[1]?h+(f[1]+1)*c:c}return e}]};p.Animation=p.extend(cW,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c_.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c_.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=da(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g,null)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window); \ No newline at end of file diff --git a/src/main/webapp/static/js/jquery.alert.js b/src/main/webapp/static/js/jquery.alert.js new file mode 100644 index 0000000..f63eade --- /dev/null +++ b/src/main/webapp/static/js/jquery.alert.js @@ -0,0 +1,224 @@ +// Download by http://keleyi.com +// 由 柯乐义 改进改插件,使插件适用于新版的jquery(比如1.10.1) 版本 + +// Visit http://keleyi.com/a/bjac/no0m3cb1.htm for more information +// +// Usage: +// jAlert( message, [title, callback] ) +// jConfirm( message, [title, callback] ) +// jPrompt( message, [value, title, callback] ) +// +// History: +// +// 1.00 - Released (29 December 2008) +// 2013-7-8 +(function($) { + +$.alerts = { + +// These properties can be read/written by accessing $.alerts.propertyName from your scripts at any time + +verticalOffset: -75, // vertical offset of the dialog from center screen, in pixels +horizontalOffset: 0, // horizontal offset of the dialog from center screen, in pixels/ +repositionOnResize: true, // re-centers the dialog on window resize +overlayOpacity: .01, // transparency level of overlay +overlayColor: '#FFF', // base color of overlay +draggable: true, // make the dialogs draggable (requires UI Draggables plugin) +okButton: '确定', // text for the OK button +cancelButton: '取消', // text for the Cancel button +dialogClass: null, // if specified, this class will be applied to all dialogs + +// Public methods + +alert: function(message, title, callback) { +if( title == null ) title = 'Alert'; +$.alerts._show(title, message, null, 'alert', function(result) { +if( callback ) callback(result); +}); +}, + +confirm: function(message, title, callback) { +if( title == null ) title = 'Confirm'; +$.alerts._show(title, message, null, 'confirm', function(result) { +if( callback ) callback(result); +}); +}, + +prompt: function(message, value, title, callback) { +if( title == null ) title = 'Prompt'; +$.alerts._show(title, message, value, 'prompt', function(result) { +if( callback ) callback(result); +}); +}, + +// Private methods + +_show: function(title, msg, value, type, callback) { + +$.alerts._hide(); +$.alerts._overlay('show'); + +$("BODY").append( +''); + +if( $.alerts.dialogClass ) $("#popup_container").addClass($.alerts.dialogClass); + +// IE6 Fixvar pos = ('undefined' == typeof (document.body.style.maxHeight)) ? 'absolute' : 'fixed'; + +$("#popup_container").css({ +position: 'absolute', +zIndex: 99999, +padding: 0, +margin: 0 +}); + +$("#popup_title").text(title); +$("#popup_content").addClass(type); +$("#popup_message").text(msg); +$("#popup_message").html( $("#popup_message").text().replace(/\n/g, '
') ); + +$("#popup_container").css({ +minWidth: $("#popup_container").outerWidth(), +maxWidth: $("#popup_container").outerWidth() +}); + +$.alerts._reposition(); +$.alerts._maintainPosition(true); + +switch( type ) { +case 'alert': +$("#popup_message").after(''); +$("#popup_ok").click( function() { +$.alerts._hide(); +callback(true); +}); +$("#popup_ok").focus().keypress( function(e) { +if( e.keyCode == 13 || e.keyCode == 27 ) $("#popup_ok").trigger('click'); +}); +break; +case 'confirm': +$("#popup_message").after(''); +$("#popup_ok").click( function() { +$.alerts._hide(); +if( callback ) callback(true); +}); +$("#popup_cancel").click( function() { +$.alerts._hide(); +if( callback ) callback(false); +}); +$("#popup_ok").focus(); +$("#popup_ok, #popup_cancel").keypress( function(e) { +if( e.keyCode == 13 ) $("#popup_ok").trigger('click'); +if( e.keyCode == 27 ) $("#popup_cancel").trigger('click'); +}); +break; +case 'prompt': +$("#popup_message").append('
').after(''); +$("#popup_prompt").width( $("#popup_message").width() ); +$("#popup_ok").click( function() { +var val = $("#popup_prompt").val(); +$.alerts._hide(); +if( callback ) callback( val ); +}); +$("#popup_cancel").click( function() { +$.alerts._hide(); +if( callback ) callback( null ); +}); +$("#popup_prompt, #popup_ok, #popup_cancel").keypress( function(e) { +if( e.keyCode == 13 ) $("#popup_ok").trigger('click'); +if( e.keyCode == 27 ) $("#popup_cancel").trigger('click'); +}); +if( value ) $("#popup_prompt").val(value); +$("#popup_prompt").focus().select(); +break; +} + +// Make draggable +if( $.alerts.draggable ) { +try { +$("#popup_container").draggable({ handle: $("#popup_title") }); +$("#popup_title").css({ cursor: 'move' }); +} catch(e) { /* requires jQuery UI draggables */ } +} +}, + +_hide: function() { +$("#popup_container").remove(); +$.alerts._overlay('hide'); +$.alerts._maintainPosition(false); +}, + +_overlay: function(status) { +switch( status ) { +case 'show': +$.alerts._overlay('hide'); +$("BODY").append(''); +$("#popup_overlay").css({ +position: 'absolute', +zIndex: 99998, +top: '0px', +left: '0px', +width: '100%', +height: $(document).height(), +background: $.alerts.overlayColor, +opacity: $.alerts.overlayOpacity +}); +break; +case 'hide': +$("#popup_overlay").remove(); +break; +} +}, + +_reposition: function() { +var top = (($(window).height() / 2) - ($("#popup_container").outerHeight() / 2)) + $.alerts.verticalOffset; +var left = (($(window).width() / 2) - ($("#popup_container").outerWidth() / 2)) + $.alerts.horizontalOffset; +if( top < 0 ) top = 0; +if( left < 0 ) left = 0; + +// IE6 fix +if ('undefined' == typeof (document.body.style.maxHeight)) top = top + $(window).scrollTop(); + +$("#popup_container").css({ +top: top + 'px', +left: left + 'px' +}); +$("#popup_overlay").height( $(document).height() ); +}, + +_maintainPosition: function(status) { +if( $.alerts.repositionOnResize ) { +switch(status) { +case true: +$(window).bind('resize', function() { +$.alerts._reposition(); +}); +break; +case false: +$(window).unbind('resize'); +break; +} +} +} + +} + +// Shortuct functions +jAlert = function(message, title, callback) { +$.alerts.alert(message, title, callback); +} + +jConfirm = function(message, title, callback) { +$.alerts.confirm(message, title, callback); +}; + +jPrompt = function(message, value, title, callback) { +$.alerts.prompt(message, value, title, callback); +}; + +})(jQuery); \ No newline at end of file diff --git a/src/main/webapp/static/js/jquery.form.js b/src/main/webapp/static/js/jquery.form.js new file mode 100644 index 0000000..c67fc33 --- /dev/null +++ b/src/main/webapp/static/js/jquery.form.js @@ -0,0 +1,1277 @@ +/*! + * jQuery Form Plugin + * version: 3.51.0-2014.06.20 + * Requires jQuery v1.5 or later + * Copyright (c) 2014 M. Alsup + * Examples and documentation at: http://malsup.com/jquery/form/ + * Project repository: https://github.com/malsup/form + * Dual licensed under the MIT and GPL licenses. + * https://github.com/malsup/form#copyright-and-license + */ +/*global ActiveXObject */ + +// AMD support +(function (factory) { + "use strict"; + if (typeof define === 'function' && define.amd) { + // using AMD; register as anon module + define(['jquery'], factory); + } else { + // no AMD; invoke directly + factory( (typeof(jQuery) != 'undefined') ? jQuery : window.Zepto ); + } +} + +(function($) { +"use strict"; + +/* + Usage Note: + ----------- + Do not use both ajaxSubmit and ajaxForm on the same form. These + functions are mutually exclusive. Use ajaxSubmit if you want + to bind your own submit handler to the form. For example, + + $(document).ready(function() { + $('#myForm').on('submit', function(e) { + e.preventDefault(); // <-- important + $(this).ajaxSubmit({ + target: '#output' + }); + }); + }); + + Use ajaxForm when you want the plugin to manage all the event binding + for you. For example, + + $(document).ready(function() { + $('#myForm').ajaxForm({ + target: '#output' + }); + }); + + You can also use ajaxForm with delegation (requires jQuery v1.7+), so the + form does not have to exist when you invoke ajaxForm: + + $('#myForm').ajaxForm({ + delegation: true, + target: '#output' + }); + + When using ajaxForm, the ajaxSubmit function will be invoked for you + at the appropriate time. +*/ + +/** + * Feature detection + */ +var feature = {}; +feature.fileapi = $("").get(0).files !== undefined; +feature.formdata = window.FormData !== undefined; + +var hasProp = !!$.fn.prop; + +// attr2 uses prop when it can but checks the return type for +// an expected string. this accounts for the case where a form +// contains inputs with names like "action" or "method"; in those +// cases "prop" returns the element +$.fn.attr2 = function() { + if ( ! hasProp ) { + return this.attr.apply(this, arguments); + } + var val = this.prop.apply(this, arguments); + if ( ( val && val.jquery ) || typeof val === 'string' ) { + return val; + } + return this.attr.apply(this, arguments); +}; + +/** + * ajaxSubmit() provides a mechanism for immediately submitting + * an HTML form using AJAX. + */ +$.fn.ajaxSubmit = function(options) { + /*jshint scripturl:true */ + + // fast fail if nothing selected (http://dev.jquery.com/ticket/2752) + if (!this.length) { + log('ajaxSubmit: skipping submit process - no element selected'); + return this; + } + + var method, action, url, $form = this; + + if (typeof options == 'function') { + options = { success: options }; + } + else if ( options === undefined ) { + options = {}; + } + + method = options.type || this.attr2('method'); + action = options.url || this.attr2('action'); + + url = (typeof action === 'string') ? $.trim(action) : ''; + url = url || window.location.href || ''; + if (url) { + // clean url (don't include hash vaue) + url = (url.match(/^([^#]+)/)||[])[1]; + } + + options = $.extend(true, { + url: url, + success: $.ajaxSettings.success, + type: method || $.ajaxSettings.type, + iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank' + }, options); + + // hook for manipulating the form data before it is extracted; + // convenient for use with rich editors like tinyMCE or FCKEditor + var veto = {}; + this.trigger('form-pre-serialize', [this, options, veto]); + if (veto.veto) { + log('ajaxSubmit: submit vetoed via form-pre-serialize trigger'); + return this; + } + + // provide opportunity to alter form data before it is serialized + if (options.beforeSerialize && options.beforeSerialize(this, options) === false) { + log('ajaxSubmit: submit aborted via beforeSerialize callback'); + return this; + } + + var traditional = options.traditional; + if ( traditional === undefined ) { + traditional = $.ajaxSettings.traditional; + } + + var elements = []; + var qx, a = this.formToArray(options.semantic, elements); + if (options.data) { + options.extraData = options.data; + qx = $.param(options.data, traditional); + } + + // give pre-submit callback an opportunity to abort the submit + if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) { + log('ajaxSubmit: submit aborted via beforeSubmit callback'); + return this; + } + + // fire vetoable 'validate' event + this.trigger('form-submit-validate', [a, this, options, veto]); + if (veto.veto) { + log('ajaxSubmit: submit vetoed via form-submit-validate trigger'); + return this; + } + + var q = $.param(a, traditional); + if (qx) { + q = ( q ? (q + '&' + qx) : qx ); + } + if (options.type.toUpperCase() == 'GET') { + options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q; + options.data = null; // data is null for 'get' + } + else { + options.data = q; // data is the query string for 'post' + } + + var callbacks = []; + if (options.resetForm) { + callbacks.push(function() { $form.resetForm(); }); + } + if (options.clearForm) { + callbacks.push(function() { $form.clearForm(options.includeHidden); }); + } + + // perform a load on the target only if dataType is not provided + if (!options.dataType && options.target) { + var oldSuccess = options.success || function(){}; + callbacks.push(function(data) { + var fn = options.replaceTarget ? 'replaceWith' : 'html'; + $(options.target)[fn](data).each(oldSuccess, arguments); + }); + } + else if (options.success) { + callbacks.push(options.success); + } + + options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg + var context = options.context || this ; // jQuery 1.4+ supports scope context + for (var i=0, max=callbacks.length; i < max; i++) { + callbacks[i].apply(context, [data, status, xhr || $form, $form]); + } + }; + + if (options.error) { + var oldError = options.error; + options.error = function(xhr, status, error) { + var context = options.context || this; + oldError.apply(context, [xhr, status, error, $form]); + }; + } + + if (options.complete) { + var oldComplete = options.complete; + options.complete = function(xhr, status) { + var context = options.context || this; + oldComplete.apply(context, [xhr, status, $form]); + }; + } + + // are there files to upload? + + // [value] (issue #113), also see comment: + // https://github.com/malsup/form/commit/588306aedba1de01388032d5f42a60159eea9228#commitcomment-2180219 + var fileInputs = $('input[type=file]:enabled', this).filter(function() { return $(this).val() !== ''; }); + + var hasFileInputs = fileInputs.length > 0; + var mp = 'multipart/form-data'; + var multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp); + + var fileAPI = feature.fileapi && feature.formdata; + log("fileAPI :" + fileAPI); + var shouldUseFrame = (hasFileInputs || multipart) && !fileAPI; + + var jqxhr; + + // options.iframe allows user to force iframe mode + // 06-NOV-09: now defaulting to iframe mode if file input is detected + if (options.iframe !== false && (options.iframe || shouldUseFrame)) { + // hack to fix Safari hang (thanks to Tim Molendijk for this) + // see: http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d + if (options.closeKeepAlive) { + $.get(options.closeKeepAlive, function() { + jqxhr = fileUploadIframe(a); + }); + } + else { + jqxhr = fileUploadIframe(a); + } + } + else if ((hasFileInputs || multipart) && fileAPI) { + jqxhr = fileUploadXhr(a); + } + else { + jqxhr = $.ajax(options); + } + + $form.removeData('jqxhr').data('jqxhr', jqxhr); + + // clear element array + for (var k=0; k < elements.length; k++) { + elements[k] = null; + } + + // fire 'notify' event + this.trigger('form-submit-notify', [this, options]); + return this; + + // utility fn for deep serialization + function deepSerialize(extraData){ + var serialized = $.param(extraData, options.traditional).split('&'); + var len = serialized.length; + var result = []; + var i, part; + for (i=0; i < len; i++) { + // #252; undo param space replacement + serialized[i] = serialized[i].replace(/\+/g,' '); + part = serialized[i].split('='); + // #278; use array instead of object storage, favoring array serializations + result.push([decodeURIComponent(part[0]), decodeURIComponent(part[1])]); + } + return result; + } + + // XMLHttpRequest Level 2 file uploads (big hat tip to francois2metz) + function fileUploadXhr(a) { + var formdata = new FormData(); + + for (var i=0; i < a.length; i++) { + formdata.append(a[i].name, a[i].value); + } + + if (options.extraData) { + var serializedData = deepSerialize(options.extraData); + for (i=0; i < serializedData.length; i++) { + if (serializedData[i]) { + formdata.append(serializedData[i][0], serializedData[i][1]); + } + } + } + + options.data = null; + + var s = $.extend(true, {}, $.ajaxSettings, options, { + contentType: false, + processData: false, + cache: false, + type: method || 'POST' + }); + + if (options.uploadProgress) { + // workaround because jqXHR does not expose upload property + s.xhr = function() { + var xhr = $.ajaxSettings.xhr(); + if (xhr.upload) { + xhr.upload.addEventListener('progress', function(event) { + var percent = 0; + var position = event.loaded || event.position; /*event.position is deprecated*/ + var total = event.total; + if (event.lengthComputable) { + percent = Math.ceil(position / total * 100); + } + options.uploadProgress(event, position, total, percent); + }, false); + } + return xhr; + }; + } + + s.data = null; + var beforeSend = s.beforeSend; + s.beforeSend = function(xhr, o) { + //Send FormData() provided by user + if (options.formData) { + o.data = options.formData; + } + else { + o.data = formdata; + } + if(beforeSend) { + beforeSend.call(this, xhr, o); + } + }; + return $.ajax(s); + } + + // private function for handling file uploads (hat tip to YAHOO!) + function fileUploadIframe(a) { + var form = $form[0], el, i, s, g, id, $io, io, xhr, sub, n, timedOut, timeoutHandle; + var deferred = $.Deferred(); + + // #341 + deferred.abort = function(status) { + xhr.abort(status); + }; + + if (a) { + // ensure that every serialized input is still enabled + for (i=0; i < elements.length; i++) { + el = $(elements[i]); + if ( hasProp ) { + el.prop('disabled', false); + } + else { + el.removeAttr('disabled'); + } + } + } + + s = $.extend(true, {}, $.ajaxSettings, options); + s.context = s.context || s; + id = 'jqFormIO' + (new Date().getTime()); + if (s.iframeTarget) { + $io = $(s.iframeTarget); + n = $io.attr2('name'); + if (!n) { + $io.attr2('name', id); + } + else { + id = n; + } + } + else { + $io = $('