From 2c696f4cdd5ae3887e29ed8652152a1e80667484 Mon Sep 17 00:00:00 2001 From: "994856170@qq.com" <ggd1994> Date: Sun, 23 Jul 2017 15:02:24 +0800 Subject: [PATCH 01/13] =?UTF-8?q?=E6=B6=88=E6=81=AF=E7=9B=B8=E5=85=B3API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/model/fairmessage/FairMessage.java | 4 ++- .../front/mobile/MobileRoutes.java | 4 ++- .../front/web/feedback/FeedBackValidator.java | 1 + src/main/resources/ehcache.xml | 28 +++++++++++++------ 4 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/tianpengtech/common/model/fairmessage/FairMessage.java b/src/main/java/com/tianpengtech/common/model/fairmessage/FairMessage.java index 40d8989..7a97010 100644 --- a/src/main/java/com/tianpengtech/common/model/fairmessage/FairMessage.java +++ b/src/main/java/com/tianpengtech/common/model/fairmessage/FairMessage.java @@ -13,7 +13,7 @@ public class FairMessage extends AbstractBaseModel< FairMessage > { */ private static final long serialVersionUID = 1L; public static final FairMessage dao = new FairMessage(); - + public static final String CACHE_NAME="fair_message_cache"; public static final String ID ="id"; // public static final String WH_ID ="wh_id"; //网红ID @@ -23,6 +23,8 @@ public class FairMessage extends AbstractBaseModel< FairMessage > { public static final String CREATE_TIME ="create_time"; // + public static final String ISREAD_READ="1"; //消息已读 + public static final String ISREAD_UNREAD="0"; //消息未读 @Override public String tableName() { return "fair_wh_message"; diff --git a/src/main/java/com/tianpengtech/front/mobile/MobileRoutes.java b/src/main/java/com/tianpengtech/front/mobile/MobileRoutes.java index 0ed7a5c..6869067 100644 --- a/src/main/java/com/tianpengtech/front/mobile/MobileRoutes.java +++ b/src/main/java/com/tianpengtech/front/mobile/MobileRoutes.java @@ -4,6 +4,7 @@ import com.jfinal.config.Routes; import com.tianpengtech.front.mobile.common.intercepter.MobileRequestInterceptor; import com.tianpengtech.front.mobile.common.intercepter.TokenCheckInterceptor; import com.tianpengtech.front.mobile.login.MobileLoginController; +import com.tianpengtech.front.mobile.message.MobileMessageController; /** * Created by ggd on 2017/7/15 0015. @@ -16,6 +17,7 @@ public class MobileRoutes extends Routes { // addInterceptor(new MobileRequestInterceptor()); //验证请求数据有效性 // addInterceptor(new TokenCheckInterceptor()); //验证登录用户token是否有效 - add("/api/passport",MobileLoginController.class); + add("/api",MobileLoginController.class); + add("/api/msg",MobileMessageController.class); } } diff --git a/src/main/java/com/tianpengtech/front/web/feedback/FeedBackValidator.java b/src/main/java/com/tianpengtech/front/web/feedback/FeedBackValidator.java index 5d2cd5b..2dd7179 100644 --- a/src/main/java/com/tianpengtech/front/web/feedback/FeedBackValidator.java +++ b/src/main/java/com/tianpengtech/front/web/feedback/FeedBackValidator.java @@ -17,6 +17,7 @@ package com.tianpengtech.front.web.feedback; import com.jfinal.core.Controller; import com.jfinal.validate.Validator; import com.tianpengtech.common.util.IpKit; +import com.tianpengtech.front.mobile.common.constant.Constant; import com.tianpengtech.front.web.passport.PassportService; /** diff --git a/src/main/resources/ehcache.xml b/src/main/resources/ehcache.xml index c9e68e9..169fbe4 100644 --- a/src/main/resources/ehcache.xml +++ b/src/main/resources/ehcache.xml @@ -24,14 +24,14 @@ <!-- 存放用户登录信息,过期时间 3600秒,用ehache替换session功能 --> <cache name="session" - maxElementsInMemory="10000" - maxElementsOnDisk="100000" - eternal="false" - timeToIdleSeconds="3600" - timeToLiveSeconds="0" - overflowToDisk="true" - diskPersistent="true" - /> + maxElementsInMemory="10000" + maxElementsOnDisk="100000" + eternal="false" + timeToIdleSeconds="3600" + timeToLiveSeconds="0" + overflowToDisk="true" + diskPersistent="true" +/> <!--存放用户信息--> <cache name="user" maxElementsInMemory="10000" @@ -222,4 +222,16 @@ timeToLiveSeconds="1800" overflowToDisk="false"> </cache> + + + <!--存放消息--> + <cache name="fair_message_cache" + maxElementsInMemory="10000" + maxElementsOnDisk="100000" + eternal="false" + timeToIdleSeconds="3600" + timeToLiveSeconds="0" + overflowToDisk="true" + diskPersistent="true" + /> </ehcache> \ No newline at end of file -- Gitee From 01bd4e52f0fb24717a7af507f4239f42aa6be8d7 Mon Sep 17 00:00:00 2001 From: "994856170@qq.com" <ggd1994> Date: Mon, 24 Jul 2017 17:12:37 +0800 Subject: [PATCH 02/13] =?UTF-8?q?=E6=B6=88=E6=81=AF=E7=9B=B8=E5=85=B3API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mobile/common/constant/Constant.java | 2 +- .../front/mobile/common/util/UserUtil.java | 4 +- .../mobile/login/MobileLoginService.java | 7 +- .../front/mobile/message/MessageService.java | 103 ++++++++++++++++++ .../message/MobileMessageController.java | 50 +++++++++ .../front/web/passport/PassportService.java | 56 ++++------ .../web/passport/PassportWebController.java | 1 + 7 files changed, 187 insertions(+), 36 deletions(-) create mode 100644 src/main/java/com/tianpengtech/front/mobile/message/MessageService.java create mode 100644 src/main/java/com/tianpengtech/front/mobile/message/MobileMessageController.java diff --git a/src/main/java/com/tianpengtech/front/mobile/common/constant/Constant.java b/src/main/java/com/tianpengtech/front/mobile/common/constant/Constant.java index 8b2e34c..8949bde 100644 --- a/src/main/java/com/tianpengtech/front/mobile/common/constant/Constant.java +++ b/src/main/java/com/tianpengtech/front/mobile/common/constant/Constant.java @@ -8,5 +8,5 @@ public class Constant { public static final String DEFAULT_PASSWORD = "zxc@#@$6"; public static final String REGEX_MOBILE = "^((17[0-9])|(14[0-9])|(13[0-9])|(15[^4,\\D])|(18[0-9]))\\d{8}$"; - public static final String REGEX_INTERGER = "^\\d{6}$"; + public static final String REGEX_INTERGER = "^\\d+$"; } diff --git a/src/main/java/com/tianpengtech/front/mobile/common/util/UserUtil.java b/src/main/java/com/tianpengtech/front/mobile/common/util/UserUtil.java index 7d23cda..cf52b03 100644 --- a/src/main/java/com/tianpengtech/front/mobile/common/util/UserUtil.java +++ b/src/main/java/com/tianpengtech/front/mobile/common/util/UserUtil.java @@ -16,7 +16,7 @@ public class UserUtil { * @return */ public static User getCurrentUser(String token, String source) { - User user = CacheKit.get(CACHE_NAME,"USER_CLIENT_" + token); + User user = CacheKit.get(CACHE_NAME,source.toUpperCase()+"_USER_CLIENT_" + token); if (user != null) { setCurrentUser( user, token, source); }else{ @@ -38,7 +38,7 @@ public class UserUtil { * 方式登陆 * */ //获取配置文件中的超时时间,并转换为秒 - CacheKit.put(CACHE_NAME,"USER_CLIENT_"+token,user); + CacheKit.put(CACHE_NAME,source.toUpperCase()+"_USER_CLIENT_"+token,user); } /** diff --git a/src/main/java/com/tianpengtech/front/mobile/login/MobileLoginService.java b/src/main/java/com/tianpengtech/front/mobile/login/MobileLoginService.java index 083fc20..6b85e7d 100644 --- a/src/main/java/com/tianpengtech/front/mobile/login/MobileLoginService.java +++ b/src/main/java/com/tianpengtech/front/mobile/login/MobileLoginService.java @@ -2,6 +2,7 @@ package com.tianpengtech.front.mobile.login; import com.jfinal.kit.Ret; +import com.tianpengtech.common.model.fair.Fair; import com.tianpengtech.common.model.user.User; import com.tianpengtech.front.mobile.common.constant.Constant; import com.tianpengtech.front.mobile.common.util.R; @@ -41,6 +42,10 @@ public class MobileLoginService { if (user == null) { Ret r=passportService.reg(mobile, Constant.DEFAULT_PASSWORD,User.USER_TYPE_FAIR); if (r.isOk()){ + long id= (long) r.get("id"); + Fair fair = new Fair(); + fair.set(Fair.ID,id); + fair.save(); user=loginService.findByMobile(mobile,User.USER_TYPE_FAIR); }else{ return R.fail("注册失败"); @@ -53,7 +58,7 @@ public class MobileLoginService { String token = TokenUtil.getToken(); UserUtil.setCurrentUser(user,token,source); loginService.createLoginLog(user.getLong(User.ID), loginIp,"mobile"); - user.remove(User.DELETETAG).remove(User.USER_TYPE).remove(User.STATUS).remove(User.ID).remove(User.CREATE_TIME); + user.remove(User.DELETETAG).remove(User.USER_TYPE).remove(User.STATUS).remove(User.CREATE_TIME); R r=R.ok("登陆成功"); r.p("user",user); r.p("token",token); diff --git a/src/main/java/com/tianpengtech/front/mobile/message/MessageService.java b/src/main/java/com/tianpengtech/front/mobile/message/MessageService.java new file mode 100644 index 0000000..7bd06c4 --- /dev/null +++ b/src/main/java/com/tianpengtech/front/mobile/message/MessageService.java @@ -0,0 +1,103 @@ +package com.tianpengtech.front.mobile.message; + +import com.jfinal.plugin.activerecord.Page; +import com.tianpengtech.common.model.fair.Fair; +import com.tianpengtech.common.model.fairmessage.FairMessage; +import com.tianpengtech.front.mobile.common.util.R; +import com.tianpengtech.front.web.fair.FairService; + +import java.util.List; + +/** + * Created by ggd on 2017/7/23 0023. + */ +public class MessageService { + public static MessageService me = new MessageService(); + private static FairMessage fairMessage = new FairMessage(); + + /** + * 发送消息 + * @param uid + * @param content + */ + public R sendMessage(long uid,String content){ + FairMessage fm = new FairMessage(); + fm.set(FairMessage.WH_ID,uid); + fm.set(FairMessage.CONTENT,content); + fm.save(); + return R.ok("发送成功"); + } + + + /** + * 获取消息列表 + * @param uid + */ + public R messageList(int pageNum, int length, long uid){ + String sql = String.format(" from %s where %s=? and %s=? order by %s desc,%s asc",fairMessage.tableName(),FairMessage.DELETETAG,FairMessage.WH_ID,FairMessage.CREATE_TIME,FairMessage.ISREAD); + Page<FairMessage> page=fairMessage.paginateByCache(FairMessage.CACHE_NAME,"fairMessage_"+pageNum+"_"+length,pageNum,length,"select *",sql,0,uid); + R r = R.ok("成功"); + r.p("count",page.getTotalRow()); + r.p("pageNum",page.getPageNumber()); + List<FairMessage> list = page.getList(); + list.forEach( f ->{ + f.remove(FairMessage.WH_ID); + f.remove(FairMessage.DELETETAG); + String content=f.get(FairMessage.CONTENT); + f.remove(FairMessage.CONTENT); + f.put("content",handleContent(content)); + }); + r.p("list",list); + return r; + } + + private String handleContent(String content){ + int len = 30; + if (content.length()>len){ + content=content.substring(0,30); + content+="..."; + return content; + }else{ + return content; + } + } + + /** + * 获取消息详情 + * @return + */ + public R getMessage(String id,long uid){ + String sql = String.format("select * from %s where %s=? and %s=? and %s=?",fairMessage.tableName(),FairMessage.DELETETAG,FairMessage.WH_ID,FairMessage.ID); + FairMessage fm=fairMessage.findFirst(sql,0,uid,id); + if (fm != null){ + fm.remove(FairMessage.WH_ID); + fm.remove(FairMessage.DELETETAG); + fm.remove(FairMessage.ISREAD); + R r = R.ok("成功"); + r.p("message",fm); + fm.set(FairMessage.ISREAD,FairMessage.ISREAD_READ); + fm.update(); + return r; + }else{ + return R.fail("消息不存在"); + } + } + + /** + * 某个用户是否有未读消息 + * @param uid + * @return + */ + public R isUnreadMsg(long uid){ + String sql = String.format("select * from %s where %s = ? and %s = ? and %s = ?",fairMessage.tableName(),FairMessage.DELETETAG,FairMessage.ISREAD,FairMessage.WH_ID); + FairMessage fm=fairMessage.findFirst(sql,1,FairMessage.ISREAD_UNREAD,uid); + R r = R.ok("成功"); + if (fm==null){ + r.p("isread","false"); + }else{ + r.p("isread","true"); + } + return r; + } + +} diff --git a/src/main/java/com/tianpengtech/front/mobile/message/MobileMessageController.java b/src/main/java/com/tianpengtech/front/mobile/message/MobileMessageController.java new file mode 100644 index 0000000..7a1a5e8 --- /dev/null +++ b/src/main/java/com/tianpengtech/front/mobile/message/MobileMessageController.java @@ -0,0 +1,50 @@ +package com.tianpengtech.front.mobile.message; + +import com.tianpengtech.common.model.user.User; +import com.tianpengtech.front.mobile.common.util.R; +import com.tianpengtech.front.mobile.common.util.U; +import com.tianpengtech.front.mobile.common.util.UserUtil; +import com.tianpengtech.front.web.common.controller.BaseController; + +/** + * Created by ggd on 2017/7/23 0023. + */ +public class MobileMessageController extends BaseController { + + private static MessageService messageService = new MessageService(); + /** + * 获取消息列表 + */ + public void index(){ + int pageNum = getParaToInt("pageNum",1); + int pageSize = getParaToInt("pageSize",5); + User user=UserUtil.getCurrentUser(getPara("token"),getHeader("source")); + R r=messageService.messageList(pageNum,pageSize,user.getLong(User.ID)); + renderJson(r); + } + + /** + * 获取消息详情 + */ + public void getMessage(){ + String id=getPara("id"); + if (!U.isInteger(id)){ + renderJson(R.fail("数据格式不正确")); + return; + } + User user=UserUtil.getCurrentUser(getPara("token"),getHeader("source")); + R r=messageService.getMessage(id,user.getLong(User.ID)); + renderJson(r); + } + + /** + * 获取用户是否有未读消息 + */ + public void unRead(){ + User user=UserUtil.getCurrentUser(getPara("token"),getHeader("source")); + R r=messageService.isUnreadMsg(user.getLong(User.ID)); + renderJson(r); + } + + +} diff --git a/src/main/java/com/tianpengtech/front/web/passport/PassportService.java b/src/main/java/com/tianpengtech/front/web/passport/PassportService.java index 3abb913..3b97b36 100644 --- a/src/main/java/com/tianpengtech/front/web/passport/PassportService.java +++ b/src/main/java/com/tianpengtech/front/web/passport/PassportService.java @@ -64,7 +64,7 @@ public class PassportService { user.set(User.USER_TYPE,User.USER_TYPE_FAIR); } if (user.save()) { - return Ret.ok(); + return Ret.ok("id",user.get(User.ID)); } else { return Ret.fail("msg", "注册失败,account 保存失败,请告知管理员"); } @@ -75,50 +75,42 @@ public class PassportService { */ public Ret sendAuthCode(String mobile,String ip){ boolean devModel = PropKit.getBoolean("devMode"); - //如果是测试环境 - if (devModel){ - return Ret.ok("code","111111"); - }else{ - //防止恶意发送验证码 - //缓存过期时间为5分钟, 5分钟内超过5次就不允许发送了 - Integer count=CacheKit.get(User.AUTH_CODE_CACHENAME,ip+mobile+"_count"); - if (null != count){ - Integer errorCount = PropKit.getInt("authcode.error.count"); - if (count>=errorCount){ - return Ret.fail("msg", "短信发送次数太频繁,请稍后再试"); - }else{ - CacheKit.put(User.AUTH_CODE_CACHENAME,ip+mobile+"_count",++count); - } + //防止恶意发送验证码 + //缓存过期时间为5分钟, 5分钟内超过5次就不允许发送了 + Integer count=CacheKit.get(User.AUTH_CODE_CACHENAME,ip+mobile+"_count"); + if (null != count){ + Integer errorCount = PropKit.getInt("authcode.error.count"); + if (count>=errorCount){ + return Ret.fail("msg", "短信发送次数太频繁,请稍后再试"); + }else{ + CacheKit.put(User.AUTH_CODE_CACHENAME,ip+mobile+"_count",++count); } - //防止恶意发送验证码结束 - int code=(int)((Math.random()*9+1)*100000); - CacheKit.put(User.AUTH_CODE_CACHENAME,ip+mobile,code); + } + //防止恶意发送验证码结束 + int code=(int)((Math.random()*9+1)*100000); + CacheKit.put(User.AUTH_CODE_CACHENAME,ip+mobile,code); + if (!devModel){ //发送短信验证码 + } + return Ret.ok("code",code); - return Ret.ok("code",code); - } } /** * 验证手机验证码 */ public boolean authCode(String mobile,String ip,int code,boolean flag){ - boolean devModel = PropKit.getBoolean("devMode"); - //如果是测试环境 - if (devModel){ + int cacheCode=CacheKit.get(User.AUTH_CODE_CACHENAME,ip+mobile); + if (code==cacheCode){ + if (flag){ + CacheKit.remove(User.AUTH_CODE_CACHENAME,ip+mobile); + } return true; }else{ - int cacheCode=CacheKit.get(User.AUTH_CODE_CACHENAME,ip+mobile); - if (code==cacheCode){ - if (flag){ - CacheKit.remove(User.AUTH_CODE_CACHENAME,ip+mobile); - } - return true; - }else{ - return false; - } + return false; } + } /** diff --git a/src/main/java/com/tianpengtech/front/web/passport/PassportWebController.java b/src/main/java/com/tianpengtech/front/web/passport/PassportWebController.java index 2b00633..8f5b451 100644 --- a/src/main/java/com/tianpengtech/front/web/passport/PassportWebController.java +++ b/src/main/java/com/tianpengtech/front/web/passport/PassportWebController.java @@ -41,6 +41,7 @@ public class PassportWebController extends BaseController { @Before(PassportValidator.class) public void save() { Ret ret = srv.reg(getPara("mobile"), getPara("password"),User.USER_TYPE_PROV); + ret.remove("id"); renderJson(ret); } -- Gitee From d8571a9a023ad9ffced1d19ccb52596acc55d0e4 Mon Sep 17 00:00:00 2001 From: "994856170@qq.com" <ggd1994> Date: Tue, 25 Jul 2017 17:33:04 +0800 Subject: [PATCH 03/13] =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E4=BF=A1=E6=81=AFAPI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/tianpengtech/common/MyConfig.java | 4 +- .../common/generator/app/Generator.java | 2 +- .../tianpengtech/common/model/fair/Fair.java | 5 + .../common/model/fairext/FairExt.java | 38 ++++ .../front/mobile/MobileRoutes.java | 6 +- .../passport/MobilePassportController.java | 62 ++++++ .../passport/MobilePassportService.java | 195 ++++++++++++++++++ .../passport/MobilePassportValidator.java | 76 +++++++ .../mobile/region/MobileRegionController.java | 32 +++ .../front/mobile/region/RegionService.java | 31 +++ .../front/web/fair/FairService.java | 1 + .../front/web/main/MainWebController.java | 4 +- .../front/web/task/TaskService.java | 2 +- src/main/resources/a_little_config.txt | 16 +- src/main/resources/ehcache.xml | 11 + 15 files changed, 472 insertions(+), 13 deletions(-) create mode 100644 src/main/java/com/tianpengtech/common/model/fairext/FairExt.java create mode 100644 src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java create mode 100644 src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java create mode 100644 src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportValidator.java create mode 100644 src/main/java/com/tianpengtech/front/mobile/region/MobileRegionController.java create mode 100644 src/main/java/com/tianpengtech/front/mobile/region/RegionService.java diff --git a/src/main/java/com/tianpengtech/common/MyConfig.java b/src/main/java/com/tianpengtech/common/MyConfig.java index 6a96af8..1da8050 100644 --- a/src/main/java/com/tianpengtech/common/MyConfig.java +++ b/src/main/java/com/tianpengtech/common/MyConfig.java @@ -18,6 +18,7 @@ import com.tianpengtech.common.model.account.Account; import com.tianpengtech.common.model.authenticate.Authenticate; import com.tianpengtech.common.model.dictionary.Dictionary; import com.tianpengtech.common.model.fair.Fair; +import com.tianpengtech.common.model.fairext.FairExt; import com.tianpengtech.common.model.fairmessage.FairMessage; import com.tianpengtech.common.model.feedback.FeedBack; import com.tianpengtech.common.model.message.Message; @@ -138,6 +139,7 @@ public class MyConfig extends JFinalConfig { arp.addMapping(Opertion.dao.tableName(),Opertion.class); arp.addMapping(Session.dao.tableName(),Session.class); arp.addMapping(FeedBack.dao.tableName(),FeedBack.class); + arp.addMapping(FairExt.dao.tableName(),FairExt.class); EhCachePlugin cachePlugin = new EhCachePlugin(); me.add(cachePlugin); } @@ -159,7 +161,7 @@ public class MyConfig extends JFinalConfig { } public static void main(String[] args) { - JFinal.start("src/main/webapp", 8081, "/",5); + JFinal.start("src/main/webapp", 8081, "/"); } @Override diff --git a/src/main/java/com/tianpengtech/common/generator/app/Generator.java b/src/main/java/com/tianpengtech/common/generator/app/Generator.java index 6006cdf..ffe5d91 100644 --- a/src/main/java/com/tianpengtech/common/generator/app/Generator.java +++ b/src/main/java/com/tianpengtech/common/generator/app/Generator.java @@ -232,7 +232,7 @@ public class Generator { Engine engine = engineConfig(); // Generator.excute(engine,".user", "User", "fair_user", "用户表"); // Generator.excute(engine,".authenticate", "Authenticate", "fair_user_authenticate", "用户认证表"); - Generator.excute(engine,".fair", "FairMessage", "fair_wh_message", "网红消息表"); + Generator.excute(engine,".fair", "FairExt", "fair_wh_ext", "网红扩展属性表"); // Generator.excute(engine,".wh", "Fair", "fair_wh", "网红表"); // Generator.excute(engine,".feedback", "FeedBack", "fair_feedback", "反馈表"); diff --git a/src/main/java/com/tianpengtech/common/model/fair/Fair.java b/src/main/java/com/tianpengtech/common/model/fair/Fair.java index a0fb2f4..a79acc1 100644 --- a/src/main/java/com/tianpengtech/common/model/fair/Fair.java +++ b/src/main/java/com/tianpengtech/common/model/fair/Fair.java @@ -32,6 +32,7 @@ public class Fair extends AbstractBaseModel<Fair> { public static final String ID = "id"; // public static final String NICK_NAME = "nick_name"; // 昵称 public static final String AGE = "age"; // 年龄 + public static final String GENDER = "gender"; // 性别 public static final String HEIGHT = "height"; // 身高 public static final String PROVINCE = "province"; // 省 public static final String CITY = "city"; // 市 @@ -55,6 +56,10 @@ public class Fair extends AbstractBaseModel<Fair> { public static final int DELETE_STATUS_NO=0; + public static final int GENDER_WOMEN=0; + public static final int GENDER_MEN=1; + + //网红属性对照表相关属性 public static final String FAIR_ATTR_RLT_TABLENAME="fair_wh_attr_relation"; //对照表 表名 public static final String FAIR_ATTR_TABLENAME="fair_wh_attr"; //属性表表 表名 diff --git a/src/main/java/com/tianpengtech/common/model/fairext/FairExt.java b/src/main/java/com/tianpengtech/common/model/fairext/FairExt.java new file mode 100644 index 0000000..c663155 --- /dev/null +++ b/src/main/java/com/tianpengtech/common/model/fairext/FairExt.java @@ -0,0 +1,38 @@ +package com.tianpengtech.common.model.fairext; +import com.tianpengtech.common.model.AbstractBaseModel; +/** + *实体类名-网红扩展属性表 + * fair_wh_ext + * + * @since Mon Jul 24 21:48:27 CST 2017 + */ +public class FairExt extends AbstractBaseModel< FairExt > { + + /** + * + */ + private static final long serialVersionUID = 1L; + public static final FairExt dao = new FairExt(); + public static final String CACHE_NAME = "fair_ext_cache"; + + + public static final String ID ="id"; // + public static final String NAME ="name"; //名称 + public static final String TYPE ="type"; //类型(兴趣爱好,擅长领域) + public static final String ISSYSTEM ="isSystem"; //是否是系统类型 + + + public static final Integer TYPE_XQAH=1; //兴趣爱好 + public static final Integer TYPE_SCLY=2; //擅长领域 + public static final Integer TYPE_HONNER=3; //荣誉 + + public static final Integer ISSYSTEM_YES = 1; //是系统属性 + public static final Integer ISSYSTEM_NO = 0; //个人自定义属性 + + + @Override + public String tableName() { + return "fair_wh_ext"; + } + +} \ No newline at end of file diff --git a/src/main/java/com/tianpengtech/front/mobile/MobileRoutes.java b/src/main/java/com/tianpengtech/front/mobile/MobileRoutes.java index 6869067..92fdd36 100644 --- a/src/main/java/com/tianpengtech/front/mobile/MobileRoutes.java +++ b/src/main/java/com/tianpengtech/front/mobile/MobileRoutes.java @@ -5,6 +5,8 @@ import com.tianpengtech.front.mobile.common.intercepter.MobileRequestInterceptor import com.tianpengtech.front.mobile.common.intercepter.TokenCheckInterceptor; import com.tianpengtech.front.mobile.login.MobileLoginController; import com.tianpengtech.front.mobile.message.MobileMessageController; +import com.tianpengtech.front.mobile.passport.MobilePassportController; +import com.tianpengtech.front.mobile.region.MobileRegionController; /** * Created by ggd on 2017/7/15 0015. @@ -15,9 +17,11 @@ public class MobileRoutes extends Routes { @Override public void config() { // addInterceptor(new MobileRequestInterceptor()); //验证请求数据有效性 -// addInterceptor(new TokenCheckInterceptor()); //验证登录用户token是否有效 + addInterceptor(new TokenCheckInterceptor()); //验证登录用户token是否有效 add("/api",MobileLoginController.class); add("/api/msg",MobileMessageController.class); + add("/api/region", MobileRegionController.class); + add("/api/passport", MobilePassportController.class); } } diff --git a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java new file mode 100644 index 0000000..a92e991 --- /dev/null +++ b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java @@ -0,0 +1,62 @@ +package com.tianpengtech.front.mobile.passport; + +import com.jfinal.aop.Before; +import com.jfinal.plugin.activerecord.tx.Tx; +import com.tianpengtech.common.model.user.User; +import com.tianpengtech.front.mobile.common.util.R; +import com.tianpengtech.front.mobile.common.util.UserUtil; +import com.tianpengtech.front.web.common.controller.BaseController; + +import java.util.HashMap; +import java.util.Map; + +/** + * Created by ggd on 2017/7/25 0025. + */ +public class MobilePassportController extends BaseController{ + + private static MobilePassportService ps = MobilePassportService.me; + + /** + * 保存或更新个人信息 + */ + @Before({MobilePassportValidator.class,Tx.class}) + public void saveOrUpdate() throws Exception { + Map<String,String> param = new HashMap<>(); + param.put("honners",getPara("honners")); + param.put("xqah",getPara("xqah")); + param.put("scly",getPara("scly")); + param.put("photo",getPara("photo")); + param.put("nick_name",getPara("nick_name")); + param.put("gender",getPara("gender")); + param.put("age",getPara("age")); + param.put("province",getPara("province")); + param.put("city",getPara("city")); + param.put("id",getPara("id")); + User user= UserUtil.getCurrentUser(getPara("token"),getHeader("source")); + param.put("uid",user.get(User.ID)); + try { + R r=ps.saveOrUpdate(param); + renderJson(r); + }catch (Exception ex){ + renderJson(R.fail("失败")); + throw ex; + } + } + + /** + * 获取兴趣爱好列表 + */ + public void getXQAH(){ + R r=ps.getXQAH(); + renderJson(r); + } + + /** + * 获取擅长领域列表 + */ + public void getSCLY(){ + R r=ps.getSCLY(); + renderJson(r); + } +} diff --git a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java new file mode 100644 index 0000000..39cab5d --- /dev/null +++ b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java @@ -0,0 +1,195 @@ +package com.tianpengtech.front.mobile.passport; + + +import com.jfinal.kit.Ret; +import com.jfinal.kit.StrKit; +import com.jfinal.plugin.activerecord.Db; +import com.jfinal.plugin.activerecord.Record; +import com.tianpengtech.common.model.fair.Fair; +import com.tianpengtech.common.model.fairext.FairExt; +import com.tianpengtech.front.mobile.common.util.R; +import com.tianpengtech.front.mobile.common.util.U; + +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * Created by ggd on 2017/7/24 0024. + */ +public class MobilePassportService { + public static MobilePassportService me = new MobilePassportService(); + private static FairExt fairExtDao = FairExt.dao; + /** + * 保存网红信息 + * @param param + * @return + */ + public R saveOrUpdate(Map<String,String> param) throws Exception{ + try{ + //获取荣誉信息 + String honner= param.get("honners"); + //获取兴趣爱好 + String xqah= param.get("xqah"); + //获取擅长领域 + String scly= param.get("scly"); + + String photo = param.get("photo"); + String nickName = param.get("nick_name"); + String gender = param.get("gender"); + String age = param.get("age"); + String province = param.get("province"); + String city = param.get("city"); + Set<String> ext_set = new HashSet<>(); + //保存荣誉信息 + if (StrKit.notBlank(honner)){ + String[] honners=honner.split(","); + for (String h: honners) { + Ret ret = isExtExist(h,FairExt.TYPE_HONNER); + if (ret.isOk()){ + ext_set.add(ret.getInt(FairExt.ID)+""); + continue; + } + FairExt ext=new FairExt(); + ext.set(FairExt.ISSYSTEM,FairExt.ISSYSTEM_NO); + ext.set(FairExt.NAME,h); + ext.set(FairExt.TYPE,FairExt.TYPE_HONNER); + ext.save(); + ext_set.add(ext.getInt(FairExt.ID)+""); + } + } + //保存兴趣爱好 + if (StrKit.notBlank(xqah)){ + String[] xqahs=xqah.split(","); + for (String h: xqahs) { + if (U.isInteger(h)){ + ext_set.add(h); + continue; + } + Ret ret = isExtExist(h,FairExt.TYPE_XQAH); + if (ret.isOk()){ + ext_set.add(ret.getInt(FairExt.ID)+""); + continue; + } + FairExt ext=new FairExt(); + ext.set(FairExt.ISSYSTEM,FairExt.ISSYSTEM_NO); + ext.set(FairExt.NAME,h); + ext.set(FairExt.TYPE,FairExt.TYPE_XQAH); + ext.save(); + ext_set.add(ext.getInt(FairExt.ID)+""); + } + } + //保存擅长领域 + if (StrKit.notBlank(scly)){ + String[] sclys=scly.split(","); + for (String h: sclys) { + if (U.isInteger(h)){ + ext_set.add(h); + continue; + } + Ret ret = isExtExist(h,FairExt.TYPE_SCLY); + if (ret.isOk()){ + ext_set.add(ret.getInt(FairExt.ID)+""); + continue; + } + FairExt ext=new FairExt(); + ext.set(FairExt.ISSYSTEM,FairExt.ISSYSTEM_NO); + ext.set(FairExt.NAME,h); + ext.set(FairExt.TYPE,FairExt.TYPE_SCLY); + ext.save(); + ext_set.add(ext.getInt(FairExt.ID)+""); + } + } + + Fair fair = new Fair(); + if (StrKit.notBlank(photo)){ + fair.set(Fair.PHOTO,photo); + } + if (StrKit.notBlank(nickName)){ + fair.set(Fair.NICK_NAME,nickName); + } + if (StrKit.notBlank(gender)){ + fair.set(Fair.GENDER,gender); + } + if (StrKit.notBlank(age)){ + fair.set(Fair.AGE,age); + } + if (StrKit.notBlank(province)){ + fair.set(Fair.PROVINCE,province); + } + if (StrKit.notBlank(city)){ + fair.set(Fair.CITY,city); + } + + + + String id = param.get("id"); + if (StrKit.notBlank(id)){ + fair.set(Fair.ID,id); + fair.update(); + }else{ + fair.set(Fair.ID,param.get("uid")); + fair.save(); + id=fair.getLong(Fair.ID)+""; + } + if (ext_set.size()>0){ + Db.update("delete from fair_wh_ext_join where wh_id=? ",id); + } + //保存关联属性 + final String wh_id=id; + ext_set.forEach( ext ->{ + Record record = new Record(); + record.set("wh_id",wh_id); + record.set("ext_id",ext); + Db.save("fair_wh_ext_join",record); + }); + return R.ok("成功"); + }catch (Exception e){ + throw e; + } + + } + + /** + * 获取系统兴趣爱好 + * @return + */ + public R getXQAH(){ + String sql = String.format("select %s,%s from %s where %s=? and %s=?",FairExt.ID,FairExt.NAME,fairExtDao.tableName(),FairExt.ISSYSTEM,FairExt.TYPE); + List<FairExt> list=fairExtDao.findByCache(FairExt.CACHE_NAME,"static_xqah",sql,FairExt.ISSYSTEM_YES,FairExt.TYPE_XQAH); + R r = R.ok("成功"); + r.p("list",list); + return r; + } + + /** + * 获取系统擅长领域 + * @return + */ + public R getSCLY(){ + String sql = String.format("select %s,%s from %s where %s=? and %s=?",FairExt.ID,FairExt.NAME,fairExtDao.tableName(),FairExt.ISSYSTEM,FairExt.TYPE); + List<FairExt> list=fairExtDao.findByCache(FairExt.CACHE_NAME,"static_scly",sql,FairExt.ISSYSTEM_YES,FairExt.TYPE_SCLY); + R r = R.ok("成功"); + r.p("list",list); + return r; + } + + /** + * 判断自定义属性是否存在 + * @param name + * @param type + * @return + */ + private Ret isExtExist(String name, int type){ + String sql=String.format("select id from %s where %s=? and %s=? and %s=?",fairExtDao.tableName(),FairExt.TYPE,FairExt.ISSYSTEM,FairExt.NAME); + FairExt ext=fairExtDao.findFirstByCache(FairExt.CACHE_NAME,"static_"+type+"_"+name,sql,type,FairExt.ISSYSTEM_NO,name); + if (ext==null){ + return Ret.fail(); + }else{ + Ret r=Ret.ok(); + r.put("id",ext.getInt(FairExt.ID)); + return r; + } + } +} diff --git a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportValidator.java b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportValidator.java new file mode 100644 index 0000000..8506bd6 --- /dev/null +++ b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportValidator.java @@ -0,0 +1,76 @@ +/** + * 请勿将俱乐部专享资源复制给其他人,保护知识产权即是保护我们所在的行业,进而保护我们自己的利益 + * 即便是公司的同事,也请尊重 JFinal 作者的努力与付出,不要复制给同事 + * + * 如果你尚未加入俱乐部,请立即删除该项目,或者现在加入俱乐部:http://jfinal.com/club + * + * 俱乐部将提供 jfinal-club 项目文档与设计资源、专用 QQ 群,以及作者在俱乐部定期的分享与答疑, + * 价值远比仅仅拥有 jfinal club 项目源代码要大得多 + * + * JFinal 俱乐部是五年以来首次寻求外部资源的尝试,以便于有资源创建更加 + * 高品质的产品与服务,为大家带来更大的价值,所以请大家多多支持,不要将 + * 首次的尝试扼杀在了摇篮之中 + */ + +package com.tianpengtech.front.mobile.passport; + +import com.jfinal.core.Controller; +import com.jfinal.kit.StrKit; +import com.jfinal.validate.Validator; +import com.tianpengtech.common.model.fair.Fair; +import com.tianpengtech.common.model.user.User; +import com.tianpengtech.common.util.IpKit; +import com.tianpengtech.front.mobile.common.constant.Constant; +import com.tianpengtech.front.mobile.common.util.R; +import com.tianpengtech.front.web.passport.PassportService; + +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Map; + +/** + * 验证网红信息 + */ +public class MobilePassportValidator extends Validator { + + + + protected void validate(Controller c) { + + String nickName = c.getPara("nick_name"); + String gender = c.getPara("gender"); + String age = c.getPara("age"); + String province = c.getPara("province"); + String city = c.getPara("city"); + if (StrKit.notBlank(nickName)){ + validateString("nick_name",1,10,"nickNameError","昵称应在1-10位之间"); + } + if (StrKit.notBlank(gender)){ + validateInteger("gender",-1,2,"genderError","性别不正确"); + } + if (StrKit.notBlank(age)){ + validateInteger("age",0,100,"ageError","年龄不正确"); + } + if (StrKit.notBlank(province)){ + validateInteger("province",0,999999999,"provinceError","省份不正确"); + } + if (StrKit.notBlank(city)){ + validateInteger("province",0,999999999,"provinceError","市区不正确不正确"); + } + + } + + protected void handleError(Controller c) { + R r = R.fail("失败"); + Enumeration<String> s=c.getAttrNames(); + while (s.hasMoreElements()){ + String key=s.nextElement(); + r.p(key,c.getAttr(key)); + } + c.renderJson(r); + } + + + +} + diff --git a/src/main/java/com/tianpengtech/front/mobile/region/MobileRegionController.java b/src/main/java/com/tianpengtech/front/mobile/region/MobileRegionController.java new file mode 100644 index 0000000..576761e --- /dev/null +++ b/src/main/java/com/tianpengtech/front/mobile/region/MobileRegionController.java @@ -0,0 +1,32 @@ +package com.tianpengtech.front.mobile.region; + +import com.jfinal.kit.StrKit; +import com.tianpengtech.front.mobile.common.util.R; +import com.tianpengtech.front.web.common.controller.BaseController; + +/** + * Created by ggd on 2017/7/24 0024. + */ +public class MobileRegionController extends BaseController { + + private static RegionService service = RegionService.me; + /** + * 省列表 + */ + public void index(){ + renderJson(service.getProvince()); + } + + + /** + * 获取省下的市 + */ + public void getCity(){ + String id=getPara("id"); + if (StrKit.isBlank(id)){ + renderJson(R.fail("id不能为空")); + return; + } + renderJson(service.getCity(Long.parseLong(id))); + } +} diff --git a/src/main/java/com/tianpengtech/front/mobile/region/RegionService.java b/src/main/java/com/tianpengtech/front/mobile/region/RegionService.java new file mode 100644 index 0000000..43cc284 --- /dev/null +++ b/src/main/java/com/tianpengtech/front/mobile/region/RegionService.java @@ -0,0 +1,31 @@ +package com.tianpengtech.front.mobile.region; + +import com.jfinal.plugin.activerecord.Db; +import com.jfinal.plugin.activerecord.Record; +import com.tianpengtech.common.model.fair.Fair; +import com.tianpengtech.front.mobile.common.util.R; + +import java.util.List; + +/** + * Created by ggd on 2017/7/24 0024. + */ +public class RegionService { + public static RegionService me = new RegionService(); + + + public R getProvince(){ + List<Record> list=Db.findByCache(Fair.FAIR_CACHE_NAME,Fair.FAIR_CACHE_REGION,"select REGION_ID,REGION_NAME from region where PARENT_ID=1"); + R r = R.ok("成功"); + r.p("province",list); + return r; + } + + + public R getCity(long id){ + List<Record> list=Db.findByCache(Fair.FAIR_CACHE_NAME,Fair.FAIR_CACHE_REGION+id,"select REGION_ID,REGION_NAME from region where PARENT_ID=?",id); + R r = R.ok("成功"); + r.p("city",list); + return r; + } +} diff --git a/src/main/java/com/tianpengtech/front/web/fair/FairService.java b/src/main/java/com/tianpengtech/front/web/fair/FairService.java index 74f7da0..e954a02 100644 --- a/src/main/java/com/tianpengtech/front/web/fair/FairService.java +++ b/src/main/java/com/tianpengtech/front/web/fair/FairService.java @@ -9,6 +9,7 @@ import com.tianpengtech.common.model.task.Task; import com.tianpengtech.common.model.task.TaskWh; import com.tianpengtech.common.search.EqualCondition; import com.tianpengtech.common.search.LikeCondition; +import com.tianpengtech.common.search.NotEqualCondition; import com.tianpengtech.common.search.QueryConstructor; import java.util.ArrayList; diff --git a/src/main/java/com/tianpengtech/front/web/main/MainWebController.java b/src/main/java/com/tianpengtech/front/web/main/MainWebController.java index 09e00ef..10a4687 100644 --- a/src/main/java/com/tianpengtech/front/web/main/MainWebController.java +++ b/src/main/java/com/tianpengtech/front/web/main/MainWebController.java @@ -26,7 +26,9 @@ public class MainWebController extends BaseController { String sql="select * from fair_message order by id desc limit 1"; Record record = Db.findFirst(sql); - record.set("create_time", DateUtils.formateData(record.getDate("create_time"), DateUtils.YYMMDDHHMMSS_FORMAT)); + if (record!=null){ + record.set("create_time", DateUtils.formateData(record.getDate("create_time"), DateUtils.YYMMDDHHMMSS_FORMAT)); + } setAttr("record",record); renderTemplate(Page.MAIN); } diff --git a/src/main/java/com/tianpengtech/front/web/task/TaskService.java b/src/main/java/com/tianpengtech/front/web/task/TaskService.java index 4056b89..7cdcead 100644 --- a/src/main/java/com/tianpengtech/front/web/task/TaskService.java +++ b/src/main/java/com/tianpengtech/front/web/task/TaskService.java @@ -288,7 +288,7 @@ public class TaskService { List<Object> param=new ArrayList<>(); String s = "select *,task.status as status,task.id as id "; StringBuffer sql= new StringBuffer(" from " + taskDao.tableName() + " task left join " + TaskWh.dao.tableName() + " wh on task." + Task.ID + "=wh." + TaskWh.TASK_ID +" left join "+Fair.dao.tableName()+" fair on fair."+Fair.ID+"=wh."+TaskWh.WH_ID); - sql.append(" where task." + Task.DELETETAG+"=? and task."+Task.CREATE_USER+"=? " ); + sql.append(" where task." + Task.DELETETAG+"=? and task."+Task.CREATE_USER+"=? and task."+Task.STATUS+"!="+Task.STATUS_WAIT ); param.add(Task.DELETE_STATUS_NO); param.add(params.get("user")); if (params!=null) { diff --git a/src/main/resources/a_little_config.txt b/src/main/resources/a_little_config.txt index 591775f..356599d 100644 --- a/src/main/resources/a_little_config.txt +++ b/src/main/resources/a_little_config.txt @@ -1,13 +1,13 @@ -#jdbcUrl = jdbc:mysql://123.56.186.144:3306/bbt-test?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull -#user = bbt -#password =bbt123 -#devMode = true - -jdbcUrl = jdbc:mysql://rm-bp12tm7y208td7cm9o.mysql.rds.aliyuncs.com:3306/yancolad?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull -user = adtest -password =ad--Test +jdbcUrl = jdbc:mysql://123.56.186.144:3306/bbt-test?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull +user = bbt +password =bbt123 devMode = true +#jdbcUrl = jdbc:mysql://rm-bp12tm7y208td7cm9o.mysql.rds.aliyuncs.com:3306/yancolad?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull +#user = adtest +#password =ad--Test +#devMode = true + ##这个路径请定位到项目中的view文件夹所在的文件夹的路径(WEB-INF/view) codeBaseTemplatePath=E:/project/fair/src/main/webapp/WEB-INF/view diff --git a/src/main/resources/ehcache.xml b/src/main/resources/ehcache.xml index 169fbe4..188ce9a 100644 --- a/src/main/resources/ehcache.xml +++ b/src/main/resources/ehcache.xml @@ -234,4 +234,15 @@ overflowToDisk="true" diskPersistent="true" /> + + <!--存放网红扩展属性--> + <cache name="fair_ext_cache" + maxElementsInMemory="10000" + maxElementsOnDisk="100000" + eternal="false" + timeToIdleSeconds="86400" + timeToLiveSeconds="0" + overflowToDisk="true" + diskPersistent="true" + /> </ehcache> \ No newline at end of file -- Gitee From 1d4d118e1fcbe99e545c4fb08c3935ad8010f0b2 Mon Sep 17 00:00:00 2001 From: "994856170@qq.com" <ggd1994> Date: Wed, 26 Jul 2017 15:15:26 +0800 Subject: [PATCH 04/13] =?UTF-8?q?=E9=93=B6=E8=A1=8C=E5=8D=A1API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/tianpengtech/common/MyConfig.java | 2 + .../common/generator/app/Generator.java | 2 +- .../tianpengtech/common/model/fair/Fair.java | 10 +++ .../common/model/fairbankno/FairBankno.java | 33 ++++++++++ .../common/model/moneylog/MoneyLog.java | 5 ++ .../front/mobile/MobileRoutes.java | 2 + .../mobile/bankno/MobileBanknoController.java | 47 ++++++++++++++ .../mobile/bankno/MobileBanknoService.java | 58 +++++++++++++++++ .../mobile/bankno/MobileBanknoValidator.java | 65 +++++++++++++++++++ .../front/mobile/common/util/R.java | 6 ++ .../passport/MobilePassportController.java | 10 +++ .../passport/MobilePassportService.java | 33 ++++++++++ src/main/resources/ehcache.xml | 10 +++ 13 files changed, 282 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/tianpengtech/common/model/fairbankno/FairBankno.java create mode 100644 src/main/java/com/tianpengtech/front/mobile/bankno/MobileBanknoController.java create mode 100644 src/main/java/com/tianpengtech/front/mobile/bankno/MobileBanknoService.java create mode 100644 src/main/java/com/tianpengtech/front/mobile/bankno/MobileBanknoValidator.java diff --git a/src/main/java/com/tianpengtech/common/MyConfig.java b/src/main/java/com/tianpengtech/common/MyConfig.java index 1da8050..23240c2 100644 --- a/src/main/java/com/tianpengtech/common/MyConfig.java +++ b/src/main/java/com/tianpengtech/common/MyConfig.java @@ -18,6 +18,7 @@ import com.tianpengtech.common.model.account.Account; import com.tianpengtech.common.model.authenticate.Authenticate; import com.tianpengtech.common.model.dictionary.Dictionary; import com.tianpengtech.common.model.fair.Fair; +import com.tianpengtech.common.model.fairbankno.FairBankno; import com.tianpengtech.common.model.fairext.FairExt; import com.tianpengtech.common.model.fairmessage.FairMessage; import com.tianpengtech.common.model.feedback.FeedBack; @@ -140,6 +141,7 @@ public class MyConfig extends JFinalConfig { arp.addMapping(Session.dao.tableName(),Session.class); arp.addMapping(FeedBack.dao.tableName(),FeedBack.class); arp.addMapping(FairExt.dao.tableName(),FairExt.class); + arp.addMapping(FairBankno.dao.tableName(),FairBankno.class); EhCachePlugin cachePlugin = new EhCachePlugin(); me.add(cachePlugin); } diff --git a/src/main/java/com/tianpengtech/common/generator/app/Generator.java b/src/main/java/com/tianpengtech/common/generator/app/Generator.java index ffe5d91..9aca556 100644 --- a/src/main/java/com/tianpengtech/common/generator/app/Generator.java +++ b/src/main/java/com/tianpengtech/common/generator/app/Generator.java @@ -232,7 +232,7 @@ public class Generator { Engine engine = engineConfig(); // Generator.excute(engine,".user", "User", "fair_user", "用户表"); // Generator.excute(engine,".authenticate", "Authenticate", "fair_user_authenticate", "用户认证表"); - Generator.excute(engine,".fair", "FairExt", "fair_wh_ext", "网红扩展属性表"); + Generator.excute(engine,".fair", "FairBankno", "fair_wh_bankno", "网红银行卡表"); // Generator.excute(engine,".wh", "Fair", "fair_wh", "网红表"); // Generator.excute(engine,".feedback", "FeedBack", "fair_feedback", "反馈表"); diff --git a/src/main/java/com/tianpengtech/common/model/fair/Fair.java b/src/main/java/com/tianpengtech/common/model/fair/Fair.java index a79acc1..ebbf0f9 100644 --- a/src/main/java/com/tianpengtech/common/model/fair/Fair.java +++ b/src/main/java/com/tianpengtech/common/model/fair/Fair.java @@ -3,6 +3,7 @@ package com.tianpengtech.common.model.fair; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Record; import com.tianpengtech.common.model.AbstractBaseModel; +import com.tianpengtech.common.model.fairext.FairExt; import com.tianpengtech.common.model.task.Task; import com.tianpengtech.common.model.task.TaskWh; @@ -203,6 +204,15 @@ public class Fair extends AbstractBaseModel<Fair> { } } + /** + * 获取荣耀信息 + * @return + */ + public List<FairExt> getExt(Integer type){ + String sql=String.format("select ext.id,ext.name from %s ext INNER JOIN fair_wh_ext_join jo on ext.id=jo.ext_id where jo.wh_id=? and %s=?",FairExt.dao.tableName(),FairExt.TYPE); + return FairExt.dao.findByCache(FairExt.CACHE_NAME,"static_"+type+"_"+get(ID),sql,get(ID),type); + } + /** * 获取最近的两条任务信息 * @return diff --git a/src/main/java/com/tianpengtech/common/model/fairbankno/FairBankno.java b/src/main/java/com/tianpengtech/common/model/fairbankno/FairBankno.java new file mode 100644 index 0000000..c91da48 --- /dev/null +++ b/src/main/java/com/tianpengtech/common/model/fairbankno/FairBankno.java @@ -0,0 +1,33 @@ +package com.tianpengtech.common.model.fairbankno; +import com.tianpengtech.common.model.AbstractBaseModel; +/** + *实体类名-网红银行卡表 + * fair_wh_bankno + * + * @since Wed Jul 26 14:33:52 CST 2017 + */ +public class FairBankno extends AbstractBaseModel< FairBankno > { + + /** + * + */ + private static final long serialVersionUID = 1L; + public static final FairBankno dao = new FairBankno(); + public static final String CACHE_NAME = "fair_bankno_cache"; + + + public static final String ID ="id"; // + public static final String WH_ID ="wh_id"; //网红ID + public static final String BANK ="bank"; //银行名称 + public static final String BANK_NO ="bank_no"; //银行卡号 + public static final String DELETETAG ="deletetag"; //删除标识 + public static final String CREATE_TIME ="create_time"; //创建时间 + public static final String REAL_NAME ="real_name"; //真实姓名 + + + @Override + public String tableName() { + return "fair_wh_bankno"; + } + +} \ No newline at end of file diff --git a/src/main/java/com/tianpengtech/common/model/moneylog/MoneyLog.java b/src/main/java/com/tianpengtech/common/model/moneylog/MoneyLog.java index 087f27e..efa16d8 100644 --- a/src/main/java/com/tianpengtech/common/model/moneylog/MoneyLog.java +++ b/src/main/java/com/tianpengtech/common/model/moneylog/MoneyLog.java @@ -22,8 +22,13 @@ public class MoneyLog extends AbstractBaseModel< MoneyLog > { public static final String DELETETAG ="deletetag"; //删除标识 public static final String DESCRIPTION ="description"; //描述 public static final String TYPE ="type"; //类型 + public static final String OPERID ="operid"; //关联ID + public static final Integer TYPE_TIXIAN =1; //提现 operid=提现表ID + public static final Integer TYPE_YAOQING =2; //邀请 operid=被邀请用户ID + public static final Integer TYPE_RENWU =3; //任务 operid=任务ID + @Override public String tableName() { return "fair_wh_moneylog"; diff --git a/src/main/java/com/tianpengtech/front/mobile/MobileRoutes.java b/src/main/java/com/tianpengtech/front/mobile/MobileRoutes.java index 92fdd36..a581bdd 100644 --- a/src/main/java/com/tianpengtech/front/mobile/MobileRoutes.java +++ b/src/main/java/com/tianpengtech/front/mobile/MobileRoutes.java @@ -1,6 +1,7 @@ package com.tianpengtech.front.mobile; import com.jfinal.config.Routes; +import com.tianpengtech.front.mobile.bankno.MobileBanknoController; import com.tianpengtech.front.mobile.common.intercepter.MobileRequestInterceptor; import com.tianpengtech.front.mobile.common.intercepter.TokenCheckInterceptor; import com.tianpengtech.front.mobile.login.MobileLoginController; @@ -23,5 +24,6 @@ public class MobileRoutes extends Routes { add("/api/msg",MobileMessageController.class); add("/api/region", MobileRegionController.class); add("/api/passport", MobilePassportController.class); + add("/api/bankno", MobileBanknoController.class); } } diff --git a/src/main/java/com/tianpengtech/front/mobile/bankno/MobileBanknoController.java b/src/main/java/com/tianpengtech/front/mobile/bankno/MobileBanknoController.java new file mode 100644 index 0000000..68bdba3 --- /dev/null +++ b/src/main/java/com/tianpengtech/front/mobile/bankno/MobileBanknoController.java @@ -0,0 +1,47 @@ +package com.tianpengtech.front.mobile.bankno; + +import com.jfinal.aop.Before; +import com.jfinal.plugin.activerecord.tx.Tx; +import com.tianpengtech.common.model.user.User; +import com.tianpengtech.front.mobile.common.util.R; +import com.tianpengtech.front.mobile.common.util.UserUtil; +import com.tianpengtech.front.web.common.controller.BaseController; + +import java.util.HashMap; +import java.util.Map; + +/** + * Created by ggd on 2017/7/26 0026. + */ +public class MobileBanknoController extends BaseController { + private static MobileBanknoService service = MobileBanknoService.me; + + /** + * 保存银行卡信息 + */ + @Before({MobileBanknoValidator.class,Tx.class}) + public void save(){ + Map<String,String> param = new HashMap<>(); + param.put("bank",getPara("bank")); + param.put("bank_no",getPara("bank_no")); + param.put("real_name",getPara("real_name")); + User user= UserUtil.getCurrentUser(getPara("token"),getHeader("source")); + param.put("id",user.getLong(User.ID)+""); + try { + R r=service.save(param); + renderJson(r); + } catch (Exception e) { + renderJson(R.fail("保存失败")); + } + } + + /** + * 获取某个人的银行卡列表 + */ + public void banknoList(){ + User user= UserUtil.getCurrentUser(getPara("token"),getHeader("source")); + R r=service.findBankno(user.getLong(User.ID)); + renderJson(r); + } + +} diff --git a/src/main/java/com/tianpengtech/front/mobile/bankno/MobileBanknoService.java b/src/main/java/com/tianpengtech/front/mobile/bankno/MobileBanknoService.java new file mode 100644 index 0000000..6a96ea4 --- /dev/null +++ b/src/main/java/com/tianpengtech/front/mobile/bankno/MobileBanknoService.java @@ -0,0 +1,58 @@ +package com.tianpengtech.front.mobile.bankno; + +import com.jfinal.plugin.activerecord.Page; +import com.jfinal.plugin.ehcache.CacheKit; +import com.tianpengtech.common.model.fairbankno.FairBankno; +import com.tianpengtech.front.mobile.common.util.R; + +import java.util.List; +import java.util.Map; + +/** + * Created by ggd on 2017/7/26 0026. + */ +public class MobileBanknoService { + public static MobileBanknoService me = new MobileBanknoService(); + private static FairBankno dao = FairBankno.dao; + + /** + * 保存银行卡信息 + * @param param + * @return + */ + public R save(Map<String,String> param) throws Exception{ + try{ + String wh_id=param.get("id"); + String bank=param.get("bank"); + String bank_no=param.get("bank_no"); + String real_name=param.get("real_name"); + FairBankno fb = new FairBankno(); + fb.set(FairBankno.WH_ID,wh_id); + fb.set(FairBankno.BANK,bank); + fb.set(FairBankno.BANK_NO,bank_no); + fb.set(FairBankno.REAL_NAME,real_name); + fb.save(); + R r=R.ok("成功"); + r.p("bankno",fb); + CacheKit.remove(FairBankno.CACHE_NAME,"bankno_"+wh_id); + return r; + }catch (Exception e){ + e.printStackTrace(); + throw e; + } + } + + /** + * 获取某个人得银行卡列表 + * @param id + * @return + */ + public R findBankno(long id){ + String sql = String.format("select %s,%s,%s from %s where %s=? and %s=?",FairBankno.ID,FairBankno.BANK,FairBankno.BANK_NO,dao.tableName(),FairBankno.DELETETAG,FairBankno.WH_ID); + List<FairBankno> list=dao.findByCache(FairBankno.CACHE_NAME,"bankno_"+id,sql,0,id); + R r = R.ok(); + r.p("banknos",list); + return r; + } + +} diff --git a/src/main/java/com/tianpengtech/front/mobile/bankno/MobileBanknoValidator.java b/src/main/java/com/tianpengtech/front/mobile/bankno/MobileBanknoValidator.java new file mode 100644 index 0000000..331b149 --- /dev/null +++ b/src/main/java/com/tianpengtech/front/mobile/bankno/MobileBanknoValidator.java @@ -0,0 +1,65 @@ +/** + * 请勿将俱乐部专享资源复制给其他人,保护知识产权即是保护我们所在的行业,进而保护我们自己的利益 + * 即便是公司的同事,也请尊重 JFinal 作者的努力与付出,不要复制给同事 + * + * 如果你尚未加入俱乐部,请立即删除该项目,或者现在加入俱乐部:http://jfinal.com/club + * + * 俱乐部将提供 jfinal-club 项目文档与设计资源、专用 QQ 群,以及作者在俱乐部定期的分享与答疑, + * 价值远比仅仅拥有 jfinal club 项目源代码要大得多 + * + * JFinal 俱乐部是五年以来首次寻求外部资源的尝试,以便于有资源创建更加 + * 高品质的产品与服务,为大家带来更大的价值,所以请大家多多支持,不要将 + * 首次的尝试扼杀在了摇篮之中 + */ + +package com.tianpengtech.front.mobile.bankno; + +import com.jfinal.core.Controller; +import com.jfinal.kit.StrKit; +import com.jfinal.validate.Validator; +import com.tianpengtech.front.mobile.common.util.R; +import com.tianpengtech.front.mobile.common.util.U; + +import java.util.Enumeration; + +/** + * 验证网红信息 + */ +public class MobileBanknoValidator extends Validator { + + + + protected void validate(Controller c) { + + String bank = c.getPara("bank"); + String bank_no = c.getPara("bank_no"); + String real_name = c.getPara("real_name"); + if (StrKit.notBlank(bank)){ + validateString("bank",1,10,"bankError","银行名称不正确"); + } + if (StrKit.notBlank(bank_no)){ + validateString("bank_no",10,30,"banknoError","银行卡号不正确"); + if (!U.isInteger(bank_no)){ + this.addError("banknoError","银行卡号格式不正确"); + } + } + if (StrKit.notBlank(real_name)){ + validateString("real_name",1,10,"realnamerror","真实姓名不正确"); + } + + } + + protected void handleError(Controller c) { + R r = R.fail("失败"); + Enumeration<String> s=c.getAttrNames(); + while (s.hasMoreElements()){ + String key=s.nextElement(); + r.p(key,c.getAttr(key)); + } + c.renderJson(r); + } + + + +} + diff --git a/src/main/java/com/tianpengtech/front/mobile/common/util/R.java b/src/main/java/com/tianpengtech/front/mobile/common/util/R.java index fae2766..712f47f 100644 --- a/src/main/java/com/tianpengtech/front/mobile/common/util/R.java +++ b/src/main/java/com/tianpengtech/front/mobile/common/util/R.java @@ -23,6 +23,12 @@ public class R extends HashMap { r.put(MSG,msg); return r; } + public static R ok() { + R r = new R(); + r.put(CODE,SUCCESS); + r.put(MSG,"成功"); + return r; + } public static R fail(String msg) { R r = new R(); diff --git a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java index a92e991..bfc15c5 100644 --- a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java +++ b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java @@ -59,4 +59,14 @@ public class MobilePassportController extends BaseController{ R r=ps.getSCLY(); renderJson(r); } + + public void getFairInfo(){ + User user= UserUtil.getCurrentUser(getPara("token"),getHeader("source")); + if (user==null){ + renderJson(R.fail("用户不存在")); + return; + } + R r=ps.getFairInfo(user.getLong(User.ID)+""); + renderJson(r); + } } diff --git a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java index 39cab5d..fe2d86c 100644 --- a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java +++ b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java @@ -5,10 +5,12 @@ import com.jfinal.kit.Ret; import com.jfinal.kit.StrKit; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Record; +import com.jfinal.plugin.ehcache.CacheKit; import com.tianpengtech.common.model.fair.Fair; import com.tianpengtech.common.model.fairext.FairExt; import com.tianpengtech.front.mobile.common.util.R; import com.tianpengtech.front.mobile.common.util.U; +import com.tianpengtech.front.web.fair.FairService; import java.util.HashSet; import java.util.List; @@ -21,6 +23,7 @@ import java.util.Set; public class MobilePassportService { public static MobilePassportService me = new MobilePassportService(); private static FairExt fairExtDao = FairExt.dao; + private static FairService fairService = new FairService(); /** * 保存网红信息 * @param param @@ -46,6 +49,7 @@ public class MobilePassportService { if (StrKit.notBlank(honner)){ String[] honners=honner.split(","); for (String h: honners) { + h=h.trim(); Ret ret = isExtExist(h,FairExt.TYPE_HONNER); if (ret.isOk()){ ext_set.add(ret.getInt(FairExt.ID)+""); @@ -63,6 +67,7 @@ public class MobilePassportService { if (StrKit.notBlank(xqah)){ String[] xqahs=xqah.split(","); for (String h: xqahs) { + h=h.trim(); if (U.isInteger(h)){ ext_set.add(h); continue; @@ -84,6 +89,7 @@ public class MobilePassportService { if (StrKit.notBlank(scly)){ String[] sclys=scly.split(","); for (String h: sclys) { + h=h.trim(); if (U.isInteger(h)){ ext_set.add(h); continue; @@ -144,13 +150,40 @@ public class MobilePassportService { record.set("ext_id",ext); Db.save("fair_wh_ext_join",record); }); + CacheKit.remove(FairExt.CACHE_NAME,"static_"+FairExt.TYPE_HONNER+"_"+wh_id); + CacheKit.remove(FairExt.CACHE_NAME,"static_"+FairExt.TYPE_XQAH+"_"+wh_id); + CacheKit.remove(FairExt.CACHE_NAME,"static_"+FairExt.TYPE_SCLY+"_"+wh_id); return R.ok("成功"); }catch (Exception e){ + e.printStackTrace(); throw e; } } + /** + * 获取详情 + * @param fairId + * @return + */ + public R getFairInfo(String fairId){ + Fair fair = fairService.findById(Integer.parseInt(fairId)); + if (fair==null){ + R r=R.ok("用户不存在"); + r.p("fair",""); + return r; + } + fair.remove(Fair.DELETETAG); + fair.remove(Fair.ID_CARD); + fair.put("xqah",fair.getExt(FairExt.TYPE_XQAH)); + fair.put("scly",fair.getExt(FairExt.TYPE_SCLY)); + fair.put("honner",fair.getExt(FairExt.TYPE_HONNER)); + R r = R.ok("成功"); + r.p("fair",fair); + return r; + } + + /** * 获取系统兴趣爱好 * @return diff --git a/src/main/resources/ehcache.xml b/src/main/resources/ehcache.xml index 188ce9a..b1ea61e 100644 --- a/src/main/resources/ehcache.xml +++ b/src/main/resources/ehcache.xml @@ -234,6 +234,16 @@ overflowToDisk="true" diskPersistent="true" /> + <!--银行卡信息--> + <cache name="fair_bankno_cache" + maxElementsInMemory="10000" + maxElementsOnDisk="100000" + eternal="false" + timeToIdleSeconds="3600" + timeToLiveSeconds="0" + overflowToDisk="true" + diskPersistent="true" + /> <!--存放网红扩展属性--> <cache name="fair_ext_cache" -- Gitee From f23df6fb3f004cafdea9fb72a550c50d715a8a9e Mon Sep 17 00:00:00 2001 From: "994856170@qq.com" <ggd1994> Date: Thu, 27 Jul 2017 11:17:53 +0800 Subject: [PATCH 05/13] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E4=BA=A4=E6=98=93?= =?UTF-8?q?=E5=AF=86=E7=A0=81API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tianpengtech/common/model/fair/Fair.java | 9 +++ .../mobile/login/MobileLoginService.java | 58 ++++++++++-------- .../front/mobile/message/MessageService.java | 19 ++++-- .../passport/MobilePassportController.java | 36 +++++++++++ .../passport/MobilePassportService.java | 61 +++++++++++++++++++ .../front/web/passport/PassportService.java | 6 +- 6 files changed, 155 insertions(+), 34 deletions(-) diff --git a/src/main/java/com/tianpengtech/common/model/fair/Fair.java b/src/main/java/com/tianpengtech/common/model/fair/Fair.java index ebbf0f9..2ff5cd0 100644 --- a/src/main/java/com/tianpengtech/common/model/fair/Fair.java +++ b/src/main/java/com/tianpengtech/common/model/fair/Fair.java @@ -47,6 +47,8 @@ public class Fair extends AbstractBaseModel<Fair> { public static final String MOIBILE="mobile"; //手机号码 public static final String PASS_WORD="password"; //密码 public static final String ID_CARD="id_card"; //身份证 + public static final String REMIND_MSG="remind_msg"; //是否消息提醒 + public static final String TRAN_PWD="tran_pwd"; //交易密码 public static final int STATUS_APPROVING=1; @@ -61,6 +63,13 @@ public class Fair extends AbstractBaseModel<Fair> { public static final int GENDER_MEN=1; + public static final int REMIND_MSG_ON=1; //消息提醒 + public static final int REMIND_MSG_OFF=0; //消息不提醒 + + + + + //网红属性对照表相关属性 public static final String FAIR_ATTR_RLT_TABLENAME="fair_wh_attr_relation"; //对照表 表名 public static final String FAIR_ATTR_TABLENAME="fair_wh_attr"; //属性表表 表名 diff --git a/src/main/java/com/tianpengtech/front/mobile/login/MobileLoginService.java b/src/main/java/com/tianpengtech/front/mobile/login/MobileLoginService.java index 6b85e7d..e76dd71 100644 --- a/src/main/java/com/tianpengtech/front/mobile/login/MobileLoginService.java +++ b/src/main/java/com/tianpengtech/front/mobile/login/MobileLoginService.java @@ -35,34 +35,40 @@ public class MobileLoginService { * 登录 */ public R login(String mobile, int code, String loginIp,String source) { - if(!passportService.authCode(mobile,loginIp,code,true)){ - return R.fail("验证码不正确"); - } - User user = loginService.findByMobile(mobile,User.USER_TYPE_FAIR); - if (user == null) { - Ret r=passportService.reg(mobile, Constant.DEFAULT_PASSWORD,User.USER_TYPE_FAIR); - if (r.isOk()){ - long id= (long) r.get("id"); - Fair fair = new Fair(); - fair.set(Fair.ID,id); - fair.save(); - user=loginService.findByMobile(mobile,User.USER_TYPE_FAIR); - }else{ - return R.fail("注册失败"); + try{ + if(!passportService.authCode(mobile,loginIp,code,true)){ + return R.fail("验证码不正确"); } + User user = loginService.findByMobile(mobile,User.USER_TYPE_FAIR); + if (user == null) { + Ret r=passportService.reg(mobile, Constant.DEFAULT_PASSWORD,User.USER_TYPE_FAIR); + if (r.isOk()){ + long id= (long) r.get("id"); + Fair fair = new Fair(); + fair.set(Fair.ID,id); + fair.save(); + user=loginService.findByMobile(mobile,User.USER_TYPE_FAIR); + }else{ + return R.fail("注册失败"); + } + } + if (user.isStatusLockId()) { + return R.fail("账号已被锁定"); + } + user.removeSensitiveInfo(); // 移除 password 与 salt 属性值 + String token = TokenUtil.getToken(); + UserUtil.setCurrentUser(user,token,source); + loginService.createLoginLog(user.getLong(User.ID), loginIp,"mobile"); + user.remove(User.DELETETAG).remove(User.USER_TYPE).remove(User.STATUS).remove(User.CREATE_TIME); + R r=R.ok("登陆成功"); + r.p("user",user); + r.p("token",token); + return r; + }catch (Exception e){ + e.printStackTrace(); + return R.fail("登陆失败"); } - if (user.isStatusLockId()) { - return R.fail("账号已被锁定"); - } - user.removeSensitiveInfo(); // 移除 password 与 salt 属性值 - String token = TokenUtil.getToken(); - UserUtil.setCurrentUser(user,token,source); - loginService.createLoginLog(user.getLong(User.ID), loginIp,"mobile"); - user.remove(User.DELETETAG).remove(User.USER_TYPE).remove(User.STATUS).remove(User.CREATE_TIME); - R r=R.ok("登陆成功"); - r.p("user",user); - r.p("token",token); - return r; + } /** diff --git a/src/main/java/com/tianpengtech/front/mobile/message/MessageService.java b/src/main/java/com/tianpengtech/front/mobile/message/MessageService.java index 7bd06c4..970b2d5 100644 --- a/src/main/java/com/tianpengtech/front/mobile/message/MessageService.java +++ b/src/main/java/com/tianpengtech/front/mobile/message/MessageService.java @@ -14,7 +14,7 @@ import java.util.List; public class MessageService { public static MessageService me = new MessageService(); private static FairMessage fairMessage = new FairMessage(); - + private static FairService fs = new FairService(); /** * 发送消息 * @param uid @@ -89,13 +89,22 @@ public class MessageService { * @return */ public R isUnreadMsg(long uid){ - String sql = String.format("select * from %s where %s = ? and %s = ? and %s = ?",fairMessage.tableName(),FairMessage.DELETETAG,FairMessage.ISREAD,FairMessage.WH_ID); - FairMessage fm=fairMessage.findFirst(sql,1,FairMessage.ISREAD_UNREAD,uid); R r = R.ok("成功"); - if (fm==null){ + Fair fair=fs.findById(Integer.parseInt(uid+"")); + int remind=1; + if (fair!=null){ + remind=fair.getInt(Fair.REMIND_MSG); + } + if (remind==Fair.REMIND_MSG_OFF){ r.p("isread","false"); }else{ - r.p("isread","true"); + String sql = String.format("select * from %s where %s = ? and %s = ? and %s = ?",fairMessage.tableName(),FairMessage.DELETETAG,FairMessage.ISREAD,FairMessage.WH_ID); + FairMessage fm=fairMessage.findFirst(sql,1,FairMessage.ISREAD_UNREAD,uid); + if (fm==null){ + r.p("isread","false"); + }else{ + r.p("isread","true"); + } } return r; } diff --git a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java index bfc15c5..684a486 100644 --- a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java +++ b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java @@ -1,6 +1,7 @@ package com.tianpengtech.front.mobile.passport; import com.jfinal.aop.Before; +import com.jfinal.kit.StrKit; import com.jfinal.plugin.activerecord.tx.Tx; import com.tianpengtech.common.model.user.User; import com.tianpengtech.front.mobile.common.util.R; @@ -60,6 +61,9 @@ public class MobilePassportController extends BaseController{ renderJson(r); } + /** + * 获取网红详情 + */ public void getFairInfo(){ User user= UserUtil.getCurrentUser(getPara("token"),getHeader("source")); if (user==null){ @@ -69,4 +73,36 @@ public class MobilePassportController extends BaseController{ R r=ps.getFairInfo(user.getLong(User.ID)+""); renderJson(r); } + + /** + * 设置或修改交易密码 + */ + public void setTranPwd(){ + User user= UserUtil.getCurrentUser(getPara("token"),getHeader("source")); + String old_pwd=getPara("old_pwd"); + String new_pwd=getPara("new_pwd"); + if (StrKit.isBlank(old_pwd) && StrKit.isBlank(new_pwd)){ + renderJson(R.fail("密码不能为空")); + return; + } + long id = user.getLong(User.ID); + R r=ps.setTranPwd(id,old_pwd,new_pwd); + renderJson(r); + } + + /** + * 验证旧交易密码 + */ + public void checkTranPwd(){ + User user= UserUtil.getCurrentUser(getPara("token"),getHeader("source")); + String old_pwd=getPara("old_pwd"); + if (StrKit.isBlank(old_pwd)){ + renderJson(R.fail("密码不能为空")); + return; + } + long id = user.getLong(User.ID); + R r=ps.checkTranPwd(id,old_pwd); + renderJson(r); + } + } diff --git a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java index fe2d86c..82ea916 100644 --- a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java +++ b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java @@ -1,6 +1,7 @@ package com.tianpengtech.front.mobile.passport; +import com.jfinal.kit.HashKit; import com.jfinal.kit.Ret; import com.jfinal.kit.StrKit; import com.jfinal.plugin.activerecord.Db; @@ -8,6 +9,7 @@ import com.jfinal.plugin.activerecord.Record; import com.jfinal.plugin.ehcache.CacheKit; import com.tianpengtech.common.model.fair.Fair; import com.tianpengtech.common.model.fairext.FairExt; +import com.tianpengtech.common.model.user.User; import com.tianpengtech.front.mobile.common.util.R; import com.tianpengtech.front.mobile.common.util.U; import com.tianpengtech.front.web.fair.FairService; @@ -24,6 +26,7 @@ public class MobilePassportService { public static MobilePassportService me = new MobilePassportService(); private static FairExt fairExtDao = FairExt.dao; private static FairService fairService = new FairService(); + private static FairService fs = new FairService(); /** * 保存网红信息 * @param param @@ -175,6 +178,9 @@ public class MobilePassportService { } fair.remove(Fair.DELETETAG); fair.remove(Fair.ID_CARD); + String tran=fair.get(Fair.TRAN_PWD); + fair.remove(Fair.TRAN_PWD); + fair.put(Fair.TRAN_PWD,tran==null?"0":"1"); //交易密码 0 未设置 1已设置 fair.put("xqah",fair.getExt(FairExt.TYPE_XQAH)); fair.put("scly",fair.getExt(FairExt.TYPE_SCLY)); fair.put("honner",fair.getExt(FairExt.TYPE_HONNER)); @@ -225,4 +231,59 @@ public class MobilePassportService { return r; } } + + /** + * 设置交易密码 + * @return + */ + public R setTranPwd(long uid,String old_pwd,String new_pwd){ + Fair fair=fs.findById(Integer.parseInt(uid+"")); + User user = User.dao.findById(uid); + //如果旧密码为空则是设置交易密码 + String tranPwd=fair.get(Fair.TRAN_PWD); + if (StrKit.isBlank(tranPwd)){ + String salt = user.get(User.SALT); + String hashedPass = HashKit.sha256(salt + new_pwd); + fair.set(Fair.TRAN_PWD,hashedPass); + fair.update(); + CacheKit.remove(Fair.FAIR_CACHE_NAME,"fair_info_"+uid); + return R.ok(); + }else{ + if (StrKit.isBlank(old_pwd)){ + return R.fail("旧密码不能为空"); + }else{ + String salt = user.get(User.SALT); + String hashedPass = HashKit.sha256(salt + old_pwd); + if (tranPwd.toUpperCase().equals(hashedPass.toUpperCase())){ + String hashedPass_new = HashKit.sha256(salt + new_pwd); + fair.set(Fair.TRAN_PWD,hashedPass_new); + fair.update(); + CacheKit.remove(Fair.FAIR_CACHE_NAME,"fair_info_"+uid); + return R.ok(); + }else{ + return R.fail("旧密码不正确"); + } + } + } + } + + /** + * 验证旧交易密码是否正确 + * @param uid + * @param old_pwd + * @return + */ + public R checkTranPwd(long uid,String old_pwd){ + Fair fair=fs.findById(Integer.parseInt(uid+"")); + User user = User.dao.findById(uid); + String tranPwd=fair.get(Fair.TRAN_PWD); + String salt = user.get(User.SALT); + String hashedPass = HashKit.sha256(salt + old_pwd); + if (tranPwd.toUpperCase().equals(hashedPass.toUpperCase())){ + return R.ok("密码正确"); + }else{ + return R.fail("密码错误"); + } + } + } diff --git a/src/main/java/com/tianpengtech/front/web/passport/PassportService.java b/src/main/java/com/tianpengtech/front/web/passport/PassportService.java index 503d3b6..432a91e 100644 --- a/src/main/java/com/tianpengtech/front/web/passport/PassportService.java +++ b/src/main/java/com/tianpengtech/front/web/passport/PassportService.java @@ -56,12 +56,12 @@ public class PassportService { // 创建账户 User user = new User(); user.set(User.MOBILE,mobile); + // 密码加盐 hash + String salt = HashKit.generateSaltForSha256(); + user.set(User.SALT,salt); if (user_type==User.USER_TYPE_PROV){ - // 密码加盐 hash - String salt = HashKit.generateSaltForSha256(); password = HashKit.sha256(salt + password); user.set(User.PASSWORD,password); - user.set(User.SALT,salt); } user.set(User.STATUS, User.USER_STATUS_NORMAL); user.set(User.PHOTO,User.DEFAULT_PHOTO); -- Gitee From be948385690c5e5642ce3f69911e54b356abb3e9 Mon Sep 17 00:00:00 2001 From: "994856170@qq.com" <ggd1994> Date: Thu, 27 Jul 2017 16:50:35 +0800 Subject: [PATCH 06/13] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=AE=A4=E8=AF=81?= =?UTF-8?q?=E4=BF=A1=E6=81=AFAPI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/tianpengtech/common/MyConfig.java | 2 + .../common/generator/app/Generator.java | 2 +- .../common/model/fairauth/FairAuth.java | 43 ++++++++++++ .../passport/MobileFairAuthValidator.java | 68 +++++++++++++++++++ .../passport/MobilePassportController.java | 26 +++++++ .../passport/MobilePassportService.java | 42 ++++++++++++ .../passport/MobilePassportValidator.java | 2 +- 7 files changed, 183 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/tianpengtech/common/model/fairauth/FairAuth.java create mode 100644 src/main/java/com/tianpengtech/front/mobile/passport/MobileFairAuthValidator.java diff --git a/src/main/java/com/tianpengtech/common/MyConfig.java b/src/main/java/com/tianpengtech/common/MyConfig.java index 23240c2..8116981 100644 --- a/src/main/java/com/tianpengtech/common/MyConfig.java +++ b/src/main/java/com/tianpengtech/common/MyConfig.java @@ -18,6 +18,7 @@ import com.tianpengtech.common.model.account.Account; import com.tianpengtech.common.model.authenticate.Authenticate; import com.tianpengtech.common.model.dictionary.Dictionary; import com.tianpengtech.common.model.fair.Fair; +import com.tianpengtech.common.model.fairauth.FairAuth; import com.tianpengtech.common.model.fairbankno.FairBankno; import com.tianpengtech.common.model.fairext.FairExt; import com.tianpengtech.common.model.fairmessage.FairMessage; @@ -142,6 +143,7 @@ public class MyConfig extends JFinalConfig { arp.addMapping(FeedBack.dao.tableName(),FeedBack.class); arp.addMapping(FairExt.dao.tableName(),FairExt.class); arp.addMapping(FairBankno.dao.tableName(),FairBankno.class); + arp.addMapping(FairAuth.dao.tableName(),FairAuth.class); EhCachePlugin cachePlugin = new EhCachePlugin(); me.add(cachePlugin); } diff --git a/src/main/java/com/tianpengtech/common/generator/app/Generator.java b/src/main/java/com/tianpengtech/common/generator/app/Generator.java index 9aca556..55c802a 100644 --- a/src/main/java/com/tianpengtech/common/generator/app/Generator.java +++ b/src/main/java/com/tianpengtech/common/generator/app/Generator.java @@ -232,7 +232,7 @@ public class Generator { Engine engine = engineConfig(); // Generator.excute(engine,".user", "User", "fair_user", "用户表"); // Generator.excute(engine,".authenticate", "Authenticate", "fair_user_authenticate", "用户认证表"); - Generator.excute(engine,".fair", "FairBankno", "fair_wh_bankno", "网红银行卡表"); + Generator.excute(engine,".fair", "FairAuth", "fair_wh_auth", "网红认证表"); // Generator.excute(engine,".wh", "Fair", "fair_wh", "网红表"); // Generator.excute(engine,".feedback", "FeedBack", "fair_feedback", "反馈表"); diff --git a/src/main/java/com/tianpengtech/common/model/fairauth/FairAuth.java b/src/main/java/com/tianpengtech/common/model/fairauth/FairAuth.java new file mode 100644 index 0000000..1c717f2 --- /dev/null +++ b/src/main/java/com/tianpengtech/common/model/fairauth/FairAuth.java @@ -0,0 +1,43 @@ +package com.tianpengtech.common.model.fairauth; +import com.tianpengtech.common.model.AbstractBaseModel; +/** + *实体类名-网红认证表 + * fair_wh_auth + * + * @since Thu Jul 27 16:13:18 CST 2017 + */ +public class FairAuth extends AbstractBaseModel< FairAuth > { + + /** + * + */ + private static final long serialVersionUID = 1L; + public static final FairAuth dao = new FairAuth(); + + + public static final String ID ="id"; // + public static final String WH_ID ="wh_id"; //网红ID + public static final String USER_NAME ="user_name"; //账号 + public static final String NICK_NAME ="nick_name"; //昵称 + public static final String FANS ="fans"; //粉丝数量 + public static final String SCREENSHOT ="screenshot"; //截图 + public static final String TYPE ="type"; //类型 + public static final String DELETETAG ="deletetag"; //删除标识 + public static final String STATUS ="status"; //状态 + + public static final int STATUS_APPROVING=1; //提交待审核 + public static final int STATUS_SUCCESS=2; //审核通过 + public static final int STATUS_FAILURE=3; //审核不通过 + + + public static final int TYPE_WEIBO=1; //微博 + public static final int TYPE_WEIXIN=2; //微信 + public static final int TYPE_QQ=3; //QQ + + + @Override + public String tableName() { + return "fair_wh_auth"; + } + +} \ No newline at end of file diff --git a/src/main/java/com/tianpengtech/front/mobile/passport/MobileFairAuthValidator.java b/src/main/java/com/tianpengtech/front/mobile/passport/MobileFairAuthValidator.java new file mode 100644 index 0000000..483aabc --- /dev/null +++ b/src/main/java/com/tianpengtech/front/mobile/passport/MobileFairAuthValidator.java @@ -0,0 +1,68 @@ +/** + * 请勿将俱乐部专享资源复制给其他人,保护知识产权即是保护我们所在的行业,进而保护我们自己的利益 + * 即便是公司的同事,也请尊重 JFinal 作者的努力与付出,不要复制给同事 + * + * 如果你尚未加入俱乐部,请立即删除该项目,或者现在加入俱乐部:http://jfinal.com/club + * + * 俱乐部将提供 jfinal-club 项目文档与设计资源、专用 QQ 群,以及作者在俱乐部定期的分享与答疑, + * 价值远比仅仅拥有 jfinal club 项目源代码要大得多 + * + * JFinal 俱乐部是五年以来首次寻求外部资源的尝试,以便于有资源创建更加 + * 高品质的产品与服务,为大家带来更大的价值,所以请大家多多支持,不要将 + * 首次的尝试扼杀在了摇篮之中 + */ + +package com.tianpengtech.front.mobile.passport; + +import com.jfinal.core.Controller; +import com.jfinal.kit.StrKit; +import com.jfinal.validate.Validator; +import com.tianpengtech.front.mobile.common.util.R; + +import java.util.Enumeration; + +/** + * 验证网红认证信息 + */ +public class MobileFairAuthValidator extends Validator { + + + + protected void validate(Controller c) { + String nickName = c.getPara("nick_name"); + String userName = c.getPara("user_name"); + String fans = c.getPara("fans"); + String screenshot = c.getPara("screenshot"); + String type = c.getPara("type"); + if (StrKit.notBlank(nickName)){ + validateString("nick_name",1,10,"nickNameError","昵称应在1-10位之间"); + } + if (StrKit.notBlank(userName)){ + validateString("user_name",1,30,"userNameError","用户名格式不正确"); + } + if (StrKit.notBlank(fans)){ + validateInteger("fans",0,99999999,"fansError","粉丝数量不正确"); + } + if (StrKit.notBlank(screenshot)){ + validateRequired("screenshot","screenshotError","请上传截图"); + } + if (StrKit.notBlank(type)){ + validateInteger("type",0,4,"typeError","类型不正确"); + } + + } + + protected void handleError(Controller c) { + R r = R.fail("失败"); + Enumeration<String> s=c.getAttrNames(); + while (s.hasMoreElements()){ + String key=s.nextElement(); + r.p(key,c.getAttr(key)); + } + c.renderJson(r); + } + + + +} + diff --git a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java index 684a486..c80fc09 100644 --- a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java +++ b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java @@ -105,4 +105,30 @@ public class MobilePassportController extends BaseController{ renderJson(r); } + /** + * 保存认证信息 + */ + @Before(MobileFairAuthValidator.class) + public void saveAuth(){ + Map<String,String> param = new HashMap<>(); + param.put("user_name",getPara("user_name")); + param.put("nick_name",getPara("nick_name")); + param.put("fans",getPara("fans")); + param.put("screenshot",getPara("screenshot")); + param.put("type",getPara("type")); + User user= UserUtil.getCurrentUser(getPara("token"),getHeader("source")); + param.put("uid",user.getLong(User.ID)+""); + R r=ps.saveAuth(param); + renderJson(r); + } + + /** + * 查找认证信息 + */ + public void findAuth(){ + User user= UserUtil.getCurrentUser(getPara("token"),getHeader("source")); + R r=ps.findAuth(user.getLong(User.ID)); + renderJson(r); + } + } diff --git a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java index 82ea916..8fd2511 100644 --- a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java +++ b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java @@ -8,6 +8,7 @@ import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Record; import com.jfinal.plugin.ehcache.CacheKit; import com.tianpengtech.common.model.fair.Fair; +import com.tianpengtech.common.model.fairauth.FairAuth; import com.tianpengtech.common.model.fairext.FairExt; import com.tianpengtech.common.model.user.User; import com.tianpengtech.front.mobile.common.util.R; @@ -27,6 +28,7 @@ public class MobilePassportService { private static FairExt fairExtDao = FairExt.dao; private static FairService fairService = new FairService(); private static FairService fs = new FairService(); + private static FairAuth authDao= FairAuth.dao; /** * 保存网红信息 * @param param @@ -286,4 +288,44 @@ public class MobilePassportService { } } + /** + * 保存认证信息 + * @param param + * @return + */ + public R saveAuth(Map<String,String> param){ + String username=param.get("user_name"); + String nickName=param.get("nick_name"); + String fans=param.get("fans"); + String screen=param.get("screenshot"); + String type=param.get("type"); + String uid=param.get("uid"); + FairAuth fa = new FairAuth(); + fa.set(FairAuth.USER_NAME,username); + fa.set(FairAuth.NICK_NAME,nickName); + fa.set(FairAuth.FANS,fans); + fa.set(FairAuth.SCREENSHOT,screen); + fa.set(FairAuth.TYPE,type); + fa.set(FairAuth.STATUS,FairAuth.STATUS_APPROVING); + fa.set(FairAuth.WH_ID,uid); + fa.save(); + return R.ok(); + } + + /** + * 获取认证信息列表 + * @param uid + * @return + */ + public R findAuth(long uid){ + String sql = String.format("select * from %s where %s=? and %s=?",authDao.tableName(),FairAuth.DELETETAG,FairAuth.WH_ID); + List<FairAuth> list=authDao.find(sql,0,uid); + list.forEach( fa ->{ + fa.remove(FairAuth.DELETETAG); + fa.remove(FairAuth.WH_ID); + }); + R r=R.ok(); + r.p("auths",list); + return r; + } } diff --git a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportValidator.java b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportValidator.java index 8506bd6..966d71d 100644 --- a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportValidator.java +++ b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportValidator.java @@ -55,7 +55,7 @@ public class MobilePassportValidator extends Validator { validateInteger("province",0,999999999,"provinceError","省份不正确"); } if (StrKit.notBlank(city)){ - validateInteger("province",0,999999999,"provinceError","市区不正确不正确"); + validateInteger("province",0,999999999,"provinceError","市区不正确"); } } -- Gitee From 6ced37eff850c9652926e5f75a3426dbf82a48aa Mon Sep 17 00:00:00 2001 From: "994856170@qq.com" <ggd1994> Date: Mon, 31 Jul 2017 11:52:37 +0800 Subject: [PATCH 07/13] =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=88=97=E8=A1=A8API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../front/mobile/MobileRoutes.java | 2 + .../message/MobileMessageController.java | 2 +- ...Service.java => MobileMessageService.java} | 4 +- .../mobile/task/MobileTaskController.java | 58 +++++++ .../front/mobile/task/MobileTaskService.java | 128 ++++++++++++++ .../front/web/task/TaskService.java | 159 +++++++++--------- 6 files changed, 275 insertions(+), 78 deletions(-) rename src/main/java/com/tianpengtech/front/mobile/message/{MessageService.java => MobileMessageService.java} (97%) create mode 100644 src/main/java/com/tianpengtech/front/mobile/task/MobileTaskController.java create mode 100644 src/main/java/com/tianpengtech/front/mobile/task/MobileTaskService.java diff --git a/src/main/java/com/tianpengtech/front/mobile/MobileRoutes.java b/src/main/java/com/tianpengtech/front/mobile/MobileRoutes.java index a581bdd..f546ff2 100644 --- a/src/main/java/com/tianpengtech/front/mobile/MobileRoutes.java +++ b/src/main/java/com/tianpengtech/front/mobile/MobileRoutes.java @@ -8,6 +8,7 @@ import com.tianpengtech.front.mobile.login.MobileLoginController; import com.tianpengtech.front.mobile.message.MobileMessageController; import com.tianpengtech.front.mobile.passport.MobilePassportController; import com.tianpengtech.front.mobile.region.MobileRegionController; +import com.tianpengtech.front.mobile.task.MobileTaskController; /** * Created by ggd on 2017/7/15 0015. @@ -25,5 +26,6 @@ public class MobileRoutes extends Routes { add("/api/region", MobileRegionController.class); add("/api/passport", MobilePassportController.class); add("/api/bankno", MobileBanknoController.class); + add("/api/task", MobileTaskController.class); } } diff --git a/src/main/java/com/tianpengtech/front/mobile/message/MobileMessageController.java b/src/main/java/com/tianpengtech/front/mobile/message/MobileMessageController.java index 7a1a5e8..fe34293 100644 --- a/src/main/java/com/tianpengtech/front/mobile/message/MobileMessageController.java +++ b/src/main/java/com/tianpengtech/front/mobile/message/MobileMessageController.java @@ -11,7 +11,7 @@ import com.tianpengtech.front.web.common.controller.BaseController; */ public class MobileMessageController extends BaseController { - private static MessageService messageService = new MessageService(); + private static MobileMessageService messageService = new MobileMessageService(); /** * 获取消息列表 */ diff --git a/src/main/java/com/tianpengtech/front/mobile/message/MessageService.java b/src/main/java/com/tianpengtech/front/mobile/message/MobileMessageService.java similarity index 97% rename from src/main/java/com/tianpengtech/front/mobile/message/MessageService.java rename to src/main/java/com/tianpengtech/front/mobile/message/MobileMessageService.java index 970b2d5..577586d 100644 --- a/src/main/java/com/tianpengtech/front/mobile/message/MessageService.java +++ b/src/main/java/com/tianpengtech/front/mobile/message/MobileMessageService.java @@ -11,8 +11,8 @@ import java.util.List; /** * Created by ggd on 2017/7/23 0023. */ -public class MessageService { - public static MessageService me = new MessageService(); +public class MobileMessageService { + public static MobileMessageService me = new MobileMessageService(); private static FairMessage fairMessage = new FairMessage(); private static FairService fs = new FairService(); /** diff --git a/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskController.java b/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskController.java new file mode 100644 index 0000000..65c2d32 --- /dev/null +++ b/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskController.java @@ -0,0 +1,58 @@ +package com.tianpengtech.front.mobile.task; + +import com.tianpengtech.common.GlobalConfigConstant; +import com.tianpengtech.common.model.user.User; +import com.tianpengtech.front.mobile.common.util.R; +import com.tianpengtech.front.mobile.common.util.U; +import com.tianpengtech.front.mobile.common.util.UserUtil; +import com.tianpengtech.front.web.common.controller.BaseController; +import com.tianpengtech.front.web.login.LoginService; + +import java.util.HashMap; +import java.util.Map; + +/** + * Created by ggd on 2017/7/28 0028. + */ +public class MobileTaskController extends BaseController { + private static MobileTaskService service = MobileTaskService.me; + /** + * 获取任务广场任务列表 + */ + public void index(){ + int pageNum = getParaToInt("pageNum",1); + int pageSize = getParaToInt("pageSize",5); + User user= UserUtil.getCurrentUser(getPara("token"),getHeader("source")); + R r=service.taskIndex(pageNum,pageSize,user.getLong(User.ID)); + renderJson(r); + } + + /** + * 进行中和已完成任务查询 + */ + public void findTask(){ + int pageNum = getParaToInt("pageNum", 1); + int pageSize = getParaToInt("pageSize",5); + Map<String, Object> params = new HashMap<>(); + params.put("taskName", getPara("taskName")); + params.put("taskStatus", getPara("status")); + User user= UserUtil.getCurrentUser(getPara("token"),getHeader("source")); + params.put("user", user.get(User.ID)); + R r=service.findTask(pageNum,pageSize,params); + renderJson(r); + } + + /** + * 获取任务详情 + */ + public void getTask(){ + String id = getPara("id");//任务ID + if (!U.isInteger(id)){ + renderJson(R.fail("id格式不正确")); + return; + } + User user= UserUtil.getCurrentUser(getPara("token"),getHeader("source")); + R r=service.getTask(Long.parseLong(id),user.getLong(User.ID)); + renderJson(r); + } +} diff --git a/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskService.java b/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskService.java new file mode 100644 index 0000000..67aaaa9 --- /dev/null +++ b/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskService.java @@ -0,0 +1,128 @@ +package com.tianpengtech.front.mobile.task; + +import com.jfinal.kit.StrKit; +import com.jfinal.plugin.activerecord.Page; +import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ; +import com.tianpengtech.common.model.fair.Fair; +import com.tianpengtech.common.model.task.Task; +import com.tianpengtech.common.model.task.TaskWh; +import com.tianpengtech.common.search.EqualCondition; +import com.tianpengtech.common.search.QueryConstructor; +import com.tianpengtech.front.mobile.common.util.R; +import com.tianpengtech.front.web.task.TaskService; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * Created by ggd on 2017/7/28 0028. + */ +public class MobileTaskService { + public static MobileTaskService me = new MobileTaskService(); + public static TaskService taskService = new TaskService(); + private static Task taskDao = Task.dao; + private static Fair fairDao = Fair.dao; + + public static String PARAM_TASK_NAME="taskName"; + public static String PARAM_TASK_STATUS="taskStatus"; + + private static String PARAM_TASK_STATUS_AFTER="1"; //进行中 + private static String PARAM_TASK_STATUS_END="2"; //已完成 + + /** + * 待接任务列表 + * @return + */ + public R taskIndex(int pageNum, int length,long uid){ + String s=String.format("select %s,%s,%s,%s,%s,%s,%s ",Task.ID,Task.TASK_TITLE,Task.TASK_START_TIME,Task.TASK_END_TIME,Task.TASK_DESCRIPTION,Task.TASK_PRICE,Task.WH_NUMBER); + String sql=String.format(" from %s task where (task.%s=? and task.%s>?) and task.%s=? and task.%s=? and task.%s not in(select %s from %s tw where tw.%s=?)", + taskDao.tableName(),Task.STATUS,Task.TASK_START_TIME,Task.DELETETAG,Task.EXTENSION_TYPE,Task.ID,TaskWh.TASK_ID,TaskWh.dao.tableName(),TaskWh.WH_ID); + Page<Task> page=taskDao.paginate(pageNum,length,s,sql,new Object[]{Task.STATUS_SUCCESS,new Date(),Task.DELETE_STATUS_NO,Task.EXT_TYPE_RL,uid}); + page.getList().forEach( t ->{ + t.put("rece",t.getRece()); + t.put("dateString",t.getDateString()); + }); + R r = R.ok(); + r.p("task",page); + return r; + } + + + + + + + /** + * 任务列表分页 + * @param + * @return + */ + public R findTask(int pageNum, int length,Map<String,Object> params){ + List<Object> param=new ArrayList<>(); + String s = "select task.task_title,task.task_description,task.task_price,task.status as status,task.id as id,task.task_start_time,task.task_end_time "; + StringBuffer sql= new StringBuffer(" from " + taskDao.tableName() + " task left join " + TaskWh.dao.tableName() + " wh on task." + Task.ID + "=wh." + TaskWh.TASK_ID +" left join "+ Fair.dao.tableName()+" fair on fair."+Fair.ID+"=wh."+TaskWh.WH_ID); + sql.append(" where task." + Task.DELETETAG+"=? and wh."+TaskWh.WH_ID+"=? and task."+Task.STATUS+"!="+Task.STATUS_WAIT ); + param.add(Task.DELETE_STATUS_NO); + param.add(params.get("user")); + if (params!=null) { + Object taskName = params.get(PARAM_TASK_NAME); + Object taskStatus = params.get(PARAM_TASK_STATUS); + if (taskName!=null && StrKit.notBlank(taskName.toString())) { + sql.append(" and ("); + sql.append("task." + Task.TASK_TITLE+" like ? or "); + param.add("%" + taskName.toString() + "%"); + sql.append("fair." + Fair.NICK_NAME+" like ?)"); + param.add("%" + taskName.toString() + "%"); + } + if(taskStatus!=null && StrKit.notBlank(taskStatus.toString())){ + sql.append(" and ("); + if(taskStatus.toString().equals(PARAM_TASK_STATUS_AFTER)){ + sql.append("task." + Task.STATUS+"=? and task."+Task.TASK_START_TIME+"<?)"); + param.add(Task.STATUS_SUCCESS); + param.add(new Date()); + }else if(taskStatus.toString().equals(PARAM_TASK_STATUS_END)){ + sql.append("task." + Task.STATUS+"=?)"); + param.add(Task.STATUS_COMPLETED); + } + } + sql.append(" group by task."+Task.ID+" order by task."+Task.ID+" DESC"); + } + Page<Task> page=taskDao.paginate(pageNum,length,s,sql.toString(),param.toArray()); + List<Task> tasks = page.getList(); + for (Task t:tasks) { + t.put("dateString",t.getDateString()); + } + R r = R.ok(); + r.p("task",page); + return r; + } + + public R getTask(long id,long uid) { + StringBuffer sql = new StringBuffer("select task.task_title,task.task_description,task.task_price,task.status as status,task.id as id,task.task_start_time,task.task_end_time,wh.click_num,wh.cvs_num,wh.id as whid,task.task_url from " + + taskDao.tableName() + " task left join " + TaskWh.dao.tableName() + " wh on task." + Task.ID + "=wh." + TaskWh.TASK_ID + " where wh." + TaskWh.TASK_ID + "=? and wh." + TaskWh.WH_ID + "=?"); + Task task = taskDao.findFirst(sql.toString(), id, uid); + if(task==null){ + sql = new StringBuffer("select task.task_title,task.task_description,task.task_price,task.status as status,task.id as id,task.task_start_time,task.task_end_time,wh.click_num,wh.cvs_num,wh.id as whid,task.task_url from " + + taskDao.tableName() + " task left join " + TaskWh.dao.tableName() + " wh on task." + Task.ID + "=wh." + TaskWh.TASK_ID + " where task." + Task.ID + "=?"); + task = taskDao.findFirst(sql.toString(), id); + }else{ + task.put("sumClick", task.getClick()); + task.put("sumCvs", task.getCvs()); + } + task.put("dateString", task.getDateString()); + R r = R.ok(); + r.p("task", task); + if (task.getInt("status")!=Task.STATUS_SUCCESS) { + String fairs = String.format("select wh.photo,wh.nick_name,wh.id as id,task.task_price,wt.cvs_num,wt.click_num from %s wt left join %s wh on wt.%s=wh.%s left join %s task on wt.%s=task.%s where wt.%s=? order by wt.%s desc", TaskWh.dao.tableName(), Fair.dao.tableName(), TaskWh.WH_ID, Fair.ID, Task.dao.tableName(), TaskWh.TASK_ID, Task.ID, TaskWh.TASK_ID, TaskWh.CVS_NUM); + List<Fair> fairses = fairDao.find(fairs, id); + for (int i = 0; i < fairses.size(); i++) { + Fair f = fairses.get(i); + f.put("no", i + 1); + } + r.p("fairs", fairses); + } + return r; + } +} diff --git a/src/main/java/com/tianpengtech/front/web/task/TaskService.java b/src/main/java/com/tianpengtech/front/web/task/TaskService.java index f154954..4572d68 100644 --- a/src/main/java/com/tianpengtech/front/web/task/TaskService.java +++ b/src/main/java/com/tianpengtech/front/web/task/TaskService.java @@ -124,9 +124,14 @@ public class TaskService { if (isExistFairTask(id,taskId)){ continue; } - Record record = new Record(); - record.set(Task.WL_FAIR_ID,id).set(Task.WL_TASK_ID,taskId); - Db.save(Task.TASK_WHITELIST,record); +// Record record = new Record(); +// record.set(Task.WL_FAIR_ID,id).set(Task.WL_TASK_ID,taskId); +// Db.save(Task.TASK_WHITELIST,record); + TaskWh tw= new TaskWh(); + tw.set(TaskWh.WH_ID,id); + tw.set(TaskWh.TASK_ID,taskId); + tw.set(TaskWh.CODE,getTaskCode()); + tw.save(); } Task task=taskDao.findById(taskId); task.set(Task.STATUS,Task.STATUS_APPROVING); @@ -162,44 +167,46 @@ public class TaskService { * @param ip */ public void saveTaskClick(String ref, String ua ,String ip,String code){ - TaskWh taskWh=getByCode(code); - boolean devModel = PropKit.getBoolean("devMode"); - //如果是测试环境 - if (!devModel){ - Object i=CacheKit.get(TASK_CACHE_CLICK_NAME,ip+taskWh.get(TaskWh.ID)); - //判断在缓存有效期内是否点击过 - if (i!=null){ - return; + synchronized (code) { + TaskWh taskWh = getByCode(code); + boolean devModel = PropKit.getBoolean("devMode"); + //如果是测试环境 + if (!devModel) { + Object i = CacheKit.get(TASK_CACHE_CLICK_NAME, ip + taskWh.get(TaskWh.ID)); + //判断在缓存有效期内是否点击过 + if (i != null) { + return; + } } + UserAgentInfo userAgentInfo = UAUtil.get(ua); + IpInfo info = IpUtil.getIpInfo(ip); + TaskCount taskCount = new TaskCount(); + taskCount.set(TaskCount.TASK_ID, taskWh.get(TaskWh.TASK_ID)); + taskCount.set(TaskCount.WH_ID, taskWh.get(TaskWh.WH_ID)); + taskCount.set(TaskCount.URL, ref); + taskCount.set(TaskCount.IP, ip); + taskCount.set(TaskCount.TASK_CODE, code); + taskCount.set(TaskCount.USER_AGENT, ua); + if (userAgentInfo != null) { + taskCount.set(TaskCount.OS_NAME, userAgentInfo.getOsName()); + taskCount.set(TaskCount.UA_NAME, userAgentInfo.getUaName()); + taskCount.set(TaskCount.DEVICE_TYPE, userAgentInfo.getDeviceType()); + taskCount.set(TaskCount.REQ_TYPE, userAgentInfo.getType()); + } + if (info != null) { + taskCount.set(TaskCount.COUNTRY, info.getCountry()); + taskCount.set(TaskCount.PART, info.getPart()); + taskCount.set(TaskCount.PROVINCE, info.getProvince()); + taskCount.set(TaskCount.CITY, info.getCity()); + } + taskCount.save(); + //缓存内写入数据防止此IP在限制时间内再次点击 + CacheKit.put(TASK_CACHE_CLICK_NAME, ip + taskWh.get(TaskWh.ID), 1); + //点击次数加一 + int num = taskWh.get(TaskWh.CLICK_NUM); + taskWh.set(TaskWh.CLICK_NUM, ++num); + taskWh.update(); } - UserAgentInfo userAgentInfo = UAUtil.get(ua); - IpInfo info=IpUtil.getIpInfo(ip); - TaskCount taskCount = new TaskCount(); - taskCount.set(TaskCount.TASK_ID,taskWh.get(TaskWh.TASK_ID)); - taskCount.set(TaskCount.WH_ID,taskWh.get(TaskWh.WH_ID)); - taskCount.set(TaskCount.URL,ref); - taskCount.set(TaskCount.IP,ip); - taskCount.set(TaskCount.TASK_CODE,code); - taskCount.set(TaskCount.USER_AGENT,ua); - if (userAgentInfo!=null){ - taskCount.set(TaskCount.OS_NAME,userAgentInfo.getOsName()); - taskCount.set(TaskCount.UA_NAME,userAgentInfo.getUaName()); - taskCount.set(TaskCount.DEVICE_TYPE,userAgentInfo.getDeviceType()); - taskCount.set(TaskCount.REQ_TYPE,userAgentInfo.getType()); - } - if (info!=null){ - taskCount.set(TaskCount.COUNTRY,info.getCountry()); - taskCount.set(TaskCount.PART,info.getPart()); - taskCount.set(TaskCount.PROVINCE,info.getProvince()); - taskCount.set(TaskCount.CITY,info.getCity()); - } - taskCount.save(); - //缓存内写入数据防止此IP在限制时间内再次点击 - CacheKit.put(TASK_CACHE_CLICK_NAME,ip+taskWh.get(TaskWh.ID),1); - //点击次数加一 - int num=taskWh.get(TaskWh.CLICK_NUM); - taskWh.set(TaskWh.CLICK_NUM,++num); - taskWh.update(); } @@ -210,44 +217,46 @@ public class TaskService { * @param ip */ public void saveTaskCvs(String ref, String ua ,String ip,String code){ - TaskWh taskWh=getByCode(code); - boolean devModel = PropKit.getBoolean("devMode"); - //如果是测试环境 - if (!devModel){ - Object i=CacheKit.get(TASK_CACHE_CLICK_NAME,ip+taskWh.get(TaskWh.ID)); - //判断在缓存有效期内是否点击过 - if (i!=null){ - return; + synchronized (code) { + TaskWh taskWh = getByCode(code); + boolean devModel = PropKit.getBoolean("devMode"); + //如果是测试环境 + if (!devModel) { + Object i = CacheKit.get(TASK_CACHE_CLICK_NAME, ip + taskWh.get(TaskWh.ID)); + //判断在缓存有效期内是否点击过 + if (i != null) { + return; + } } + UserAgentInfo userAgentInfo = UAUtil.get(ua); + IpInfo info = IpUtil.getIpInfo(ip); + TaskCVS taskCvs = new TaskCVS(); + taskCvs.set(TaskCount.TASK_ID, taskWh.get(TaskWh.TASK_ID)); + taskCvs.set(TaskCount.WH_ID, taskWh.get(TaskWh.WH_ID)); + taskCvs.set(TaskCount.URL, ref); + taskCvs.set(TaskCount.IP, ip); + taskCvs.set(TaskCount.TASK_CODE, code); + taskCvs.set(TaskCount.USER_AGENT, ua); + if (userAgentInfo != null) { + taskCvs.set(TaskCount.OS_NAME, userAgentInfo.getOsName()); + taskCvs.set(TaskCount.UA_NAME, userAgentInfo.getUaName()); + taskCvs.set(TaskCount.DEVICE_TYPE, userAgentInfo.getDeviceType()); + taskCvs.set(TaskCount.REQ_TYPE, userAgentInfo.getType()); + } + if (info != null) { + taskCvs.set(TaskCount.COUNTRY, info.getCountry()); + taskCvs.set(TaskCount.PART, info.getPart()); + taskCvs.set(TaskCount.PROVINCE, info.getProvince()); + taskCvs.set(TaskCount.CITY, info.getCity()); + } + taskCvs.save(); + //缓存内写入数据防止此IP在限制时间内再次点击 + CacheKit.put(TASK_CACHE_CLICK_NAME, ip + taskWh.get(TaskWh.ID), 1); + //点击次数加一 + int num = taskWh.get(TaskWh.CVS_NUM); + taskWh.set(TaskWh.CVS_NUM, ++num); + taskWh.update(); } - UserAgentInfo userAgentInfo = UAUtil.get(ua); - IpInfo info=IpUtil.getIpInfo(ip); - TaskCVS taskCvs = new TaskCVS(); - taskCvs.set(TaskCount.TASK_ID,taskWh.get(TaskWh.TASK_ID)); - taskCvs.set(TaskCount.WH_ID,taskWh.get(TaskWh.WH_ID)); - taskCvs.set(TaskCount.URL,ref); - taskCvs.set(TaskCount.IP,ip); - taskCvs.set(TaskCount.TASK_CODE,code); - taskCvs.set(TaskCount.USER_AGENT,ua); - if (userAgentInfo!=null){ - taskCvs.set(TaskCount.OS_NAME,userAgentInfo.getOsName()); - taskCvs.set(TaskCount.UA_NAME,userAgentInfo.getUaName()); - taskCvs.set(TaskCount.DEVICE_TYPE,userAgentInfo.getDeviceType()); - taskCvs.set(TaskCount.REQ_TYPE,userAgentInfo.getType()); - } - if (info!=null){ - taskCvs.set(TaskCount.COUNTRY,info.getCountry()); - taskCvs.set(TaskCount.PART,info.getPart()); - taskCvs.set(TaskCount.PROVINCE,info.getProvince()); - taskCvs.set(TaskCount.CITY,info.getCity()); - } - taskCvs.save(); - //缓存内写入数据防止此IP在限制时间内再次点击 - CacheKit.put(TASK_CACHE_CLICK_NAME,ip+taskWh.get(TaskWh.ID),1); - //点击次数加一 - int num=taskWh.get(TaskWh.CVS_NUM); - taskWh.set(TaskWh.CVS_NUM,++num); - taskWh.update(); } -- Gitee From 471df59590810a5e24d2f12075a06f0c2e80d49a Mon Sep 17 00:00:00 2001 From: "994856170@qq.com" <ggd1994> Date: Fri, 4 Aug 2017 15:41:30 +0800 Subject: [PATCH 08/13] =?UTF-8?q?=E9=87=91=E9=A2=9DAPI=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tianpengtech/common/model/fair/Fair.java | 1 + .../common/model/moneylog/MoneyLog.java | 6 + .../common/model/task/TaskWh.java | 2 +- .../tianpengtech/common/util/SendSmsMsg.java | 92 ++++++++++++++ .../front/mobile/MobileRoutes.java | 2 + .../passport/MobilePassportController.java | 38 ++++++ .../passport/MobilePassportService.java | 119 +++++++++++++++++- .../publisher/MobilePublishController.java | 59 +++++++++ .../publisher/MobilePublishService.java | 91 ++++++++++++++ .../mobile/task/MobileTaskController.java | 14 +++ .../front/mobile/task/MobileTaskService.java | 16 +++ .../front/web/passport/PassportService.java | 14 ++- src/main/resources/ehcache.xml | 11 ++ src/main/resources/sms.properties | 5 + 14 files changed, 460 insertions(+), 10 deletions(-) create mode 100644 src/main/java/com/tianpengtech/common/util/SendSmsMsg.java create mode 100644 src/main/java/com/tianpengtech/front/mobile/publisher/MobilePublishController.java create mode 100644 src/main/java/com/tianpengtech/front/mobile/publisher/MobilePublishService.java create mode 100644 src/main/resources/sms.properties diff --git a/src/main/java/com/tianpengtech/common/model/fair/Fair.java b/src/main/java/com/tianpengtech/common/model/fair/Fair.java index 2ff5cd0..529fc28 100644 --- a/src/main/java/com/tianpengtech/common/model/fair/Fair.java +++ b/src/main/java/com/tianpengtech/common/model/fair/Fair.java @@ -49,6 +49,7 @@ public class Fair extends AbstractBaseModel<Fair> { public static final String ID_CARD="id_card"; //身份证 public static final String REMIND_MSG="remind_msg"; //是否消息提醒 public static final String TRAN_PWD="tran_pwd"; //交易密码 + public static final String MONEY="money"; //可用余额 public static final int STATUS_APPROVING=1; diff --git a/src/main/java/com/tianpengtech/common/model/moneylog/MoneyLog.java b/src/main/java/com/tianpengtech/common/model/moneylog/MoneyLog.java index efa16d8..799de19 100644 --- a/src/main/java/com/tianpengtech/common/model/moneylog/MoneyLog.java +++ b/src/main/java/com/tianpengtech/common/model/moneylog/MoneyLog.java @@ -23,12 +23,18 @@ public class MoneyLog extends AbstractBaseModel< MoneyLog > { public static final String DESCRIPTION ="description"; //描述 public static final String TYPE ="type"; //类型 public static final String OPERID ="operid"; //关联ID + public static final String STATE ="state"; //金额增加还是减少 public static final Integer TYPE_TIXIAN =1; //提现 operid=提现表ID public static final Integer TYPE_YAOQING =2; //邀请 operid=被邀请用户ID public static final Integer TYPE_RENWU =3; //任务 operid=任务ID + public static final Integer STATE_ADD =1; //金额增加 + public static final Integer STATE_REDUCE =2; //金额减少 + + + @Override public String tableName() { return "fair_wh_moneylog"; diff --git a/src/main/java/com/tianpengtech/common/model/task/TaskWh.java b/src/main/java/com/tianpengtech/common/model/task/TaskWh.java index 2333ddd..4cea1af 100644 --- a/src/main/java/com/tianpengtech/common/model/task/TaskWh.java +++ b/src/main/java/com/tianpengtech/common/model/task/TaskWh.java @@ -15,7 +15,7 @@ public class TaskWh extends AbstractBaseModel< TaskWh > { private static final long serialVersionUID = 1L; public static final TaskWh dao = new TaskWh(); public static final String TASKWH_CACHE_NAME ="blockIp"; // - + public static final String CACHE_NAME_NO = "taskwh_no"; public static final String ID ="id"; // public static final String WH_ID ="wh_id"; //网红ID public static final String TASK_ID ="task_id"; //任务ID diff --git a/src/main/java/com/tianpengtech/common/util/SendSmsMsg.java b/src/main/java/com/tianpengtech/common/util/SendSmsMsg.java new file mode 100644 index 0000000..b4a3f35 --- /dev/null +++ b/src/main/java/com/tianpengtech/common/util/SendSmsMsg.java @@ -0,0 +1,92 @@ +package com.tianpengtech.common.util; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.jfinal.kit.Prop; +import com.tianpengtech.front.mobile.common.util.ToolMD5; + +import java.io.*; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; + +/** + * Created by ggd on 2017/8/1 0001. + */ +public class SendSmsMsg { + + private static Prop prop = new Prop("sms.properties"); + public static final String URL=prop.get("url"); + public static final String USERID=prop.get("userid"); + public static final String APIKEY=prop.get("apikey"); + public static final String TEMPLATEID=prop.get("templateid"); + public static final boolean isSend=prop.getBoolean("isSend"); + + public static boolean send(String mobile,String code) { + + try { + //创建连接 + java.net.URL url = new URL(URL); + HttpURLConnection connection = (HttpURLConnection) url + .openConnection(); + connection.setDoOutput(true); + connection.setDoInput(true); + connection.setRequestMethod("POST"); + connection.setUseCaches(false); + connection.setInstanceFollowRedirects(true); + connection.setRequestProperty("Content-Type", + "application/x-www-form-urlencoded"); + + connection.connect(); + + //POST请求 + DataOutputStream out = new DataOutputStream( + connection.getOutputStream()); + JSONObject obj = new JSONObject(); + obj.put("userid",USERID); + long time=System.currentTimeMillis(); + obj.put("ts", time); + obj.put("sign", ToolMD5.encodeMD5Hex(USERID+time+APIKEY) ); + obj.put("mobile",mobile); + obj.put("templateid",TEMPLATEID); + JSONArray arr = new JSONArray(); + arr.add(code); + obj.put("templateparam",arr); + out.writeBytes(obj.toJSONString()); + out.flush(); + out.close(); + //读取响应 + BufferedReader reader = new BufferedReader(new InputStreamReader( + connection.getInputStream())); + String lines; + StringBuffer sb = new StringBuffer(""); + while ((lines = reader.readLine()) != null) { + lines = new String(lines.getBytes(), "utf-8"); + sb.append(lines); + } + reader.close(); + // 断开连接 + connection.disconnect(); + JSONObject obj1=JSON.parseObject(sb.toString()); + if (obj1.getIntValue("code")==0){ + return true; + }else{ + return false; + } + } catch (MalformedURLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return false; + } catch (UnsupportedEncodingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return false; + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return false; + } + } + +} diff --git a/src/main/java/com/tianpengtech/front/mobile/MobileRoutes.java b/src/main/java/com/tianpengtech/front/mobile/MobileRoutes.java index f546ff2..bbcd3ce 100644 --- a/src/main/java/com/tianpengtech/front/mobile/MobileRoutes.java +++ b/src/main/java/com/tianpengtech/front/mobile/MobileRoutes.java @@ -7,6 +7,7 @@ import com.tianpengtech.front.mobile.common.intercepter.TokenCheckInterceptor; import com.tianpengtech.front.mobile.login.MobileLoginController; import com.tianpengtech.front.mobile.message.MobileMessageController; import com.tianpengtech.front.mobile.passport.MobilePassportController; +import com.tianpengtech.front.mobile.publisher.MobilePublishController; import com.tianpengtech.front.mobile.region.MobileRegionController; import com.tianpengtech.front.mobile.task.MobileTaskController; @@ -27,5 +28,6 @@ public class MobileRoutes extends Routes { add("/api/passport", MobilePassportController.class); add("/api/bankno", MobileBanknoController.class); add("/api/task", MobileTaskController.class); + add("/api/publish", MobilePublishController.class); } } diff --git a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java index c80fc09..2209664 100644 --- a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java +++ b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java @@ -131,4 +131,42 @@ public class MobilePassportController extends BaseController{ renderJson(r); } + /** + * 获取点击数详情 + * @return + */ + public void getClickInfo(){ + User user= UserUtil.getCurrentUser(getPara("token"),getHeader("source")); + R r=ps.getClickInfo(user.getLong(User.ID)); + renderJson(r); + } + + /** + * 获取转化数详情 + * @return + */ + public void getCvsInfo(){ + User user= UserUtil.getCurrentUser(getPara("token"),getHeader("source")); + R r=ps.getCvsInfo(user.getLong(User.ID)); + renderJson(r); + } + + /** + * 个人中心数据 + * @return + */ + public void center(){ + User user= UserUtil.getCurrentUser(getPara("token"),getHeader("source")); + R r=ps.center(user.getLong(User.ID)); + renderJson(r); + } + + /** + * 获取收益数据 + */ + public void getWallet(){ + User user= UserUtil.getCurrentUser(getPara("token"),getHeader("source")); + R r=ps.getWallet(user.getLong(User.ID)); + renderJson(r); + } } diff --git a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java index 8fd2511..d6938c8 100644 --- a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java +++ b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java @@ -10,15 +10,15 @@ import com.jfinal.plugin.ehcache.CacheKit; import com.tianpengtech.common.model.fair.Fair; import com.tianpengtech.common.model.fairauth.FairAuth; import com.tianpengtech.common.model.fairext.FairExt; +import com.tianpengtech.common.model.moneylog.MoneyLog; +import com.tianpengtech.common.model.task.Task; +import com.tianpengtech.common.model.task.TaskWh; import com.tianpengtech.common.model.user.User; import com.tianpengtech.front.mobile.common.util.R; import com.tianpengtech.front.mobile.common.util.U; import com.tianpengtech.front.web.fair.FairService; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; /** * Created by ggd on 2017/7/24 0024. @@ -328,4 +328,115 @@ public class MobilePassportService { r.p("auths",list); return r; } + + + /** + * 获取点击数详情 + * @return + */ + public R getClickInfo(long id){ + List<TaskWh> order=TaskWh.dao.findByCache(TaskWh.CACHE_NAME_NO,"cache_taskwh_click_no","SELECT wh_id, sum(click_num) FROM "+TaskWh.dao.tableName()+" GROUP BY wh_id ORDER BY sum(click_num) desc"); + int no=0; + for (int i = 0; i <order.size() ; i++) { + TaskWh tw=order.get(i); + if (tw.getInt(TaskWh.WH_ID).intValue()==id){ + no=(i+1); + break; + } + } + R r = R.ok(); + r.p("no",no); + //获取点击详情 + List<TaskWh> taskwhs=TaskWh.dao.find("select task.`status`,task.id,task.task_title,tw.click_num from "+TaskWh.dao.tableName()+" tw LEFT JOIN "+ Task.dao.tableName()+" task on tw.task_id=task.id where tw.deletetag=0 and tw.wh_id=?",id); + long sum=0; + for (TaskWh taskWh:taskwhs) { + sum+=(taskWh.getInt("click_num")); + } + r.p("list",taskwhs); + r.p("sum",sum); + return r; + } + + + /** + * 获取转化数详情 + * @return + */ + public R getCvsInfo(long id){ + List<TaskWh> order=TaskWh.dao.findByCache(TaskWh.CACHE_NAME_NO,"cache_taskwh_click_no","SELECT wh_id, sum(cvs_num) FROM "+TaskWh.dao.tableName()+" GROUP BY wh_id ORDER BY sum(cvs_num) desc"); + int no=0; + for (int i = 0; i <order.size() ; i++) { + TaskWh tw=order.get(i); + if (tw.getInt(TaskWh.WH_ID).intValue()==id){ + no=(i+1); + break; + } + } + R r = R.ok(); + r.p("no",no); + //获取转化详情 + List<TaskWh> taskwhs=TaskWh.dao.find("select task.`status`,task.id,task.task_title,tw.cvs_num from "+TaskWh.dao.tableName()+" tw LEFT JOIN "+ Task.dao.tableName()+" task on tw.task_id=task.id where tw.deletetag=0 and tw.wh_id=?",id); + long sum=0; + for (TaskWh taskWh:taskwhs) { + sum+=(taskWh.getInt("cvs_num")); + } + r.p("list",taskwhs); + r.p("sum",sum); + return r; + } + + /** + * 个人中心 + * @param id + * @return + */ + public R center(long id){ + Fair fair=Fair.dao.findFirst("select * from "+Fair.dao.tableName()+" where " +Fair.DELETETAG + "=? and "+Fair.ID+"=?",0,id); + if (fair==null){ + return R.fail("用户不存在"); + } + R r=R.ok(); + r.p("status",fair.get(Fair.STATUS)); + r.p("click",fair.getClick()); + r.p("cvs",fair.getCvs()); + return r; + } + + /** + * 我的钱包 + * @return + */ + public R getWallet(long id){ + //获取可用余额 昨日收益 总收益 + Fair fair=Fair.dao.findFirst("select * from "+Fair.dao.tableName()+" where " +Fair.DELETETAG + "=? and "+Fair.ID+"=?",0,id); + if (fair==null){ + return R.fail("用户不存在"); + } + R r=R.ok(); + r.p("money",fair.get(Fair.MONEY)); + MoneyLog log=MoneyLog.dao.findFirst("select SUM(money) as money from "+MoneyLog.dao.tableName()+" where DATE_FORMAT(create_time, '%Y%m%d')=DATE_FORMAT(?, '%Y%m%d') and wh_id=?",getYesterDay(),id); + if (log==null){ + r.p("yesterday",0); + }else{ + r.p("yesterday",log.get("money")); + } + MoneyLog sumlog=MoneyLog.dao.findFirst("select SUM(money) as money from "+MoneyLog.dao.tableName()+" where wh_id=?",id); + if (log==null){ + r.p("all",0); + }else{ + r.p("all",sumlog.get("money")); + } + return r; + } + + /** + * 获取昨天 + * @return + */ + private Date getYesterDay(){ + Calendar cal=Calendar.getInstance(); + cal.add(Calendar.DATE,-1); + Date time=cal.getTime(); + return time; + } } diff --git a/src/main/java/com/tianpengtech/front/mobile/publisher/MobilePublishController.java b/src/main/java/com/tianpengtech/front/mobile/publisher/MobilePublishController.java new file mode 100644 index 0000000..fda2367 --- /dev/null +++ b/src/main/java/com/tianpengtech/front/mobile/publisher/MobilePublishController.java @@ -0,0 +1,59 @@ +package com.tianpengtech.front.mobile.publisher; + +import com.jfinal.kit.StrKit; +import com.tianpengtech.front.mobile.common.util.R; +import com.tianpengtech.front.web.common.controller.BaseController; + +/** + * Created by ggd on 2017/8/3 0003. + */ +public class MobilePublishController extends BaseController { + + private static MobilePublishService service = MobilePublishService.me; + + /** + * 获取商家信息 + */ + public void getPublish(){ + String id=getPara("id"); + if (StrKit.isBlank(id)){ + renderJson(R.fail("id不能为空")); + return; + } + R r=service.getPublish(id); + renderJson(r); + } + + + /** + * 获取商家任务信息 + */ + public void getPublishTask(){ + String id=getPara("id"); + if (StrKit.isBlank(id)){ + renderJson(R.fail("id不能为空")); + return; + } + int pageNum = getParaToInt("pageNum",1); + int pageSize = getParaToInt("pageSize",5); + R r=service.getPublishTask(pageNum,pageSize,id); + renderJson(r); + } + + + /** + * 获取商家评论信息 + */ + public void getPublishComment(){ + String id=getPara("id"); + if (StrKit.isBlank(id)){ + renderJson(R.fail("id不能为空")); + return; + } + int pageNum = getParaToInt("pageNum",1); + int pageSize = getParaToInt("pageSize",5); + R r=service.getPublishComment(pageNum,pageSize,id); + renderJson(r); + } + +} diff --git a/src/main/java/com/tianpengtech/front/mobile/publisher/MobilePublishService.java b/src/main/java/com/tianpengtech/front/mobile/publisher/MobilePublishService.java new file mode 100644 index 0000000..20a46e6 --- /dev/null +++ b/src/main/java/com/tianpengtech/front/mobile/publisher/MobilePublishService.java @@ -0,0 +1,91 @@ +package com.tianpengtech.front.mobile.publisher; + +import com.jfinal.plugin.activerecord.Page; +import com.tianpengtech.common.model.authenticate.Authenticate; +import com.tianpengtech.common.model.fair.Fair; +import com.tianpengtech.common.model.fairmessage.FairMessage; +import com.tianpengtech.common.model.task.Task; +import com.tianpengtech.common.model.task.TaskWh; +import com.tianpengtech.common.model.user.User; +import com.tianpengtech.front.mobile.common.util.R; + +import java.math.BigDecimal; +import java.text.DecimalFormat; +import java.util.List; + +/** + * Created by ggd on 2017/8/3 0003. + */ +public class MobilePublishService { + public static MobilePublishService me = new MobilePublishService(); + private static Authenticate authDao = Authenticate.dao; + private static Task taskDao = Task.dao; + /** + * 获取商家详情信息 + * @param id + * @return + */ + public R getPublish(String id){ + String sql = String.format("select id,company_name,user_id,status,company_info from %s where %s=? and %s=? and %s=?",authDao.tableName(),Authenticate.DELETETAG,Authenticate.STATUS,Authenticate.USER_ID); + Authenticate auth=authDao.findFirst(sql,Authenticate.DELETE_STATUS_NO,Authenticate.STATUS_SUCCESS,id); + if (auth==null){ + return R.fail("用户不存在"); + } + R r=R.ok(); + r.p("auth",auth); + String taskSql=String.format("select sum(wh.click_num) as click,SUM(wh.cvs_num) as cvs from %s wh left join %s task on task.id=wh.task_id where task.%s=?", TaskWh.dao.tableName(),taskDao.tableName(),Task.CREATE_USER); + Task task=taskDao.findFirst(taskSql,id); + if (task==null){ + r.p("click",0); + r.p("cvs","0.00%"); + } + BigDecimal click=task.get("click"); + BigDecimal cvs=task.get("cvs"); + r.p("click",click.intValue()); + double d=0; + if(cvs!=null){ + d=cvs.doubleValue()/click.doubleValue(); + } + DecimalFormat df=(DecimalFormat) DecimalFormat.getInstance(); + df.applyPattern("##.##%"); + r.p("cvs",df.format(d)); + return r; + } + + /** + * 获取商家发布的任务 + * @param id + * @return + */ + public R getPublishTask(int pageNum, int length,String id){ + String select="select id,task_title,status"; + String sql = String.format(" from %s where %s=? and %s=? and %s>=? order by %s desc",taskDao.tableName(),Task.DELETETAG,Task.CREATE_USER,Task.STATUS,Task.CREATE_TIME); + Page<Task> page=taskDao.paginate(pageNum,length,select,sql,Task.DELETE_STATUS_NO,id,Task.STATUS_SUCCESS); + R r = R.ok("成功"); + r.p("count",page.getTotalRow()); + r.p("pageNum",page.getPageNumber()); + r.p("list",page.getList()); + return r; + } + + + /** + * 获取商家的评论 + * @param pageNum + * @param length + * @param id + * @return + */ + public R getPublishComment(int pageNum, int length,String id){ + String select="select wh.evaluate_whom,wh.whom_date,fwh.nick_name,fwh.photo,fwh.id"; + String sql = String.format("from %s wh left join %s task on task.id=wh.task_id LEFT JOIN %s fwh on wh.wh_id = fwh.id where task.create_user=? and wh.evaluate_whom is not null order by wh.%s desc",TaskWh.dao.tableName(),taskDao.tableName(), Fair.dao.tableName(), TaskWh.WHOM_DATE); + Page<Task> page=taskDao.paginate(pageNum,length,select,sql,id); + R r = R.ok("成功"); + r.p("count",page.getTotalRow()); + r.p("pageNum",page.getPageNumber()); + r.p("list",page.getList()); + return r; + } + + +} diff --git a/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskController.java b/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskController.java index 65c2d32..b5497d9 100644 --- a/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskController.java +++ b/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskController.java @@ -55,4 +55,18 @@ public class MobileTaskController extends BaseController { R r=service.getTask(Long.parseLong(id),user.getLong(User.ID)); renderJson(r); } + + /** + * 接受任务 + */ + public void acceptTask(){ + String id = getPara("id");//任务ID + if (!U.isInteger(id)){ + renderJson(R.fail("id格式不正确")); + return; + } + User user= UserUtil.getCurrentUser(getPara("token"),getHeader("source")); + R r=service.acceptTask(id,user.getLong(User.ID)); + renderJson(r); + } } diff --git a/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskService.java b/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskService.java index 67aaaa9..635e7e2 100644 --- a/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskService.java +++ b/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskService.java @@ -1,5 +1,6 @@ package com.tianpengtech.front.mobile.task; +import com.jfinal.kit.Ret; import com.jfinal.kit.StrKit; import com.jfinal.plugin.activerecord.Page; import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ; @@ -125,4 +126,19 @@ public class MobileTaskService { } return r; } + + /** + * 接受任务 + * @param taskId + * @param uid + * @return + */ + public R acceptTask(String taskId,long uid){ + Ret ret=taskService.saveTaskWait(new String[]{uid+""},taskId); + if (ret.isOk()){ + return R.ok(); + }else{ + return R.fail(ret.getStr("msg")); + } + } } diff --git a/src/main/java/com/tianpengtech/front/web/passport/PassportService.java b/src/main/java/com/tianpengtech/front/web/passport/PassportService.java index 432a91e..65a1d2f 100644 --- a/src/main/java/com/tianpengtech/front/web/passport/PassportService.java +++ b/src/main/java/com/tianpengtech/front/web/passport/PassportService.java @@ -8,6 +8,7 @@ import com.jfinal.plugin.ehcache.CacheKit; import com.tianpengtech.common.exception.ValidateException; import com.tianpengtech.common.model.authenticate.Authenticate; import com.tianpengtech.common.model.user.User; +import com.tianpengtech.common.util.SendSmsMsg; import com.tianpengtech.common.validator.Validator; import com.tianpengtech.common.validator.rules.string.StringLengthBetween; import com.tianpengtech.common.validator.rules.string.StringMustBeMobile; @@ -79,7 +80,6 @@ public class PassportService { * 发送手机验证码 */ public Ret sendAuthCode(String mobile,String ip){ - boolean devModel = PropKit.getBoolean("devMode"); //防止恶意发送验证码 //缓存过期时间为5分钟, 5分钟内超过5次就不允许发送了 Integer count=CacheKit.get(User.AUTH_CODE_CACHENAME,ip+mobile+"_count"); @@ -94,12 +94,16 @@ public class PassportService { //防止恶意发送验证码结束 int code=(int)((Math.random()*9+1)*100000); CacheKit.put(User.AUTH_CODE_CACHENAME,ip+mobile,code); - if (!devModel){ + if (SendSmsMsg.isSend){ //发送短信验证码 + if (SendSmsMsg.send(mobile,code+"")){ + return Ret.ok(); + }else{ + return Ret.fail(); + } + }else { + return Ret.ok("code",code); } - - return Ret.ok("code",code); - } /** diff --git a/src/main/resources/ehcache.xml b/src/main/resources/ehcache.xml index b1ea61e..e28a1b3 100644 --- a/src/main/resources/ehcache.xml +++ b/src/main/resources/ehcache.xml @@ -255,4 +255,15 @@ overflowToDisk="true" diskPersistent="true" /> + + <!--存放网红点击数排名--> + <cache name="taskwh_no" + maxElementsInMemory="10000" + maxElementsOnDisk="100000" + eternal="false" + timeToIdleSeconds="86400" + timeToLiveSeconds="0" + overflowToDisk="true" + diskPersistent="true" + /> </ehcache> \ No newline at end of file diff --git a/src/main/resources/sms.properties b/src/main/resources/sms.properties new file mode 100644 index 0000000..593b0a2 --- /dev/null +++ b/src/main/resources/sms.properties @@ -0,0 +1,5 @@ +url = http://183.129.129.134:8081/api/template/sms/send +userid = 10003 +apikey = d73376b0b813442a91c0337556e8d8b1 +templateid = 16 +isSend = false \ No newline at end of file -- Gitee From 10ebe9ebf5453b27c4fe3c0a889ecce38bac7529 Mon Sep 17 00:00:00 2001 From: "994856170@qq.com" <ggd1994> Date: Fri, 4 Aug 2017 15:43:14 +0800 Subject: [PATCH 09/13] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E9=98=BF=E9=87=8C?= =?UTF-8?q?=E4=BA=91SMS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pom.xml b/pom.xml index 589aa61..4c946f3 100644 --- a/pom.xml +++ b/pom.xml @@ -245,6 +245,14 @@ <artifactId>uasparser</artifactId> <version>0.6.2</version> </dependency> + + + <!--发送阿里云短信--> + <dependency> + <groupId>com.aliyun</groupId> + <artifactId>aliyun-java-sdk-core</artifactId> + <version>3.2.6</version> + </dependency> </dependencies> <build> <finalName>fair</finalName> -- Gitee From 25a09ba8b2f33da2e0288009d10e5c4ede001374 Mon Sep 17 00:00:00 2001 From: "994856170@qq.com" <ggd1994> Date: Sat, 5 Aug 2017 19:56:03 +0800 Subject: [PATCH 10/13] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=89=A9=E4=BD=99API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/tianpengtech/common/MyConfig.java | 6 + .../common/generator/app/Generator.java | 2 +- .../fairadvertisement/FairAdvertisement.java | 30 +++ .../common/model/fairreport/FairReport.java | 32 +++ .../model/fairwithdraw/FairWithdraw.java | 34 +++ .../tianpengtech/common/util/SendSmsMsg.java | 211 +++++++++++++----- .../front/mobile/MobileRoutes.java | 4 + .../MobileAdvertisementController.java | 19 ++ .../MobileAdvertisementService.java | 26 +++ .../mobile/bankno/MobileBanknoService.java | 34 +++ .../mobile/common/constant/Constant.java | 1 + .../front/mobile/common/util/U.java | 15 +- .../moneylog/MobileMoenyLogService.java | 27 +++ .../moneylog/MobileMoneyLogController.java | 26 +++ .../passport/MobilePassportController.java | 44 ++++ .../passport/MobilePassportService.java | 74 ++++++ .../publisher/MobilePublishController.java | 37 ++- .../publisher/MobilePublishService.java | 32 +++ .../front/mobile/task/MobileTaskService.java | 4 +- .../front/web/fair/FairService.java | 10 + .../tianpengtech/front/web/job/TaskJob.java | 12 +- .../front/web/passport/PassportService.java | 14 ++ .../front/web/task/TaskService.java | 35 ++- src/main/resources/sms.properties | 14 +- ...liyun-java-sdk-dysmsapi-1.0.0-SANPSHOT.jar | Bin 0 -> 17951 bytes 25 files changed, 664 insertions(+), 79 deletions(-) create mode 100644 src/main/java/com/tianpengtech/common/model/fairadvertisement/FairAdvertisement.java create mode 100644 src/main/java/com/tianpengtech/common/model/fairreport/FairReport.java create mode 100644 src/main/java/com/tianpengtech/common/model/fairwithdraw/FairWithdraw.java create mode 100644 src/main/java/com/tianpengtech/front/mobile/advertisement/MobileAdvertisementController.java create mode 100644 src/main/java/com/tianpengtech/front/mobile/advertisement/MobileAdvertisementService.java create mode 100644 src/main/java/com/tianpengtech/front/mobile/moneylog/MobileMoenyLogService.java create mode 100644 src/main/java/com/tianpengtech/front/mobile/moneylog/MobileMoneyLogController.java create mode 100644 src/main/webapp/WEB-INF/lib/aliyun-java-sdk-dysmsapi-1.0.0-SANPSHOT.jar diff --git a/src/main/java/com/tianpengtech/common/MyConfig.java b/src/main/java/com/tianpengtech/common/MyConfig.java index 74f1512..86da728 100644 --- a/src/main/java/com/tianpengtech/common/MyConfig.java +++ b/src/main/java/com/tianpengtech/common/MyConfig.java @@ -19,10 +19,13 @@ import com.tianpengtech.common.model.account.Account; import com.tianpengtech.common.model.authenticate.Authenticate; import com.tianpengtech.common.model.dictionary.Dictionary; import com.tianpengtech.common.model.fair.Fair; +import com.tianpengtech.common.model.fairadvertisement.FairAdvertisement; import com.tianpengtech.common.model.fairauth.FairAuth; import com.tianpengtech.common.model.fairbankno.FairBankno; import com.tianpengtech.common.model.fairext.FairExt; import com.tianpengtech.common.model.fairmessage.FairMessage; +import com.tianpengtech.common.model.fairreport.FairReport; +import com.tianpengtech.common.model.fairwithdraw.FairWithdraw; import com.tianpengtech.common.model.feedback.FeedBack; import com.tianpengtech.common.model.message.Message; import com.tianpengtech.common.model.moneylog.MoneyLog; @@ -145,6 +148,9 @@ public class MyConfig extends JFinalConfig { arp.addMapping(FairExt.dao.tableName(),FairExt.class); arp.addMapping(FairBankno.dao.tableName(),FairBankno.class); arp.addMapping(FairAuth.dao.tableName(),FairAuth.class); + arp.addMapping(FairWithdraw.dao.tableName(),FairWithdraw.class); + arp.addMapping(FairReport.dao.tableName(),FairReport.class); + arp.addMapping(FairAdvertisement.dao.tableName(),FairAdvertisement.class); EhCachePlugin cachePlugin = new EhCachePlugin(); me.add(cachePlugin); } diff --git a/src/main/java/com/tianpengtech/common/generator/app/Generator.java b/src/main/java/com/tianpengtech/common/generator/app/Generator.java index 55c802a..0587616 100644 --- a/src/main/java/com/tianpengtech/common/generator/app/Generator.java +++ b/src/main/java/com/tianpengtech/common/generator/app/Generator.java @@ -232,7 +232,7 @@ public class Generator { Engine engine = engineConfig(); // Generator.excute(engine,".user", "User", "fair_user", "用户表"); // Generator.excute(engine,".authenticate", "Authenticate", "fair_user_authenticate", "用户认证表"); - Generator.excute(engine,".fair", "FairAuth", "fair_wh_auth", "网红认证表"); + Generator.excute(engine,".fair", "FairAdvertisement", "fair_advertisement", "广告信息表"); // Generator.excute(engine,".wh", "Fair", "fair_wh", "网红表"); // Generator.excute(engine,".feedback", "FeedBack", "fair_feedback", "反馈表"); diff --git a/src/main/java/com/tianpengtech/common/model/fairadvertisement/FairAdvertisement.java b/src/main/java/com/tianpengtech/common/model/fairadvertisement/FairAdvertisement.java new file mode 100644 index 0000000..3dfe7a5 --- /dev/null +++ b/src/main/java/com/tianpengtech/common/model/fairadvertisement/FairAdvertisement.java @@ -0,0 +1,30 @@ +package com.tianpengtech.common.model.fairadvertisement; +import com.tianpengtech.common.model.AbstractBaseModel; +/** + *实体类名-广告信息表 + * fair_advertisement + * + * @since Sat Aug 05 13:55:45 CST 2017 + */ +public class FairAdvertisement extends AbstractBaseModel< FairAdvertisement > { + + /** + * + */ + private static final long serialVersionUID = 1L; + public static final FairAdvertisement dao = new FairAdvertisement(); + + + public static final String ID ="id"; // + public static final String PICTURE ="picture"; //广告图片 + public static final String URL ="url"; //点击url + public static final String DELETETAG ="deletetag"; // + public static final String CREATE_TIME ="create_time"; //添加时间 + + + @Override + public String tableName() { + return "fair_advertisement"; + } + +} \ No newline at end of file diff --git a/src/main/java/com/tianpengtech/common/model/fairreport/FairReport.java b/src/main/java/com/tianpengtech/common/model/fairreport/FairReport.java new file mode 100644 index 0000000..a41e1c1 --- /dev/null +++ b/src/main/java/com/tianpengtech/common/model/fairreport/FairReport.java @@ -0,0 +1,32 @@ +package com.tianpengtech.common.model.fairreport; +import com.tianpengtech.common.model.AbstractBaseModel; +/** + *实体类名-举报信息表 + * fair_report + * + * @since Sat Aug 05 13:55:06 CST 2017 + */ +public class FairReport extends AbstractBaseModel< FairReport > { + + /** + * + */ + private static final long serialVersionUID = 1L; + public static final FairReport dao = new FairReport(); + + + public static final String ID ="id"; // + public static final String CONTENT ="content"; //举报内容 + public static final String CREATE_TIME ="create_time"; // + public static final String STATUS ="status"; //状态 + public static final String USER_ID ="user_id"; //被举报人ID + public static final String FAIR_ID ="fair_id"; //举报人ID + public static final String CONTENT_ID ="content_id"; //数据字典表ID,如果该字段为空则填入content字段 + + + @Override + public String tableName() { + return "fair_report"; + } + +} \ No newline at end of file diff --git a/src/main/java/com/tianpengtech/common/model/fairwithdraw/FairWithdraw.java b/src/main/java/com/tianpengtech/common/model/fairwithdraw/FairWithdraw.java new file mode 100644 index 0000000..168888b --- /dev/null +++ b/src/main/java/com/tianpengtech/common/model/fairwithdraw/FairWithdraw.java @@ -0,0 +1,34 @@ +package com.tianpengtech.common.model.fairwithdraw; +import com.tianpengtech.common.model.AbstractBaseModel; +/** + *实体类名-网红提现表 + * fair_wh_withdraw + * + * @since Sat Aug 05 13:53:05 CST 2017 + */ +public class FairWithdraw extends AbstractBaseModel< FairWithdraw > { + + /** + * + */ + private static final long serialVersionUID = 1L; + public static final FairWithdraw dao = new FairWithdraw(); + + + public static final String ID ="id"; // + public static final String WH_ID ="wh_id"; //网红id + public static final String MONEY ="money"; //提现金额 + public static final String CREATE_TIME ="create_time"; //提交时间 + public static final String HANDLE_TIME ="handle_time"; // + public static final String BANK_ID ="bank_id"; //银行卡表ID + public static final String STATUS ="status"; //状态 + + public static final int STATUS_APPROVING=1; //等待审核 + + + @Override + public String tableName() { + return "fair_wh_withdraw"; + } + +} \ No newline at end of file diff --git a/src/main/java/com/tianpengtech/common/util/SendSmsMsg.java b/src/main/java/com/tianpengtech/common/util/SendSmsMsg.java index b4a3f35..3fe46d7 100644 --- a/src/main/java/com/tianpengtech/common/util/SendSmsMsg.java +++ b/src/main/java/com/tianpengtech/common/util/SendSmsMsg.java @@ -3,6 +3,13 @@ package com.tianpengtech.common.util; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.aliyuncs.DefaultAcsClient; +import com.aliyuncs.IAcsClient; +import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest; +import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse; +import com.aliyuncs.exceptions.ClientException; +import com.aliyuncs.profile.DefaultProfile; +import com.aliyuncs.profile.IClientProfile; import com.jfinal.kit.Prop; import com.tianpengtech.front.mobile.common.util.ToolMD5; @@ -11,82 +18,162 @@ import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; + + /** * Created by ggd on 2017/8/1 0001. */ public class SendSmsMsg { - private static Prop prop = new Prop("sms.properties"); - public static final String URL=prop.get("url"); - public static final String USERID=prop.get("userid"); - public static final String APIKEY=prop.get("apikey"); - public static final String TEMPLATEID=prop.get("templateid"); public static final boolean isSend=prop.getBoolean("isSend"); + //产品名称:云通信短信API产品,开发者无需替换 + private static final String product = "Dysmsapi"; + //产品域名,开发者无需替换 + private static final String domain = "dysmsapi.aliyuncs.com"; + // static final String accessKeyId = "LTAIvQPdztlGanRB"; +// static final String accessKeySecret = "KSxwLrQR7BdijGWYzGv21T3HTwTvMO"; + private static final String accessKeyId = prop.get("accessKeyId"); + private static final String accessKeySecret = prop.get("accessKeySecret"); public static boolean send(String mobile,String code) { - + IClientProfile profile = DefaultProfile.getProfile("cn-beijing", accessKeyId, accessKeySecret); try { - //创建连接 - java.net.URL url = new URL(URL); - HttpURLConnection connection = (HttpURLConnection) url - .openConnection(); - connection.setDoOutput(true); - connection.setDoInput(true); - connection.setRequestMethod("POST"); - connection.setUseCaches(false); - connection.setInstanceFollowRedirects(true); - connection.setRequestProperty("Content-Type", - "application/x-www-form-urlencoded"); - - connection.connect(); - - //POST请求 - DataOutputStream out = new DataOutputStream( - connection.getOutputStream()); - JSONObject obj = new JSONObject(); - obj.put("userid",USERID); - long time=System.currentTimeMillis(); - obj.put("ts", time); - obj.put("sign", ToolMD5.encodeMD5Hex(USERID+time+APIKEY) ); - obj.put("mobile",mobile); - obj.put("templateid",TEMPLATEID); - JSONArray arr = new JSONArray(); - arr.add(code); - obj.put("templateparam",arr); - out.writeBytes(obj.toJSONString()); - out.flush(); - out.close(); - //读取响应 - BufferedReader reader = new BufferedReader(new InputStreamReader( - connection.getInputStream())); - String lines; - StringBuffer sb = new StringBuffer(""); - while ((lines = reader.readLine()) != null) { - lines = new String(lines.getBytes(), "utf-8"); - sb.append(lines); - } - reader.close(); - // 断开连接 - connection.disconnect(); - JSONObject obj1=JSON.parseObject(sb.toString()); - if (obj1.getIntValue("code")==0){ - return true; - }else{ - return false; - } - } catch (MalformedURLException e) { - // TODO Auto-generated catch block + DefaultProfile.addEndpoint("cn-beijing", "cn-beijing", product, domain); + } catch (ClientException e) { e.printStackTrace(); return false; - } catch (UnsupportedEncodingException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - return false; - } catch (IOException e) { - // TODO Auto-generated catch block + } + IAcsClient acsClient = new DefaultAcsClient(profile); + SendSmsRequest request = new SendSmsRequest(); + request.setPhoneNumbers(mobile); +// request.setSignName("铂数网络"); +// request.setTemplateCode("SMS_76595520"); + request.setSignName(prop.get("signName")); + request.setTemplateCode(prop.get("templateCode")); + request.setTemplateParam("{\"code\":\""+code+"\"}"); + SendSmsResponse sendSmsResponse = null; + try { + sendSmsResponse = acsClient.getAcsResponse(request); + } catch (ClientException e) { e.printStackTrace(); return false; } + if(sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) { + return true; + } + return false; } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +// private static Prop prop = new Prop("sms.properties"); +// public static final String URL=prop.get("url"); +// public static final String USERID=prop.get("userid"); +// public static final String APIKEY=prop.get("apikey"); +// public static final String TEMPLATEID=prop.get("templateid"); +// public static final boolean isSend=prop.getBoolean("isSend"); +// +// public static boolean send(String mobile,String code) { +// +// try { +// //创建连接 +// java.net.URL url = new URL(URL); +// HttpURLConnection connection = (HttpURLConnection) url +// .openConnection(); +// connection.setDoOutput(true); +// connection.setDoInput(true); +// connection.setRequestMethod("POST"); +// connection.setUseCaches(false); +// connection.setInstanceFollowRedirects(true); +// connection.setRequestProperty("Content-Type", +// "application/x-www-form-urlencoded"); +// +// connection.connect(); +// +// //POST请求 +// DataOutputStream out = new DataOutputStream( +// connection.getOutputStream()); +// JSONObject obj = new JSONObject(); +// obj.put("userid",USERID); +// long time=System.currentTimeMillis(); +// obj.put("ts", time); +// obj.put("sign", ToolMD5.encodeMD5Hex(USERID+time+APIKEY) ); +// obj.put("mobile",mobile); +// obj.put("templateid",TEMPLATEID); +// JSONArray arr = new JSONArray(); +// arr.add(code); +// obj.put("templateparam",arr); +// out.writeBytes(obj.toJSONString()); +// out.flush(); +// out.close(); +// //读取响应 +// BufferedReader reader = new BufferedReader(new InputStreamReader( +// connection.getInputStream())); +// String lines; +// StringBuffer sb = new StringBuffer(""); +// while ((lines = reader.readLine()) != null) { +// lines = new String(lines.getBytes(), "utf-8"); +// sb.append(lines); +// } +// reader.close(); +// // 断开连接 +// connection.disconnect(); +// JSONObject obj1=JSON.parseObject(sb.toString()); +// if (obj1.getIntValue("code")==0){ +// return true; +// }else{ +// return false; +// } +// } catch (MalformedURLException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// return false; +// } catch (UnsupportedEncodingException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// return false; +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// return false; +// } +// } + + + + + + } diff --git a/src/main/java/com/tianpengtech/front/mobile/MobileRoutes.java b/src/main/java/com/tianpengtech/front/mobile/MobileRoutes.java index bbcd3ce..062a35c 100644 --- a/src/main/java/com/tianpengtech/front/mobile/MobileRoutes.java +++ b/src/main/java/com/tianpengtech/front/mobile/MobileRoutes.java @@ -1,11 +1,13 @@ package com.tianpengtech.front.mobile; import com.jfinal.config.Routes; +import com.tianpengtech.front.mobile.advertisement.MobileAdvertisementController; import com.tianpengtech.front.mobile.bankno.MobileBanknoController; import com.tianpengtech.front.mobile.common.intercepter.MobileRequestInterceptor; import com.tianpengtech.front.mobile.common.intercepter.TokenCheckInterceptor; import com.tianpengtech.front.mobile.login.MobileLoginController; import com.tianpengtech.front.mobile.message.MobileMessageController; +import com.tianpengtech.front.mobile.moneylog.MobileMoneyLogController; import com.tianpengtech.front.mobile.passport.MobilePassportController; import com.tianpengtech.front.mobile.publisher.MobilePublishController; import com.tianpengtech.front.mobile.region.MobileRegionController; @@ -29,5 +31,7 @@ public class MobileRoutes extends Routes { add("/api/bankno", MobileBanknoController.class); add("/api/task", MobileTaskController.class); add("/api/publish", MobilePublishController.class); + add("/api/mas",MobileAdvertisementController.class); + add("/api/moneylog",MobileMoneyLogController.class); } } diff --git a/src/main/java/com/tianpengtech/front/mobile/advertisement/MobileAdvertisementController.java b/src/main/java/com/tianpengtech/front/mobile/advertisement/MobileAdvertisementController.java new file mode 100644 index 0000000..3023867 --- /dev/null +++ b/src/main/java/com/tianpengtech/front/mobile/advertisement/MobileAdvertisementController.java @@ -0,0 +1,19 @@ +package com.tianpengtech.front.mobile.advertisement; + +import com.tianpengtech.front.mobile.common.util.R; +import com.tianpengtech.front.web.common.controller.BaseController; + +/** + * Created by ggd on 2017/8/5 0005. + */ +public class MobileAdvertisementController extends BaseController { + private static MobileAdvertisementService mas = MobileAdvertisementService.me; + + /** + * 获取首页展示的广告信息 + */ + public void index(){ + R r = mas.index(); + renderJson(r); + } +} diff --git a/src/main/java/com/tianpengtech/front/mobile/advertisement/MobileAdvertisementService.java b/src/main/java/com/tianpengtech/front/mobile/advertisement/MobileAdvertisementService.java new file mode 100644 index 0000000..444a99e --- /dev/null +++ b/src/main/java/com/tianpengtech/front/mobile/advertisement/MobileAdvertisementService.java @@ -0,0 +1,26 @@ +package com.tianpengtech.front.mobile.advertisement; + +import com.tianpengtech.common.model.fairadvertisement.FairAdvertisement; +import com.tianpengtech.common.model.fairreport.FairReport; +import com.tianpengtech.front.mobile.common.util.R; + +import java.util.List; + +/** + * Created by ggd on 2017/8/5 0005. + */ +public class MobileAdvertisementService { + public static MobileAdvertisementService me = new MobileAdvertisementService(); + + /** + * 获取首页显示的广告信息 + * @return + */ + public R index(){ + String sql = String.format("select %s,%s,%s from %s where %s=? order by %s desc",FairAdvertisement.ID,FairAdvertisement.PICTURE,FairAdvertisement.URL,FairAdvertisement.dao.tableName(),FairAdvertisement.DELETETAG,FairAdvertisement.CREATE_TIME); + List<FairAdvertisement> advs=FairAdvertisement.dao.find(sql,0); + R r= R.ok(); + r.p("list",advs); + return r; + } +} diff --git a/src/main/java/com/tianpengtech/front/mobile/bankno/MobileBanknoService.java b/src/main/java/com/tianpengtech/front/mobile/bankno/MobileBanknoService.java index 6a96ea4..aa29369 100644 --- a/src/main/java/com/tianpengtech/front/mobile/bankno/MobileBanknoService.java +++ b/src/main/java/com/tianpengtech/front/mobile/bankno/MobileBanknoService.java @@ -26,6 +26,9 @@ public class MobileBanknoService { String bank=param.get("bank"); String bank_no=param.get("bank_no"); String real_name=param.get("real_name"); + if (isBankNoExists(bank_no,Long.parseLong(wh_id))){ + return R.fail("此银行卡已添加过"); + } FairBankno fb = new FairBankno(); fb.set(FairBankno.WH_ID,wh_id); fb.set(FairBankno.BANK,bank); @@ -55,4 +58,35 @@ public class MobileBanknoService { return r; } + /** + * 判断用的银行卡是否添加过 + * @param bankNo + * @param uid + * @return + */ + public boolean isBankNoExists(String bankNo,long uid){ + String sql = String.format("select %s from %s where %s=? and %s=? and %s=?",FairBankno.ID,dao.tableName(),FairBankno.DELETETAG,FairBankno.WH_ID,FairBankno.BANK_NO); + FairBankno no=dao.findFirst(sql,0,uid,bankNo); + if (no==null){ + return false; + }else{ + return true; + } + } + + + /** + * 判断用的银行卡是否添加过 + * @return + */ + public boolean isBankNoExists(String bankId){ + String sql = String.format("select %s from %s where %s=? and %s=?",FairBankno.ID,dao.tableName(),FairBankno.DELETETAG,FairBankno.ID); + FairBankno no=dao.findFirst(sql,0,bankId); + if (no==null){ + return false; + }else{ + return true; + } + } + } diff --git a/src/main/java/com/tianpengtech/front/mobile/common/constant/Constant.java b/src/main/java/com/tianpengtech/front/mobile/common/constant/Constant.java index 8949bde..d3fbabe 100644 --- a/src/main/java/com/tianpengtech/front/mobile/common/constant/Constant.java +++ b/src/main/java/com/tianpengtech/front/mobile/common/constant/Constant.java @@ -9,4 +9,5 @@ public class Constant { public static final String REGEX_MOBILE = "^((17[0-9])|(14[0-9])|(13[0-9])|(15[^4,\\D])|(18[0-9]))\\d{8}$"; public static final String REGEX_INTERGER = "^\\d+$"; + public static final String REGEX_MONEY = "(^[1-9]([0-9]+)?(\\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\\.[0-9]([0-9])?$)"; } diff --git a/src/main/java/com/tianpengtech/front/mobile/common/util/U.java b/src/main/java/com/tianpengtech/front/mobile/common/util/U.java index 3454a9e..4af4aa5 100644 --- a/src/main/java/com/tianpengtech/front/mobile/common/util/U.java +++ b/src/main/java/com/tianpengtech/front/mobile/common/util/U.java @@ -37,9 +37,22 @@ public class U { } } + public static boolean isMoney(String val){ + if (StrKit.isBlank(val)){ + return false; + } + Pattern pattern = Pattern.compile(Constant.REGEX_MONEY); + Matcher matcher = pattern.matcher(val); + if(matcher.matches()) { + return true; + }else{ + return false; + } + } + public static void main(String[] args) { - System.out.println(isInteger("111111")); + System.out.println(isMoney("015.15")); } diff --git a/src/main/java/com/tianpengtech/front/mobile/moneylog/MobileMoenyLogService.java b/src/main/java/com/tianpengtech/front/mobile/moneylog/MobileMoenyLogService.java new file mode 100644 index 0000000..cd02bb2 --- /dev/null +++ b/src/main/java/com/tianpengtech/front/mobile/moneylog/MobileMoenyLogService.java @@ -0,0 +1,27 @@ +package com.tianpengtech.front.mobile.moneylog; + +import com.jfinal.plugin.activerecord.Page; +import com.tianpengtech.common.model.moneylog.MoneyLog; +import com.tianpengtech.front.mobile.common.util.R; + +/** + * Created by ggd on 2017/8/5 0005. + */ +public class MobileMoenyLogService { + public static MobileMoenyLogService me = new MobileMoenyLogService(); + + /** + * 分页获取金钱日志 + * @return + */ + public R list(int pageNum, int length,long uid){ + String select = "select * "; + String sql = String.format(" from %s where %s=? and %s=? order by %s desc", MoneyLog.dao.tableName(),MoneyLog.DELETETAG,MoneyLog.WH_ID,MoneyLog.CREATE_TIME); + Page<MoneyLog> page=MoneyLog.dao.paginate(pageNum,length,select,sql.toString(),0,uid); + R r= R.ok(); + r.p("count",page.getTotalRow()); + r.p("pageNum",page.getPageNumber()); + r.p("list",page.getList()); + return r; + } +} diff --git a/src/main/java/com/tianpengtech/front/mobile/moneylog/MobileMoneyLogController.java b/src/main/java/com/tianpengtech/front/mobile/moneylog/MobileMoneyLogController.java new file mode 100644 index 0000000..11aff69 --- /dev/null +++ b/src/main/java/com/tianpengtech/front/mobile/moneylog/MobileMoneyLogController.java @@ -0,0 +1,26 @@ +package com.tianpengtech.front.mobile.moneylog; + +import com.jfinal.kit.StrKit; +import com.tianpengtech.common.model.user.User; +import com.tianpengtech.front.mobile.common.util.R; +import com.tianpengtech.front.mobile.common.util.UserUtil; +import com.tianpengtech.front.web.common.controller.BaseController; + +/** + * Created by ggd on 2017/8/5 0005. + */ +public class MobileMoneyLogController extends BaseController { + private static MobileMoenyLogService service = MobileMoenyLogService.me; + /** + * 获取金钱日志 + */ + public void index(){ + int pageNum = getParaToInt("pageNum",1); + int pageSize = getParaToInt("pageSize",5); + User user= UserUtil.getCurrentUser(getPara("token"),getHeader("source")); + long uid=user.getLong(User.ID); + R r=service.list(pageNum,pageSize,uid); + renderJson(r); + } + +} diff --git a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java index 2209664..fee7fee 100644 --- a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java +++ b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java @@ -5,6 +5,7 @@ import com.jfinal.kit.StrKit; import com.jfinal.plugin.activerecord.tx.Tx; import com.tianpengtech.common.model.user.User; import com.tianpengtech.front.mobile.common.util.R; +import com.tianpengtech.front.mobile.common.util.U; import com.tianpengtech.front.mobile.common.util.UserUtil; import com.tianpengtech.front.web.common.controller.BaseController; @@ -169,4 +170,47 @@ public class MobilePassportController extends BaseController{ R r=ps.getWallet(user.getLong(User.ID)); renderJson(r); } + + /** + * 验证交易密码是否正确 + */ + public void checkNowTranPwd(){ + String tranPwd = getPara("tranPwd"); + if (StrKit.isBlank(tranPwd)){ + renderJson(R.fail("交易密码不能为空")); + return; + } + User user= UserUtil.getCurrentUser(getPara("token"),getHeader("source")); + R r=ps.checkTranPwd(tranPwd,user.getLong(User.ID)); + renderJson(r); + } + + /** + * 提现 + */ + @Before(Tx.class) + public void withdraw(){ + String money = getPara("money"); + String bankId = getPara("bankId"); + String wdToken = getPara("wdToken"); + User user= UserUtil.getCurrentUser(getPara("token"),getHeader("source")); + if (StrKit.isBlank(wdToken)){ + renderJson(R.fail("wdToken不能为空")); + return; + } + if (StrKit.isBlank(bankId)){ + renderJson(R.fail("bankId不能为空")); + return; + } + if (StrKit.isBlank(money)){ + renderJson(R.fail("money不能为空")); + return; + } + if (!U.isMoney(money)){ + renderJson(R.fail("提现金额格式不正确")); + return; + } + R r=ps.withdraw(money,user.getLong(User.ID),wdToken,bankId); + renderJson(r); + } } diff --git a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java index d6938c8..9a04f66 100644 --- a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java +++ b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java @@ -10,11 +10,14 @@ import com.jfinal.plugin.ehcache.CacheKit; import com.tianpengtech.common.model.fair.Fair; import com.tianpengtech.common.model.fairauth.FairAuth; import com.tianpengtech.common.model.fairext.FairExt; +import com.tianpengtech.common.model.fairwithdraw.FairWithdraw; import com.tianpengtech.common.model.moneylog.MoneyLog; import com.tianpengtech.common.model.task.Task; import com.tianpengtech.common.model.task.TaskWh; import com.tianpengtech.common.model.user.User; +import com.tianpengtech.front.mobile.bankno.MobileBanknoService; import com.tianpengtech.front.mobile.common.util.R; +import com.tianpengtech.front.mobile.common.util.TokenUtil; import com.tianpengtech.front.mobile.common.util.U; import com.tianpengtech.front.web.fair.FairService; @@ -29,6 +32,8 @@ public class MobilePassportService { private static FairService fairService = new FairService(); private static FairService fs = new FairService(); private static FairAuth authDao= FairAuth.dao; + private static final String TRAN_PWD_CACHE_KEY="tranPwd_"; + private static MobileBanknoService mbs = MobileBanknoService.me; /** * 保存网红信息 * @param param @@ -439,4 +444,73 @@ public class MobilePassportService { Date time=cal.getTime(); return time; } + + /** + * 验证交易密码 + * @param tranPwd + * @param uid + * @return + */ + public R checkTranPwd(String tranPwd,long uid){ + Fair fair=fs.findById(Integer.parseInt(uid+"")); + User user = User.dao.findById(uid); + String nowtranPwd=fair.get(Fair.TRAN_PWD); //数据库中的交易密码 + String salt = user.get(User.SALT); + String hashedPass = HashKit.sha256(salt + tranPwd); //传入的交易密码加密 + if (nowtranPwd.toUpperCase().equals(hashedPass.toUpperCase())){ + R r=R.ok("密码验证成功"); + String token = TokenUtil.getToken(); //在提交提现请求时 需携带此token + CacheKit.put(User.AUTH_CODE_CACHENAME,TRAN_PWD_CACHE_KEY+uid,token); //缓存时间5分钟 + r.p("token", token); + return r; + }else{ + return R.fail("交易密码不正确"); + } + } + + /** + * 提现请求 + * @return + */ + public R withdraw(String money,long uid,String token,String bankId){ + if (!mbs.isBankNoExists(bankId)){ + return R.fail("银行卡不存在"); + } + Fair fair=fs.findById(Integer.parseInt(uid+"")); + Double yue=fair.getDouble(Fair.MONEY); //余额 + double tixian=Double.parseDouble(money); //提现金额 + if (yue ==null || tixian>yue.doubleValue()){ + return R.fail("提现金额超出可用余额"); + } + String cacheToken=CacheKit.get(User.AUTH_CODE_CACHENAME,TRAN_PWD_CACHE_KEY+uid); + if (token.equals(cacheToken)){ + CacheKit.remove(User.AUTH_CODE_CACHENAME,TRAN_PWD_CACHE_KEY+uid); + fair.set(Fair.MONEY,yue.doubleValue()-tixian); + if(fair.update()){ + FairWithdraw fw = new FairWithdraw(); + fw.set(FairWithdraw.BANK_ID,bankId); + fw.set(FairWithdraw.MONEY,tixian); + fw.set(FairWithdraw.WH_ID,uid); + if (fw.save()){ + MoneyLog ml = new MoneyLog(); + ml.set(MoneyLog.WH_ID,uid); + ml.set(MoneyLog.OPERID,fw.get(FairWithdraw.ID)); + ml.set(MoneyLog.STATE, MoneyLog.STATE_REDUCE); + ml.set(MoneyLog.TYPE,MoneyLog.TYPE_TIXIAN); + ml.set(MoneyLog.MONEY,tixian); + ml.set(MoneyLog.DESCRIPTION,"用户提现,金额:"+tixian); + ml.save(); + return R.ok(); + }else { + return R.fail("提现失败"); + } + }else{ + return R.fail("提现失败"); + } + + }else { + return R.fail("token不正确"); + } + + } } diff --git a/src/main/java/com/tianpengtech/front/mobile/publisher/MobilePublishController.java b/src/main/java/com/tianpengtech/front/mobile/publisher/MobilePublishController.java index fda2367..e8c7886 100644 --- a/src/main/java/com/tianpengtech/front/mobile/publisher/MobilePublishController.java +++ b/src/main/java/com/tianpengtech/front/mobile/publisher/MobilePublishController.java @@ -1,7 +1,10 @@ package com.tianpengtech.front.mobile.publisher; import com.jfinal.kit.StrKit; +import com.tianpengtech.admin.dictionary.DictionaryDao; +import com.tianpengtech.common.model.user.User; import com.tianpengtech.front.mobile.common.util.R; +import com.tianpengtech.front.mobile.common.util.UserUtil; import com.tianpengtech.front.web.common.controller.BaseController; /** @@ -10,7 +13,7 @@ import com.tianpengtech.front.web.common.controller.BaseController; public class MobilePublishController extends BaseController { private static MobilePublishService service = MobilePublishService.me; - + private DictionaryDao dictionaryDao = new DictionaryDao(); /** * 获取商家信息 */ @@ -56,4 +59,36 @@ public class MobilePublishController extends BaseController { renderJson(r); } + /** + * 获取举报信息 + */ + public void getReportInfo(){ + R r = R.ok(); + r.p("reports",dictionaryDao.readParents(200100)); + renderJson(r); + } + + /** + * 保存举报信息 + */ + public void saveReport(){ + String content = getPara("content"); + String contentId = getPara("contentId"); + String userId = getPara("userId"); + User user= UserUtil.getCurrentUser(getPara("token"),getHeader("source")); + long uid=user.getLong(User.ID); + if (StrKit.isBlank(content) && StrKit.isBlank(contentId)){ + renderJson(R.fail("请输入举报原因")); + return; + } + if (StrKit.isBlank(userId)){ + renderJson(R.fail("请输入被举报人信息")); + return; + } + R r=service.saveReport(contentId,content,uid,userId); + renderJson(r); + } + + + } diff --git a/src/main/java/com/tianpengtech/front/mobile/publisher/MobilePublishService.java b/src/main/java/com/tianpengtech/front/mobile/publisher/MobilePublishService.java index 20a46e6..ffe8b72 100644 --- a/src/main/java/com/tianpengtech/front/mobile/publisher/MobilePublishService.java +++ b/src/main/java/com/tianpengtech/front/mobile/publisher/MobilePublishService.java @@ -1,13 +1,16 @@ package com.tianpengtech.front.mobile.publisher; +import com.jfinal.kit.StrKit; import com.jfinal.plugin.activerecord.Page; import com.tianpengtech.common.model.authenticate.Authenticate; import com.tianpengtech.common.model.fair.Fair; import com.tianpengtech.common.model.fairmessage.FairMessage; +import com.tianpengtech.common.model.fairreport.FairReport; import com.tianpengtech.common.model.task.Task; import com.tianpengtech.common.model.task.TaskWh; import com.tianpengtech.common.model.user.User; import com.tianpengtech.front.mobile.common.util.R; +import com.tianpengtech.front.web.passport.PassportService; import java.math.BigDecimal; import java.text.DecimalFormat; @@ -20,6 +23,7 @@ public class MobilePublishService { public static MobilePublishService me = new MobilePublishService(); private static Authenticate authDao = Authenticate.dao; private static Task taskDao = Task.dao; + private static PassportService ps = PassportService.me; /** * 获取商家详情信息 * @param id @@ -88,4 +92,32 @@ public class MobilePublishService { } + /** + * 保存举报信息 + * @param contentId 数据字典code + * @param content 其他:举报信息 + * @param uid 举报人ID + * @param userId 被举报人ID + * @return + */ + public R saveReport(String contentId,String content,long uid,String userId){ + if (!ps.isUserIdExists(userId,User.USER_TYPE_PROV)){ + return R.fail("被举报人不存在"); + } + FairReport fr = new FairReport(); + fr.set(FairReport.FAIR_ID,uid); + fr.set(FairReport.USER_ID,userId); + if (StrKit.isBlank(contentId)){ + fr.set(FairReport.CONTENT,content); + }else{ + fr.set(FairReport.CONTENT_ID,contentId); + } + if (fr.save()){ + return R.ok(); + }else{ + return R.fail("保存失败"); + } + } + + } diff --git a/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskService.java b/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskService.java index 635e7e2..9b3ad1b 100644 --- a/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskService.java +++ b/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskService.java @@ -96,7 +96,9 @@ public class MobileTaskService { t.put("dateString",t.getDateString()); } R r = R.ok(); - r.p("task",page); + r.p("count",page.getTotalRow()); + r.p("pageNum",page.getPageNumber()); + r.p("list",page.getList()); return r; } diff --git a/src/main/java/com/tianpengtech/front/web/fair/FairService.java b/src/main/java/com/tianpengtech/front/web/fair/FairService.java index 279b59d..1894f9f 100644 --- a/src/main/java/com/tianpengtech/front/web/fair/FairService.java +++ b/src/main/java/com/tianpengtech/front/web/fair/FairService.java @@ -115,6 +115,16 @@ public class FairService { return fairs; } + /** + * 根据任务ID获取相关所有网红信息 + * @param taskId + * @return + */ + public List<Fair> findByTaskJob(String taskId){ + List<Fair> fairs=fairDao.find("select fair.* from "+ TaskWh.dao.tableName()+" tw left join "+Fair.dao.tableName()+" fair on fair."+Fair.ID+"=tw."+TaskWh.WH_ID+" where tw."+TaskWh.DELETETAG+"=0 and "+TaskWh.TASK_ID +"=?",taskId); + return fairs; + } + /** * 根据任务ID获取白名单的网红信息 * @param taskId diff --git a/src/main/java/com/tianpengtech/front/web/job/TaskJob.java b/src/main/java/com/tianpengtech/front/web/job/TaskJob.java index b9b38ba..a0c3533 100644 --- a/src/main/java/com/tianpengtech/front/web/job/TaskJob.java +++ b/src/main/java/com/tianpengtech/front/web/job/TaskJob.java @@ -1,6 +1,8 @@ package com.tianpengtech.front.web.job; +import com.jfinal.aop.Duang; import com.jfinal.plugin.activerecord.Db; +import com.jfinal.plugin.activerecord.tx.Tx; import com.tianpengtech.common.model.task.Task; import com.tianpengtech.front.web.task.TaskService; import org.quartz.Job; @@ -10,17 +12,13 @@ import org.quartz.JobExecutionException; import java.util.List; /** - * Created by Administrator on 2017/6/21 0021. + * Created by ggd on 2017/6/21 0021. */ public class TaskJob implements Job { - private static TaskService taskService = new TaskService(); + private static TaskService taskService = Duang.duang(TaskService.class,Tx.class); @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { - List<Task> tasks = taskService.findStopTask(); - for (Task task: tasks) { - task.set(Task.STATUS,Task.STATUS_COMPLETED); - task.update(); - } + taskService.taskJob(); } } diff --git a/src/main/java/com/tianpengtech/front/web/passport/PassportService.java b/src/main/java/com/tianpengtech/front/web/passport/PassportService.java index 65a1d2f..85968f7 100644 --- a/src/main/java/com/tianpengtech/front/web/passport/PassportService.java +++ b/src/main/java/com/tianpengtech/front/web/passport/PassportService.java @@ -37,6 +37,20 @@ public class PassportService { } + /** + * 验证用户ID是否存在 + */ + public boolean isUserIdExists(String id,Integer user_type){ + String sql =String.format("select * from %s where %s = ? and %s = ? and %s=?",new User().tableName(),User.ID,User.DELETETAG,User.USER_TYPE); + User user=userDao.findFirst(sql,id,User.DELETE_STATUS_NO,user_type); + if (null == user){ + return false; + }else{ + return true; + } + } + + /** * 账户注册,hashedPass = sha256(32字符salt + pass) */ diff --git a/src/main/java/com/tianpengtech/front/web/task/TaskService.java b/src/main/java/com/tianpengtech/front/web/task/TaskService.java index 4572d68..dcfda6c 100644 --- a/src/main/java/com/tianpengtech/front/web/task/TaskService.java +++ b/src/main/java/com/tianpengtech/front/web/task/TaskService.java @@ -7,6 +7,7 @@ import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Page; import com.jfinal.plugin.activerecord.Record; import com.jfinal.plugin.ehcache.CacheKit; +import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ; import com.tianpengtech.admin.dictionary.DictionaryDao; import com.tianpengtech.common.exception.ValidateException; import com.tianpengtech.common.im.kit.PushKit; @@ -15,6 +16,7 @@ import com.tianpengtech.common.ip.IpUtil; import com.tianpengtech.common.model.authenticate.Authenticate; import com.tianpengtech.common.model.dictionary.Dictionary; import com.tianpengtech.common.model.fair.Fair; +import com.tianpengtech.common.model.moneylog.MoneyLog; import com.tianpengtech.common.model.task.*; import com.tianpengtech.common.model.user.User; import com.tianpengtech.common.search.EqualCondition; @@ -368,7 +370,7 @@ public class TaskService { * @return */ public List<Task> findStopTask(){ - String sql = "select "+Task.ID+" from "+taskDao.tableName() + " where to_days("+Task.TASK_END_TIME+")<=to_days(now())-1 and "+Task.STATUS +"!="+Task.STATUS_COMPLETED; + String sql = "select "+Task.ID+","+Task.TASK_PRICE+","+Task.TASK_TITLE+" from "+taskDao.tableName() + " where to_days("+Task.TASK_END_TIME+")<=to_days(now())-1 and "+Task.STATUS +"!="+Task.STATUS_COMPLETED; return taskDao.find(sql); } @@ -418,4 +420,35 @@ public class TaskService { ts.update(); }); } + + + /** + * 定时任务,定时关闭任务 + */ + public void taskJob(){ + List<Task> tasks = findStopTask(); + for (Task task: tasks) { + task.set(Task.STATUS,Task.STATUS_COMPLETED); + final Float price=task.getFloat(Task.TASK_PRICE); + List<Fair> fairs=fairService.findByTaskJob(task.getLong(Task.ID)+""); + for (Fair f:fairs) { + Double d = f.get(Fair.MONEY); + if (d==null){ + d=0D; + } + double sum=d.doubleValue()+price.doubleValue(); + f.set(Fair.MONEY,sum); + f.update(); + MoneyLog ml = new MoneyLog(); + ml.set(MoneyLog.WH_ID,f.get(Fair.ID)); + ml.set(MoneyLog.OPERID,task.getLong(Task.ID)); + ml.set(MoneyLog.STATE, MoneyLog.STATE_ADD); + ml.set(MoneyLog.TYPE,MoneyLog.TYPE_RENWU); + ml.set(MoneyLog.MONEY,price.doubleValue()); + ml.set(MoneyLog.DESCRIPTION,"任务完成:"+task.getStr(Task.TASK_TITLE)); + ml.save(); + } + task.update(); + } + } } diff --git a/src/main/resources/sms.properties b/src/main/resources/sms.properties index 593b0a2..3ba27d5 100644 --- a/src/main/resources/sms.properties +++ b/src/main/resources/sms.properties @@ -1,5 +1,9 @@ -url = http://183.129.129.134:8081/api/template/sms/send -userid = 10003 -apikey = d73376b0b813442a91c0337556e8d8b1 -templateid = 16 -isSend = false \ No newline at end of file +#url = http://183.129.129.134:8081/api/template/sms/send +#userid = 10003 +#apikey = d73376b0b813442a91c0337556e8d8b1 +#templateid = 16 +isSend = false +accessKeyId = LTAIYOrnhcUCJnPJ +accessKeySecret = GcOxh9LGvb44StevmhPKV7I6elKV0d +signName = \u516c\u56fd\u680b +templateCode = SMS_82105038 \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/lib/aliyun-java-sdk-dysmsapi-1.0.0-SANPSHOT.jar b/src/main/webapp/WEB-INF/lib/aliyun-java-sdk-dysmsapi-1.0.0-SANPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..de67807096cb8526e74b155889e20c9e8773c588 GIT binary patch literal 17951 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 DHylw< literal 0 HcmV?d00001 -- Gitee From 193d8cf24add0898fb009c78dba3cb641ee530a1 Mon Sep 17 00:00:00 2001 From: "994856170@qq.com" <ggd1994> Date: Sat, 5 Aug 2017 19:56:31 +0800 Subject: [PATCH 11/13] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8F=91=E7=9F=AD?= =?UTF-8?q?=E4=BF=A1=20jar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pom.xml b/pom.xml index 4c946f3..243d70a 100644 --- a/pom.xml +++ b/pom.xml @@ -253,6 +253,14 @@ <artifactId>aliyun-java-sdk-core</artifactId> <version>3.2.6</version> </dependency> + <dependency> + <groupId>com.aliyun</groupId> + <artifactId>aliyun-java-sdk-dysmsapi</artifactId> + <version>1.0.0-SANPSHOT</version> + <scope>system</scope> + <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/aliyun-java-sdk-dysmsapi-1.0.0-SANPSHOT.jar</systemPath> + </dependency> + </dependencies> <build> <finalName>fair</finalName> -- Gitee From 654d94dd58fae1f5b10b522156c444cd4fd27672 Mon Sep 17 00:00:00 2001 From: "994856170@qq.com" <ggd1994> Date: Sun, 6 Aug 2017 16:10:43 +0800 Subject: [PATCH 12/13] =?UTF-8?q?=E9=82=80=E8=AF=B7=E6=B3=A8=E5=86=8CAPI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tianpengtech/common/model/user/User.java | 2 + .../mobile/login/MobileLoginController.java | 59 +++++++++- .../mobile/login/MobileLoginService.java | 106 +++++++++++++++++- .../front/web/login/LoginService.java | 13 +++ .../assets/front/web/script/register.js | 4 +- 5 files changed, 178 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/tianpengtech/common/model/user/User.java b/src/main/java/com/tianpengtech/common/model/user/User.java index b1cd3e1..910882e 100644 --- a/src/main/java/com/tianpengtech/common/model/user/User.java +++ b/src/main/java/com/tianpengtech/common/model/user/User.java @@ -27,6 +27,8 @@ public class User extends AbstractBaseModel< User > { public static final String PHOTO ="photo"; //用户头像 public static final String CREATE_TIME ="create_time"; //创建时间 public static final String USER_TYPE ="user_type"; //用户类型 + public static final String CODE ="code"; //邀请码 + public static final String REF_ID ="ref_id"; //邀请人 public static final int DELETE_STATUS_YES=1; public static final int DELETE_STATUS_NO=0; diff --git a/src/main/java/com/tianpengtech/front/mobile/login/MobileLoginController.java b/src/main/java/com/tianpengtech/front/mobile/login/MobileLoginController.java index f7ca2c4..4ac62cd 100644 --- a/src/main/java/com/tianpengtech/front/mobile/login/MobileLoginController.java +++ b/src/main/java/com/tianpengtech/front/mobile/login/MobileLoginController.java @@ -1,9 +1,12 @@ package com.tianpengtech.front.mobile.login; +import com.jfinal.aop.Before; import com.jfinal.aop.Clear; import com.jfinal.kit.Ret; import com.jfinal.kit.StrKit; +import com.jfinal.plugin.activerecord.tx.Tx; import com.tianpengtech.common.util.IpKit; +import com.tianpengtech.front.mobile.common.intercepter.MobileRequestInterceptor; import com.tianpengtech.front.mobile.common.intercepter.TokenCheckInterceptor; import com.tianpengtech.front.mobile.common.util.R; import com.tianpengtech.front.mobile.common.util.U; @@ -22,6 +25,7 @@ public class MobileLoginController extends BaseController { * 登录 */ @Clear(TokenCheckInterceptor.class) + @Before(Tx.class) public void login(){ String mobile=getPara("mobile"); String code= getPara("authCode"); @@ -34,7 +38,14 @@ public class MobileLoginController extends BaseController { return; } String loginIp = IpKit.getRealIp(getRequest()); - R r = service.login(mobile,Integer.parseInt(code),loginIp,getHeader("source")); + R r = null; + try { + r = service.login(mobile,Integer.parseInt(code),loginIp,getHeader("source")); + } catch (Exception e) { + e.printStackTrace(); + renderJson(R.fail("注册失败")); + return; + } renderJson(r); } @@ -71,4 +82,50 @@ public class MobileLoginController extends BaseController { R r=service.logout(token); renderJson(r); } + + + /** + * 邀请注册链接 跳转页面 + */ + @Clear({TokenCheckInterceptor.class,MobileRequestInterceptor.class}) + public void invite(){ + String code=getPara("code"); + setAttr("code",code); + render("/WEB-INF/view/web/index/invite.html"); + } + + /** + * 邀请注册 同所有api接口 + */ + @Clear({TokenCheckInterceptor.class}) + public void inviteReg(){ + String code=getPara("code"); + String mobile=getPara("mobile"); + String authCode=getPara("authCode"); + if (StrKit.isBlank(code)){ + renderJson(R.fail("邀请码不能为空")); + return; + } + if (StrKit.isBlank(mobile)){ + renderJson(R.fail("手机号码不能为空")); + return; + } + if (StrKit.isBlank(authCode)){ + renderJson(R.fail("验证码不能为空")); + return; + } + if (!U.isInteger(authCode)){ + renderJson(R.fail("验证码格式不正确")); + return; + } + String regIp = IpKit.getRealIp(getRequest()); + try { + R r=service.inviteReg(code,mobile,Integer.parseInt(authCode),regIp); + renderJson(r); + } catch (Exception e) { + e.printStackTrace(); + renderJson(R.fail("注册失败")); + return; + } + } } diff --git a/src/main/java/com/tianpengtech/front/mobile/login/MobileLoginService.java b/src/main/java/com/tianpengtech/front/mobile/login/MobileLoginService.java index e76dd71..069eec1 100644 --- a/src/main/java/com/tianpengtech/front/mobile/login/MobileLoginService.java +++ b/src/main/java/com/tianpengtech/front/mobile/login/MobileLoginService.java @@ -2,7 +2,11 @@ package com.tianpengtech.front.mobile.login; import com.jfinal.kit.Ret; +import com.tianpengtech.admin.dictionary.DictionaryDao; +import com.tianpengtech.common.model.dictionary.Dictionary; import com.tianpengtech.common.model.fair.Fair; +import com.tianpengtech.common.model.moneylog.MoneyLog; +import com.tianpengtech.common.model.task.Task; import com.tianpengtech.common.model.user.User; import com.tianpengtech.front.mobile.common.constant.Constant; import com.tianpengtech.front.mobile.common.util.R; @@ -11,6 +15,8 @@ import com.tianpengtech.front.mobile.common.util.UserUtil; import com.tianpengtech.front.web.login.LoginService; import com.tianpengtech.front.web.passport.PassportService; +import java.util.UUID; + /** * Created by ggd on 2017/7/17 0017. @@ -21,6 +27,7 @@ public class MobileLoginService { private final LoginService loginService = LoginService.me; private final PassportService passportService = PassportService.me; private final User userDao = new User().dao(); + private DictionaryDao dictionaryDao = new DictionaryDao(); //用户密码错误次数 缓存key public static final String ERRORCOUNT_KEY = "error_count_"; @@ -34,9 +41,14 @@ public class MobileLoginService { /** * 登录 */ - public R login(String mobile, int code, String loginIp,String source) { + public R login(String mobile, int code, String loginIp,String source) throws Exception { try{ - if(!passportService.authCode(mobile,loginIp,code,true)){ + try { + if(!passportService.authCode(mobile,loginIp,code,true)){ + return R.fail("验证码不正确"); + } + }catch (Exception e){ + e.printStackTrace(); return R.fail("验证码不正确"); } User user = loginService.findByMobile(mobile,User.USER_TYPE_FAIR); @@ -48,6 +60,8 @@ public class MobileLoginService { fair.set(Fair.ID,id); fair.save(); user=loginService.findByMobile(mobile,User.USER_TYPE_FAIR); + user.set(User.CODE,getCode()); + user.update(); }else{ return R.fail("注册失败"); } @@ -65,8 +79,7 @@ public class MobileLoginService { r.p("token",token); return r; }catch (Exception e){ - e.printStackTrace(); - return R.fail("登陆失败"); + throw e; } } @@ -81,4 +94,89 @@ public class MobileLoginService { return R.ok("退出成功"); } + + /** + * 邀请注册 + * @return + */ + public R inviteReg(String code,String mobile,int authCode,String regIp) throws Exception{ + try{ + try { + if(!passportService.authCode(mobile,regIp,authCode,true)){ + return R.fail("验证码不正确"); + } + }catch (Exception e){ + e.printStackTrace(); + return R.fail("验证码不正确"); + } + User user = loginService.findByMobile(mobile,User.USER_TYPE_FAIR); + if (user == null) { + Ret r=passportService.reg(mobile, Constant.DEFAULT_PASSWORD,User.USER_TYPE_FAIR); + if (r.isOk()){ + long id= (long) r.get("id"); + Fair fair = new Fair(); + fair.set(Fair.ID,id); + fair.save(); + user=loginService.findByMobile(mobile,User.USER_TYPE_FAIR); + User ref=loginService.findByCode(code,User.USER_TYPE_FAIR); + if (ref==null){ + return R.fail("邀请码不存在"); + } + user.set(User.REF_ID,ref.get(User.ID)); + user.set(User.CODE,getCode()); + user.update(); + Dictionary dict = dictionaryDao.readDirecotryByCode(300100); + String val=null; + if (dict==null){ + val="5"; + }else{ + val = dict.get(Dictionary.NAME,5); + } + MoneyLog ml = new MoneyLog(); + ml.set(MoneyLog.WH_ID,ref.get(User.ID)); + ml.set(MoneyLog.OPERID,user.get(User.ID)); + ml.set(MoneyLog.STATE, MoneyLog.STATE_ADD); + ml.set(MoneyLog.TYPE,MoneyLog.TYPE_RENWU); + ml.set(MoneyLog.MONEY,val); + ml.set(MoneyLog.DESCRIPTION,"邀请好友获得奖励"); + ml.save(); + }else{ + return R.fail("注册失败"); + } + }else{ + return R.fail("账号已存在"); + } + return R.ok(); + }catch (Exception e){ + throw e; + } + } + + + /** + * 生成邀请码 + * @return + */ + private String getCode(){ + return generateShortUuid(); + } + + private String[] chars = new String[] { "a", "b", "c", "d", "e", "f", + "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", + "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", + "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", + "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", + "W", "X", "Y", "Z" }; + + + private String generateShortUuid() { + StringBuffer shortBuffer = new StringBuffer(); + String uuid = UUID.randomUUID().toString().replace("-", ""); + for (int i = 0; i < 8; i++) { + String str = uuid.substring(i * 4, i * 4 + 4); + int x = Integer.parseInt(str, 16); + shortBuffer.append(chars[x % 0x3E]); + } + return shortBuffer.toString(); + } } diff --git a/src/main/java/com/tianpengtech/front/web/login/LoginService.java b/src/main/java/com/tianpengtech/front/web/login/LoginService.java index a05237c..e405e9f 100644 --- a/src/main/java/com/tianpengtech/front/web/login/LoginService.java +++ b/src/main/java/com/tianpengtech/front/web/login/LoginService.java @@ -208,4 +208,17 @@ public class LoginService { } } + /** + * 根据邀请码查询 用户信息 + */ + public User findByCode(String code,Integer user_type){ + String sql =String.format("select * from %s where %s = ? and %s = ? and %s=?",new User().tableName(),User.CODE,User.DELETETAG,User.USER_TYPE); + User user=userDao.findFirst(sql,code,User.DELETE_STATUS_NO,user_type); + if (null == user){ + return null; + }else{ + return user; + } + } + } diff --git a/src/main/webapp/assets/front/web/script/register.js b/src/main/webapp/assets/front/web/script/register.js index 1de4216..9e885ad 100644 --- a/src/main/webapp/assets/front/web/script/register.js +++ b/src/main/webapp/assets/front/web/script/register.js @@ -70,7 +70,9 @@ var sendSms=function(){ dataType:"json", success:function(data){ if (data.isOk){ - $("input[name='authCode']").val(data.code); + if (data.code){ + $("input[name='authCode']").val(data.code); + } }else{ layer.msg(data.msg); } -- Gitee From 4883c2a4a9cabfafd0991fd90e016af660d2d8e7 Mon Sep 17 00:00:00 2001 From: "994856170@qq.com" <ggd1994> Date: Sun, 6 Aug 2017 16:16:07 +0800 Subject: [PATCH 13/13] =?UTF-8?q?=E5=90=AF=E7=94=A8=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E6=8B=A6=E6=88=AA=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/tianpengtech/front/mobile/MobileRoutes.java | 2 +- .../common/intercepter/MobileRequestInterceptor.java | 11 +++-------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/tianpengtech/front/mobile/MobileRoutes.java b/src/main/java/com/tianpengtech/front/mobile/MobileRoutes.java index 062a35c..9923a1f 100644 --- a/src/main/java/com/tianpengtech/front/mobile/MobileRoutes.java +++ b/src/main/java/com/tianpengtech/front/mobile/MobileRoutes.java @@ -21,7 +21,7 @@ public class MobileRoutes extends Routes { @Override public void config() { -// addInterceptor(new MobileRequestInterceptor()); //验证请求数据有效性 + addInterceptor(new MobileRequestInterceptor()); //验证请求数据有效性 addInterceptor(new TokenCheckInterceptor()); //验证登录用户token是否有效 add("/api",MobileLoginController.class); diff --git a/src/main/java/com/tianpengtech/front/mobile/common/intercepter/MobileRequestInterceptor.java b/src/main/java/com/tianpengtech/front/mobile/common/intercepter/MobileRequestInterceptor.java index a2b8af9..1074723 100644 --- a/src/main/java/com/tianpengtech/front/mobile/common/intercepter/MobileRequestInterceptor.java +++ b/src/main/java/com/tianpengtech/front/mobile/common/intercepter/MobileRequestInterceptor.java @@ -9,6 +9,7 @@ import com.jfinal.kit.StrKit; import com.tianpengtech.common.model.user.User; import com.tianpengtech.common.util.IpKit; import com.tianpengtech.front.mobile.common.constant.ConstantApi; +import com.tianpengtech.front.mobile.common.util.R; import com.tianpengtech.front.mobile.common.util.ToolMD5; import com.tianpengtech.front.web.login.LoginService; @@ -39,16 +40,10 @@ public class MobileRequestInterceptor implements Interceptor { if (sct.equals(encode)){ inv.invoke(); }else{ - Map<String,String> result = new HashMap<>(); - result.put("code", ConstantApi.RESULT_ERROR); - result.put("message","数据无效"); - c.renderText(JSON.toJSONString(result)); + c.renderJson(R.fail("数据无效")); } }else{ - Map<String,String> result = new HashMap<>(); - result.put("code", ConstantApi.RESULT_ERROR); - result.put("message","数据无效"); - c.renderText(JSON.toJSONString(result)); + c.renderJson(R.fail("数据无效")); } } } -- Gitee