这个报到功能的方法应该在哪里加锁

这个签到功能的方法应该在哪里加锁?
最近看了关于很多关于Mysql的锁的文章,恰好看到网上这个签到功能,这个方法作用是签到并且返回结果,请问各位在哪里设定事务,加什么锁比较合适?这个报到功能的方法应该在哪里加锁

@Override
 74     public Sign signThenReturn(int uid, int gid) {
 75         Sign sign = new Sign();
 76         ResultSet rs = null;
 77         PreparedStatement preparedStatement = null, executePreparedStatement = null;
 78         try {
 79             conn = getQueryRunner().getDataSource().getConnection();
 80             preparedStatement = conn.prepareStatement(" select * from db_userplatform.dt_sign where userid=? and gameid=? ;");
 81             preparedStatement.setInt(1, uid);
 82             preparedStatement.setInt(2, gid);
 83 
 84             rs = preparedStatement.executeQuery();
 85             if (rs.next()) {//查到了更新
 86                 SignObject signObject = new SignObject();
 87                 signObject.setId(rs.getInt("id"));
 88                 signObject.setUid(rs.getInt("userid"));
 89                 signObject.setGid(rs.getInt("gameid"));
 90                 signObject.setSignCount(rs.getInt("signCount"));
 91                 signObject.setIntegration(rs.getInt("integration"));
 92                 signObject.setLastModifyTime(new Date(rs.getDate("lastModifyTime").getTime()));
 93                 signObject.setSignHistory(rs.getLong("signHistory"));
 94                 signObject.setExt(rs.getString("ext"));
 95 
 96 
 97                 Timestamp lastModifyTimeStamp = new Timestamp(signObject.getLastModifyTime().getTime());
 98                 Timestamp todayStartTimeStamp = CommonDateUtils.getTodayStartTimeStamp();
 99                 if (todayStartTimeStamp.after(lastModifyTimeStamp)) {//今天没有签过到
100                  final  long missDays= (System.currentTimeMillis()-signObject.getLastModifyTime().getTime())/(24*60*60*1000);
101                     int newSignCount=signObject.getSignCount();
102                     String newExt="签到";
103                    if(missDays==1)
104                    {  //连续签到,加分,连续签到次数增加1 ,签到历史移动一位
105                      newSignCount+=1;
106                    }else
107                    {//不连续签到,加分,连续签到次数为1,签到历史移动missDays位
108                     newSignCount=1;
109                    }
110                     if(newSignCount>=91)
111                     { //签到超过90天,连续签到次数重置为1
112                         newSignCount=1;
113                         newExt="连续签到天数重置为1,时间:"+CommonDateUtils.getDate(System.currentTimeMillis());